第二章 软件开发模型.ppt

上传人:Iclinic170 文档编号:377206 上传时间:2018-10-08 格式:PPT 页数:56 大小:462KB
下载 相关 举报
第二章 软件开发模型.ppt_第1页
第1页 / 共56页
第二章 软件开发模型.ppt_第2页
第2页 / 共56页
第二章 软件开发模型.ppt_第3页
第3页 / 共56页
第二章 软件开发模型.ppt_第4页
第4页 / 共56页
第二章 软件开发模型.ppt_第5页
第5页 / 共56页
亲,该文档总共56页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、1,第二章 软件开发模型,本章从叙述软件生存周期开始,介绍了传统的软件开发模型(瀑布模型、快速原型模型)、软件演化模型(增量模型、螺旋模型)、面向对象过程模型(构件集成模型)、基于形式化方法的软件开发模型(转换模型、净室模型)等。 重点掌握:各种软件开发模型的内容,不同开发模型的特点比较。,2,传统开发模型 瀑布模型(waterfall model) 快速原型模型(rapid prototype model) 演化开发模型 增量模型(incremental model) 螺旋模型(spiral model) 面向对象开发模型 构件集成模型(component integration model

2、) 形式化开发模型 转换模型(transformational model) 净室模型(cleanroommodel),3,2.1 软件生存周期,定义 一个软件从开始计划起,到废弃不用止,称为软件的生存周期。 包括计划、开发与运行三个时期。 计划时期:问题定义、可行性研究 开发时期:需求分析、系统设计、编码和测试 运行时期:系统维护阶段 划分阶段的意义:简化每一步的工作内容,使因软件规 模增大而大大增加的软件复杂性变得 易于控制和管理。,3,5,在实际从事软件开发工作时,软件规模、种类、开发环境及开发时使用的技术方法等因素,影响阶段的划分。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的

3、执行顺序,因此,也称为过程模型。我国国家标准计算机软件开发规范(GB8566-88)把软件生命周期的划分成8个阶段:可行性研究与计划、需求分析、概要设计、详细设计、实现、组装测试、确认测试、使用和维护。,6,计划时期,开发时期,运行时期,典型的软件生存周期,7,1、计划时期 任务 调查用户需求,分析新系统的主要目 标,分析开发该系统的可行性。 问题定义 明确“用户需要计算机解决什么问题” 提出关于“系统目标与范围的说明”请用户确认。 可行性研究 明确“上一阶段确定的问题是否有行得通的解决办法” 提出一套或多套在技术上可行、在经济上有较高效益的可操作解决方案。,8,2、开发时期 设计 需求分析

4、软件设计 实现 编码 测试 开发时期划分阶段的目的 程序员在开发初期集中全力搞好软件的逻辑结构,避免过早为实现的细节分散精力。,9,需求分析 概括地回答“怎样实现目标系统?” 弄清楚用户对软件系统的全部需求; 用“需求规格说明书”准确表达出来; 系统分析员必须和用户密切配合,充分交流信息,以得出经过用户确认的系统需求。,10,软件设计将需求转变为软件的表示形式 总体设计(概要设计) 建立软件系统的总体结构,形成系统的功能结构图; 定义功能模块的接口,包括模块功能、关系及接口界面定义 设计全局数据库或数据结构 规定设计约束,定义软件系统的边界并给出约束说明 编制概要设计文档 详细设计 模块详细设

5、计,包括模块详细功能、算法、数据结构和接口信息的设计,拟定模块测试方案; 编制模块的详细规格说明,11,编码 选择一种程序设计语言; 写出正确的容易理解、容易维护的源程序模块; 产生可执行的目标程序。,12,测试-保证软件质量的重要手段 任务 保证输出与要求的一致; 发现错误。 单元测试 验证模块功能及接口与文档的一致性 综合测试(组装测试) 将经过单元测试的模块逐步进行组装和测试 生成可运行的系统源程序并编写组装测试报告 确认测试 软件系统测试 编制确认测试文档 软件评审,通过后交付用户使用,13,3、运行时期 使用 将软件安装在用户确定的运行环境中使用 维护 通过各种必要的维护活动使系统持

