软件工程 第4版 教学课件 ppt 作者 张海藩 吕云翔 编著 02第二章:软件过程

上传人:E**** 文档编号:89494160 上传时间:2019-05-25 格式:PPT 页数:132 大小:1.53MB
返回 下载 相关 举报
软件工程 第4版  教学课件 ppt 作者  张海藩 吕云翔 编著 02第二章:软件过程_第1页
第1页 / 共132页
软件工程 第4版  教学课件 ppt 作者  张海藩 吕云翔 编著 02第二章:软件过程_第2页
第2页 / 共132页
软件工程 第4版  教学课件 ppt 作者  张海藩 吕云翔 编著 02第二章:软件过程_第3页
第3页 / 共132页
软件工程 第4版  教学课件 ppt 作者  张海藩 吕云翔 编著 02第二章:软件过程_第4页
第4页 / 共132页
软件工程 第4版  教学课件 ppt 作者  张海藩 吕云翔 编著 02第二章:软件过程_第5页
第5页 / 共132页
点击查看更多>>
资源描述

《软件工程 第4版 教学课件 ppt 作者 张海藩 吕云翔 编著 02第二章:软件过程》由会员分享,可在线阅读,更多相关《软件工程 第4版 教学课件 ppt 作者 张海藩 吕云翔 编著 02第二章:软件过程(132页珍藏版)》请在金锄头文库上搜索。

1、软件工程过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。 本章讲述在软件生命周期全过程中应该完成的基本任务,并介绍各种常用的过程模型。,第二章:软件过程,2.1 软件生命周期的基本任务 2.2 瀑布模型 2.3 快速原型模型 2.4 增量模型 2.5 螺旋模型 2.6 喷泉模型 2.7 Rational统一过程 2.8 敏捷过程与极限编程 2.9 能力成熟度模型,第二章:软件过程,1.软件定义:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制订工程进度表。这个时

2、期的工作通常又称为系统分析,由系统分析员负责完成。软件定义时期通常进一步划分为3个阶段,即问题定义、可行性研究和需求分析。,软件生命周期:,2.软件开发:具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:概要设计、详细设计、编码和单元测试、综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。,3.运行维护:当软件在使用过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要。通常对维护时期不再进一步划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程。,通过调研,系统分析员应该提出关于

3、问题性质、工程目标和工程规模的书面报告,并且需要得到客户对这份报告的确认。,2.1.1问题定义,确定上一个阶段的问题是否有行得通的解决办法 用最小的代价在尽可能短的时间内确定问题是否能够解决。,2.1.2 可行性研究,解决“目标系统必须做什么”这个问题可行性研究的基本目的是用较小的成本在较短的时间内确定是否存在可行的解法,因此许多细节被忽略了。然而在最终的系统中却不能遗漏任何一个微小的细节 是用正式文档准确地记录对目标系统的需求,该文档通常称为规格说明(specification)。,2.1.3 需求分析,概括地回答“怎样实现目标系统?”概要设计又称为初步设计、逻辑设计、高层设计或总体设计。

4、设计几种可能的方案 推荐最佳方案 制定详细计划 模块化,2.1.4 概要设计,将抽象概括的方式具体化 设计出程序的详细规格说明 详细设计也称为模块设计、物理设计或低层设计。在这个阶段将详细地设计每个模块,确定实现模块功能所需要的算法和数据结构。,2.1.5 详细设计,这个阶段的关键任务是写出正确的,容易理解、容易维护的程序模块 程序员应该根据目标系统的性质和实际环境,选取一种适当的高级程序设计语言(必要时用汇编语言),把详细设计的结果翻译成用选定的语言书写的程序,并且仔细测试编写出的每一个模块。,2.1.6 编码和单元测试,这个阶段的关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的

5、要求。最基本的测试是集成测试和验收测试。必要时还可以再通过现场测试或平行运行等方法对目标系统进一步测试检验。,2.1.7 综合测试,集成测试是根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试。 验收测试则是按照规格说明书的规定(通常在需求分析阶段确定),由用户(或在用户积极参加下)对目标系统进行验收。,通过各种必要的维护活动使系统持久地满足用户的需要。 改正性维护:也就是诊断和改正在使用过程中发现的软件错误 适应性维护:即修改软件以适应环境的变化,2.1.8 软件维护,完善性维护:即根据用户的要求改进或扩充软件使它更完善 预防性维护:即修改