6、久地满足用户的需要。 对所有的维护写出维护报告。 通常有四类维护活动 改正性维护 适应性维护 完善性维护 预防性维护 退役:软件一旦完成其使命,就要终止对软件产品的 支持,软件停止使用。,14,2.2 传统软件开发模型,软件开发模型 为整个软件生存期建立的模型。 内容 定义-What 开发-How 维护-Change 传统软件开发模型 瀑布模型 快速原型模型,15,2.2.1 瀑布模型,又称线性顺序模型或生存周期模型 W.Royce于1970年首次提出 各个阶段的工作顺序展开 重要的指导思想 把逻辑设计与物理设计划分开,尽可能推迟程序的物理实现,用户要求,编码,需求分析,模块说明,详细设计,需

7、求规格说明,软件结构图,总体设计,单元测试,程序清单,确认测试,综合测试,系统测试,瀑布模型的阶段与文档,17,瀑布模型的特点阶段间的顺序性和依赖性 相邻两个阶段有因果关系,要求严格顺序执行 上一阶段的变换结果是下一阶段变换的输入 每个阶段都要进行阶段性评审,确认后转下一阶段 推迟实现的观点 尽可能推迟软件的编码时间 质量保证的观点(文档驱动性) 每个阶段都要完成规定的文档; 每个阶段都要对已完成的文档进行复审,尽早发现问题,消除隐患。,18,同一变动付出的代价随时间变化的趋势,19,带“反馈环”的瀑布模型,修改设计的反馈,维护追溯的反馈,20,瀑布模型的优点 可强迫开发人员采用规范的方法 严

8、格地规定了每个阶段必须提交的文档 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证 瀑布模型的缺点 周期长:顺序推进,环环审查 需求难以准确把握(不能准确提出和沟通、不能快速适应变化的需求),导致返工甚至推倒重来 无法预测新引入模块的影响 最终的形式难以预料 不适合需求模糊的系统,21,2.2.2 快速原型模型,快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌。通常,用户试用原型系统之后会提出许多修改意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用。一旦用户认为这个原型系统确实能做他们所需要的工作,

9、开发人员便可据此书写规格说明文档,根据这份文档开发出的软件可以满足用户的真实需求。,22,快速原型模型,23,快速原型的本质是“快速”。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。适用于需求确定性不高的系统开发。,24,怎样保证“快”? 原型模型仅包括未来系统的主要功能,以及系统的重要接口。 开发原型系统时尽量使用能缩短开发周期的语言和工具。,25,特点 原型驱动型 过程的交互性与迭代性 优点 用户在开发过程中可以完善对软件系统的需求; 开发周期相对缩短,成本较低; 有效发挥用户与开发人员之间的密切配

10、合作用; 充分体现逐步发展、逐步完善的原则。 缺点 频繁的需求变化会使开发过程难于管理和控制; 原型的快速开发和修改对技术要求比较高,需要较好的工作基础。,26,2.3 软件演化模型,思想方法 使所开发的软件在迭代中逐步达到完善 种类 增量模型 螺旋模型 适用于大型软件的开发,27,2.3.1 增量模型,基本思想 把软件产品作为一系列的增量构件来设计、实现、集成和测试。开发时分批逐步向用户提交产品,每次提交一个满足用户需求子集的增量构件,直到最后一次得到满足用户全部需求的完整产品为止。将软件分解成增量构件时的约束条件 当把新构件集成到现有软件中时,所形成的产品必须是可测试的。,28,使用增量模

11、型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能。,29,30,风险更大的增量模型显示出一旦确定了用户需求后,就着手拟定第一个构件的规格说明文档,完成规格说明文档后将转向第二个构件的规格说明,与此同时设计组开始设计第一个构件。,31,优点 能在较短的时间内向用户提交部分功能的构件; 逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,减少一个全新软件可能给用户带来的冲击; 适用于软件需求不明确、设计方案有一定风险的软件项目。 缺点 增量构件的划分依赖于系统功能的构成和软件开发人员的经验; 要求软件系统的体系结构具有高度的可扩充性和开放性。,32,增量模型与瀑布模型的本质区别,