6、软件为将来的维护活动预先做准备。,实际上每一项维护活动都应该经过提出维护要求(或报告问题),分析维护要求,提出维护方案,审批维护方案,确定维护计划,修改软件设计,修改程序,测试程序,复查验收等一系列步骤,因此,实质上是经历了一次压缩和简化了的软件定义和开发的全过程。每一项维护活动都应该准确地记录下来,作为正式的文档资料加以保存。,2.1 软件生命周期的基本任务 2.2 瀑布模型 2.3 快速原型模型 2.4 增量模型 2.5 螺旋模型 2.6 喷泉模型 2.7 Rational统一过程 2.8 敏捷过程与极限编程 2.9 能力成熟度模型,在20世纪80年代之前,瀑布模型(waterfall m

7、odel)一直是唯一被广泛采用的生命周期模型,现在它仍然是软件工程中应用最广泛的过程模型。图2.1所示为传统的瀑布模型。,图2.1 传统的瀑布模型,1. 阶段间具有顺序性和依赖性 必须等前一阶段的工作完成之后,才能开始后一阶段的工作;前一阶段的输出文档就是后一阶段的输入文档。 2. 推迟实现的观点 实践表明,对于规模较大的软件项目来说,往往编码开始得越早最终完成开发工作所需要的时间反而越长。,传统的瀑布模型的特点。,3. 质量保证的观点 每个阶段都必须完成规定的文档,没有交出合格的文档就是没有完成该阶段的任务。每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。,传统的瀑布模

8、型过于理想化了。事实上,人在工作过程中不可能不犯错误。因此,实际的瀑布模型是带“反馈环”的,如图2.2所示(图中实线箭头表示开发过程,虚线箭头表示维护过程)。当在后面阶段发现前面阶段的错误时,需要沿图中左侧的反馈线返回前面的阶段,修正前面阶段的产品之后再回来继续完成后面阶段的任务。,图2.2 加入迭代过程的瀑布模型,可强迫开发人员采用规范的方法 严格地规定了每个阶段必须提交的文档 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证,瀑布模型的优点,瀑布模型是由文档驱动的”:在可运行的软件产品交付给用户之前,用户只能通过文档来了解产品是什么样的。,瀑布模型的缺点,2.1 软件生命周期的基

9、本任务 2.2 瀑布模型 2.3 快速原型模型 2.4 增量模型 2.5 螺旋模型 2.6 喷泉模型 2.7 Rational统一过程 2.8 敏捷过程与极限编程 2.9 能力成熟度模型,快速原型(rapid prototype)是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。如图2.3所示(图中实线箭头表示开发过程,虚线箭头表示维护过程),图2.3 快速模型原型,快速原型模型是不带反馈环的,软件产品的开发基本上是按线性顺序进行的。 原型系统已经通过与用户交互而得到验证,据此产生的规格说明文档正确地描述了用户需求。 开发人员通过建立原型系统已经学

10、到了许多东西,在设计和编码阶段发生错误的可能性也比较小。,快速原型的本质是“快速”。开发人员应该尽可能快地建造出原型系统,以加速软件开发过程,节约软件开发成本。原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。 当快速原型的某个部分是利用软件工具由计算机自动生成的时候,可以把这部分用到最终的软件产品中。,2.1 软件生命周期的基本任务 2.2 瀑布模型 2.3 快速原型模型 2.4 增量模型 2.5 螺旋模型 2.6 喷泉模型 2.7 Rational统一过程 2.8 敏捷过程与极限编程 2.9 能力成熟度模型,增量模型也称为渐增模型,如图2.4所示。使用增量模型开发软件时,把软件

11、产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。,图2.4 增量模型,增量模型分批地逐步向用户提交产品,每次提交一个满足用户需求子集的可运行的产品。整个软件产品被分解成许多个增量构件,开发人员一个构件接一个构件地向用户提交产品。每次用户都得到一个满足部分需求的可运行的产品,直到最后一次得到满足全部需求的完整产品。,难点:把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。此外,必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便。,从某种意义上说,增量模型本身是自相矛盾