12、瀑布模型 整体开发模型 规定在开始下一个阶段的工作之前,必须完成前一阶段的所有细节 不适合需求模糊的系统开发 增量模型 非整体开发模型 推迟某些阶段或所有阶段中的细节,从而较早地产生工作软件。 适用于软件需求不明确、设计方案有一定风险的系统项目,33,2.3.2 螺旋模型,基本思想使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。螺旋模型的每一个周期都包括需求分析、风险分析、工程实现和评审4个步骤。每迭代一次,过程完成一个周期,软件开发前进一个层次,系统生成一个新的版本。,34,每个螺旋周期的工作步骤及各步骤的任务 需求分

13、析 确定目标、方案和限制条件 风险分析 评估方案、标识风险和解决风险 工程实现 开发确认产品 评审 评价该阶段的工作并计划下一个阶段的工作,35,完整的螺旋模型,螺旋模型主要适用于内部开发的大规模软件项目。当风险过大时,可方便的终止项目。,36,可把它看作在每个阶段之前都增加了风险分析过程的快速原型模型,37,特点 瀑布模型+快速原型模型+风险分析 迭代过程 优点 强调可选方案和约束条件有利于已有软件的重用; 有助于把软件质量作为软件开发的一个重要目标; 减少过多测试或测试不足带来的风险; 维护只是模型的另一个周期,在维护和开发之间并没有本质区别。 缺点 需耗费大量资金和时间用于风险评估; 要

14、求开发人员具有丰富风险评估经验和有关知识; 开发过程比较复杂; 给过程管理和控制带来了一定的难度。,38,2.4 面向对象开发模型,面向对象的基本概念 构件集成模型 喷泉模型,39,2.4.1 面向对象的基本概念,对象(Object) 类(Class) 继承(Inheritance) 消息(Message) 面向对象 = 对象+类+继承+消息,40,对象Object客观世界中的实体 属性(静态性质 Attributes)对象所有可能状态 操作(动态行为 Methods)可展现的外部服务 对象:= Identifier:对象的标识或名字 Method Set:对象中的操作集合 Data Stru

15、cture:对象的数据结构 Message Interface:对象受理的消息名集合(即对外接口),41,对象的特点 以数据为中心 对象是主动的 实现数据封装 本质上有并行性 模块独立性好,42,类Class和实例Instance类 相同属性和行为的对象的抽象 实例 特定类所描述的一个具体对象 对象是类的实例,43,继承Inheritance 子类直接继承父类的数据和操作继承的传递性,单继承、多重继承 类之间可以存在继承关系,44,消息Message对象之间在交互中所传送的通信信息 形式: Message:dest,op,para Destination Object:接受消息的对象 Oper

16、ation:消息选择符 Parameters:零个或多个变元 Dest.op(para) 例:Mycircle.Show(Green),45,迭代是软件开发过程中普遍存在的一种内在属性。经验表明,软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。喷泉模型是典型的面向对象生命周期模型。,2.4.2 喷泉模型,47,由于面向对象方法在概念和表示方法上的一致性,保证了各项开发活动之间的无缝过渡,在分析、设计和编码各阶段并不存在明显的边界(有相互重叠),“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。为避免使用喷泉模型开发软件时开发过程过分

17、无序,应该把一个线性过程作为总目标。但是,同时也应该记住,面向对象范型本身要求经常对开发活动进行迭代或求精。,48,2.4.3 构件集成模型,基于构件的软件开发,49,特点 面向对象 基于构件库 融合螺旋模型特征 支持软件开发的迭代方法 软件重用,50,2.5 形式化方法模型,转换模型 净室模型,51,2.5.1 转换模型,定义 结合形式化软件开发方法和程序自动生成技术的一种软件开发模型。 实现过程 采用严格的、数学的表示体系表示软件规格说明; 进行一系列自动或半自动的程序变换; 转换为计算机系统能够接受的目标程序系统。,52,形式化 规格说明,与需求比较后修正,变换2,变换1,变换n,测试,形式化开发记录,系统需求,目标系统,转换模型原理,可开发一软件原型,53,特点 形式化软件开发方法 形式化需求规格说明 变换技术 程序自动生成技术 确保正确,54,2.5.2 净室模型,形式化 盒结构表示分析和设计 正确性验证 增量模型 净室思想 在分析和设计阶段消除错误 在“洁净”状态下实现软件制作,55,56,本章小结,软件开发模型是不断发展的 各种软件开发模型各有优缺点 选用时不必拘泥于某种模型 可组合多种模型 也可根据实际创建新的模型,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学课件 > 大学教育

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1