12、的。它一方面要求开发人员把软件看做一个整体,另一方面又要求开发人员把软件看做构件序列,每个构件本质上都独立于另一个构件。除非开发人员有足够的技术能力协调好这一明显的矛盾,否则用增量模型开发出的产品可能并不令人满意。,2.1 软件生命周期的基本任务 2.2 瀑布模型 2.3 快速原型模型 2.4 增量模型 2.5 螺旋模型 2.6 喷泉模型 2.7 Rational统一过程 2.8 敏捷过程与极限编程 2.9 能力成熟度模型,使用原型及其他方法来尽量降低风险。理解这种模型的一个简便方法,是把它看做在每个阶段之前都增加了风险分析过程的快速原型模型,如图2.5所示。图中带箭头的点画线的长度代表当前累

13、计的开发费用,螺线旋过的角度值代表开发进度。,基本思想,图2.5 螺旋模型,对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标 减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险 维护只是模型的另一个周期,在维护和开发之间并没有本质区别。,优点,螺旋模型主要适用于内部开发的大规模软件项目。如果进行风险分析的费用接近整个项目的经费预算,则风险分析是不可行的。事实上,项目越大,风险也越大,因此,进行风险分析的必要性也越大。 螺旋模型的主要优势在于,它是风险驱动的,但是,这也可能是它的一个弱点,2.1 软件生命周期的基本任务 2.2 瀑布模型 2

14、.3 快速原型模型 2.4 增量模型 2.5 螺旋模型 2.6 喷泉模型 2.7 Rational统一过程 2.8 敏捷过程与极限编程 2.9 能力成熟度模型,迭代是软件开发过程中普遍存在的一种内在属性。经验表明,软件过程各个阶段之间的迭代或一个阶段内各个工作步骤之间的迭代,在面向对象范型中比在结构化范型中更常见。图2.6所示的喷泉模型是典型的面向对象生命周期模型。“喷泉”这个词体现了面向对象软件开发过程迭代和无缝的特性。,图2.6 喷泉模型,为避免使用喷泉模型开发软件时开发过程过分无序,应该把一个线性过程(例如,快速原型模型或螺旋模型中的中心垂线)作为总目标。但是,同时也应该记住,面向对象范

15、型本身要求经常对开发活动进行迭代或求精。,2.1 软件生命周期的基本任务 2.2 瀑布模型 2.3 快速原型模型 2.4 增量模型 2.5 螺旋模型 2.6 喷泉模型 2.7 Rational统一过程 2.8 敏捷过程与极限编程 2.9 能力成熟度模型,Rational统一过程(rational unified process,RUP)是由Rational软件公司(已被IBM并购)推出的一个软件开发过程框架。所谓软件开发过程框架是指团队可以根据具体的项目组或软件开发企业的不同需求,能够定义、配置、定制和实施一致的软件开发过程。,1.用于成功开发软件的一组基本观念和原则。 2. 一套关于可重用方

16、法内容和过程构建的框架。 3. 基础的方法和过程定义语言。,RUP核心元素,2.7.1 最佳实践,1.迭代式开发:迭代式开发允许在每次迭代过程中需求发生变化,这种开发方法通过一系列细化来加深对问题的理解,因此能更容易地容纳需求的变更。也可以把软件开发过程看做是一个风险管理过程,迭代式开发通过采用可验证的方法来减少风险。,图2.7 迭代式开发,2. 管理需求:在开发软件的过程中,客户需求将不断地发生变化,因此,确定系统的需求是一个连续的过程。RUP描述了如何提取、组织系统的功能性需求和约束条件并把它们文档化。经验表明,使用用例和脚本是捕获功能性需求的有效方法,RUP采用用例分析来捕获需求,并由它们驱动设计和实现。,3.使用基于组件的架构:所谓组件就是功能清晰的模块或子系统。系统可以由已经存在的、由第三方开发商提供的组件构成,因此组件使软件重用成为可能。RUP提供了使用现有的或新开发的组件定义架构的系统化方法,从而有助于降低软件开发的复杂性,提高软件重用率。,4.可视化建模:RUP与可视化的统一建模语言(Un

展开阅读全文
相关资源
相关搜索

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

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号