软件工程第二章软件过程

合集下载

软件工程第二章-软件过程

软件工程第二章-软件过程

编码
运行 时期
1. 瀑布模型
瀑布模型(waterfall model)是软件工程最早的范例,
也称经典生命周期,它提出了一个系统的、顺序的软 件开发方法,从用户需求规格说明开始,通过计划、 建模、构建和部署的过程,最终提供一个完整的软件 并提供持续的技术支持。
沟通 项目启动 需求获取 策划 项目估算 进度计划 项目跟踪
… 框架活动 # n 动作 # n.1 任务集 …… 动作 # n.m 任务集 工作任务、工作产品、 质量保证点、项目里程碑
工作任务、工作产品、 质量保证点、项目里程碑
只有一种软件过程吗?
软件过程的种类很多,区别主要体现在几个方面: 组成过程的各个活动(包括普适性活动)、动作和任务,及其相互依 赖的关系都可能不同; 动作和任务的细化程度可能不同; 工作产品的定义和要求可能不同; 质量保证活动的应用方式可能不同; 项目跟踪和控制活动的应用方式可能不同; 过程描述的详细程度和严谨程度可能不同; 客户和利益相关者对项目参与的程度可能不同; 软件团队所赋予的自主权可能不同; 队伍组织和角色的明确程度可能不同。
下优先级进行增量开发:
第一个增量实现基本的文件管理、编辑和文档生成功能



; 第二个增量实现更加完善的编辑和文档生成功能; 第三个增量实现拼写和文法检查功能; 第四个增量完成高级的页面布局功能; ……
增量模型的特点
增量过程模型综合了线性、并行、演化三种过程流的
特征。
对于每个增量,使用的是线性过程流;
过程流
过程流(process flow):描述了在执行顺序和执行时
间上,如何组织框架中的活动、动作和任务。 大致有四大类不同的过程流:

第2章 软件过程

第2章 软件过程
1) 2) 3) 4)

Plan 软件规格说明 Do 软件开发 Check 软件确认 Action 软件演进
80年代后,软件能力成熟度模型已成为软件 过程改进的标准。
软件工程框架
目标 用 性 确 性 合 基 本 过 程 算 性 支 持 过 程


选取适宜的开发范型 原 采用合适的设计方法 则 提供高质量的工程支持
统一过程模型
• 统一过程模型(Rational Unified Process) 是种软件工程过程,它提供了如何在开发组织中 严格分配任务和职责的方法;统一过程模型是一 个过程产品,有自己的过程框架,捕获了现代软 件开发中的最佳实践。统一过程模型具有三大特 点:用例驱动,以架构为中心,迭代和增量开发。
(2) 需求分析
本阶段要回答的关键问题是“目标系统应当做什么?”
(3) 软件设计
设计是软件工程的技术核心。本阶段要回答的关键问题 是“如何实现目标系统?”
软件生存周期
各个阶段所要完成的基本任务
(4) 程序编码和单元测试
本阶段要解决的问题是“正确地实现已做的设计”,即 “如何编写正确的、可维护的程序代码?”
第二章 软件过程
2.1 软件过程概述

ISO 9000定义:软件工程过程是把输入转 化为输出的一组彼此相关的资源和活动。
从软件开发的观点看,它就是使用适当的 资源(包括人员、硬软件工具、时间等), 为开发软件进行的一组开发活动,在过程 结束时将输入(用户要求)转化为输出 (软件产品)。


软件工程过程定义了: 方法使用的顺序、 要求交付的 文档资料、为保证质量和适应变化所需要的管理、 软件开发各个阶段完成的里程碑。 软件工程过程包含四种基本的过程活动:

软件工程课件-第2章-过程模型

软件工程课件-第2章-过程模型
(2)是必须有快速开发工具可供使用。
31
螺旋模型
大型软件开发面临的重要问题:软件风险 如:产品交付给用户之后,用户不满意 开发进度落后,开发成本超出预算
产品完成前关键的技术人员跳槽
32
螺旋模型
•螺旋模型
累计成本 通过步骤进展 评价方案 识别和消除风险 决定目标、 方案和限制 风险 分析 评审 提交 风险 分析
难性的。 3、线性顺序模型每一步的工作都必须以前一阶段的输出为输入,这种 特征会导致工作中发生“阻塞”状态。
18
瀑布模型(Waterfall model)
虽然存在着上述的种种问题,但是线性顺序模型仍然有其值得肯定之处。 1、它提供了一个模板,使得分析、设计、编码、测试与维护工作可以在
该模板的指导下有序地展开,避免了软件开发、维护过程中的随意状态。
一个螺旋式周期
– – – –
协同模型
• 协同开发模型 Concurrent Development Model
13
瀑布模型
沟通
• 项目启动 • 需求获取
实际项目很少严格遵守该顺序. 客户通常难以清楚描述所有需求.
策划
• 项目估算 • 进度计划和项目跟踪
只有到项目接近尾声时,
才有可执行程序.
建模
• 分析和设计
经典
构建
• 编码和测试
生命周期
部署
• 交付 •支持和反馈
14
瀑布模型(Waterfall model)
作为一个连续的模型:从两个维度描述过程,每个过程域都根 据特定的目标和实践要求,进行严格的评估,并根据能力水平 评定为不完全级、已执行级、已管理级、已定义级、已定量管 理级、优化级。 作为一个阶段的模型:定义了五个成熟度等级:初始级、可重 复级、定义级、管理级、优化级 。

《软件工程与项目管理》2-2-软件过程(2)

《软件工程与项目管理》2-2-软件过程(2)
将软件生存周期分解为一个个周期,每一个周期又划分为4个连续 的阶段:
初始阶段 为系统建立商业案例和确定项目的边界。 精化阶段 分析问题领域,建立健全的体系结构基础,编制项目计划,
淘汰项目中最高风险的元素。 构建阶段 管理资源和控制运作以优化成本、日程、质量的生产过程。 交付阶段 将软件产品交付给用户。
2.2 软件过程模型
专用过程模型
基于构件的开发模型:复用已有构件库中的软构件,逐步完 成系统设计及实现。
形式化系统开发模型:基于形式化数学变换的软件开发方法。 面向方面的开发模型:将系统的横切关注点和核心关注点分
开,避免横切关注点散乱分布在系统的多个类中。
2.2 软件过程模型
Rational统一过程
2.2 软件过程模型
软件过程模型
瀑布模型 演化过程模型 增量过程模型 专用过程模型 Rational统一过程
敏捷过程与极限编程 微软软件过程
2.2 软件过程模型
瀑布模型
瀑布模型(Waterfall Model)也称软件生存周期模型或线性顺序 过程模型。瀑布模型是一种线性模型。
2.2 软件过程模型
螺旋模型:将瀑布模型和快速原型模型结合,强调其他模型所忽视 的风险分析,吸收了“演化”的概念,可使开发人员和客户对每个 演化层的风险有所了解,继而做出应有反应。
将开发过程划分为制定计划、 风险分析、实施工程和客户评 估四类活动。将沿着螺旋线继 续进行,自内向外逐步延伸, 最终得到满意的软件产品。
加强开发者与用户的沟通需求,让客户全面参与软件的开发设计, 保证变化的需求及时得到修正。
主要目标在于降低因需求变更而带来的成本。 把软件开发过程重新定义为聆听、测试、编码、设计的迭代循环过
程。

软件工程 第2章过程模型

软件工程  第2章过程模型
降低开发风险 – 软件能够更早投入市场 – 开放式体系结构,便于维护
• 缺点:
– 软件必须具备开放式体系结构(困难) – 易退化成边做边改的方式,使软件过程控制失去整体性
31
增量模型的适用场合
适用场合 适用于软件开发中需求可能发生变 化、具有较大风险、或者希望尽早 进入市场的项目。
32
原型化模型(Prototype model)
沟通
策划
部署
建模
构建
策划
建模
时间
构建
部署
13
软件过程模型
• 传统软件过程模型
– 瀑布模型 – 增量模型 – 原型模型 – 螺旋模型 – 协同模型 – 喷泉模型
• 现代软件过程模型
– 基于构件的开发模型 – 形式化方法模型 – 面向方面的软件开发 – Rational统一过程 – 敏捷软件开发
14
传统软件过程模型
运行 计算机:我做了什么
6
软件生命周期
• Software life cycle • 软件生命周期/软件生存期:指软件产品或软件系
统从定义、设计、投入使用到被淘汰的全过程。
• 软件定义:做什么 • 软件开发:怎么做 • 软件维护
• 问题定义 • 可行性研究 • 需求分析
• 总体设计 • 详细设计 • 编码 • 测试
开发进度 顺时针为进展方向
评估方案 风险分析 构造原型
风险分析
风险分析
预算、方案、约束
风险分析
风险分析 原型1
原型2
生命周期计划 需求计划 开发计划
操作概念 需求确认
软件需求
集成和测试计划
设计验证与确认
评价本阶段 计划下一阶段

第二章 软件过程

第二章 软件过程

2.3快速原型模型 快速原型模型
开始
停止
需求的采集和细化
产品样品 (需求确认 需求确认) 需求确认
快速设计
对原型加工 (需求精确化 需求精确化) 需求精确化
建造原型
用户评价原型
使用原型确定需求的过程
快速原型的本质是“快速”。开发人员 快速原型的本质是“快速” 应该尽可能快地建造出原型系统, 应该尽可能快地建造出原型系统,以加速软 件开发过程,节约软件开发成本。 件开发过程,节约软件开发成本。原型的用 途是获知用户的真正需求,一旦需求确定了, 途是获知用户的真正需求,一旦需求确定了, 原型将被抛弃。 原型将被抛弃。
增量模型(Incremental model) 1.4.3 增量模型
增量模型也称为渐增模型。 增量模型也称为渐增模型。 使用增量模型开发软件时, 使用增量模型开发软件时,把软件产品作为一系列的增 量构件来设计、编码、集成和测试。 量构件来设计、编码、集成和测试。每个构件由多个相互作 用的模块构成,并且能够完成特定的功能。使用增量模型时, 用的模块构成,并且能够完成特定的功能。使用增量模型时, 第一个增量构件往往实现软件的基本需求,提供最核心的功 第一个增量构件往往实现软件的基本需求,提供最核心的功 能。
原型模型的适应场合
原型模型比瀑布模型更符合人们认识事 物的过程和规律, 物的过程和规律,是一种较实用的开发 框架。 框架。 它适合于那些不能预先确切定义需求的 软件系统的开发, 软件系统的开发,更适合于那些项目组 成员(包括分析员、设计员、 成员(包括分析员、设计员、程序员和 用户) 用户)不能很好交流或通信有困难的情 况。
6.编码和单元测试 6.编码和单元测试 编码和单元测试 这个阶段的关键任务是写出正确的容易理解、 这个阶段的关键任务是写出正确的容易理解、 容易维护的程序模块。 容易维护的程序模块。 7.综合测试 7.综合测试 综合测试 这个阶段的关键任务是通过各种类型的测试 (及相应的调试 使软件达到预定的要求。 及相应的调试)使软件达到预定的要求 及相应的调试 使软件达到预定的要求。

02第二章:软件过程

02第二章:软件过程

2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9
软件生命周期的基本任务 瀑布模型 快速原型模型 增量模型 螺旋模型 喷泉模型 Rational统一过程 敏捷过程与极限编程 能力成熟度模型
基本思想

使用原型及其他方法来尽量降低风险。 理解这种模型的一个简便方法,是把它 看做在每个阶段之前都增加了风险分析 过程的快速原型模型,如图2.5所示。图 中带箭头的点画线的长度代表当前累计 的开发费用,螺线旋过的角度值代表开 发进度。
图2.6 喷泉模型

为避免使用喷泉模型开发软件时开发过 程过分无序,应该把一个线性过程(例 如,快速原型模型或螺旋模型中的中心 垂线)作为总目标。但是,同时也应该 记住,面向对象范型本身要求经常对开 发活动进行迭代或求精。




2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9
第二章:软件过程
软件工程过程是为了获得高质量软件 所需要完成的一系列任务的框架,它规定 了完成各项任务的工作步骤。 本章讲述在软件生命周期全过程中应 该完成的基本任务,并介绍各种常用的过 程模型。
第二章:软件过程



2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9
图2.2 加入迭代过程的瀑布模型
瀑布模型的优点

可强迫开发人员采用规范的方法 严格地规定了每个阶段必须提交的文档 要求每个阶段交出的所有产品都必须经 过质量保证小组的仔细验证
瀑布模型的缺点

瀑布模型是由文档驱动的”:在可运行 的软件产品交付给用户之前,用户只能 通过文档来了解产品是什么样的。
RUP核心元素

软件工程讲义_第02章 过程综述

软件工程讲义_第02章 过程综述

任务集

任务集定义了为达到一个软件工程动 作的目标所需要完成的工作。每一个 软件工程动作都由若干个任务集构成, 而每一个任务集都由工作任务、工作 产品、质量保证点和项目里程碑等组 成。通常选择最满足项目需要和适合 开发组特点的任务集。
普适性活动
软件项目跟踪和控制 风险管理 软件质量保证 正式技术评审 测量 软件配臵管理 可复用管理 工作产品的准备和生产
现代软件工程
第2章 过程综述
软件过程

软件同其他资产一样,是知识的具体体现,而 知识最初都是以分散的、不明确的、隐蔽的且不 完整的形式广泛存在的,因此,软件开发是一个 社会学习的过程。软件过程是一个对话,在对话 中,软件所必需的知识被收集在一起并在软件中 实现。过程提供了用户与设计人员之间、用户与 不断演化的工具之间以及设计人员与不断演化的 工具(技术)之间的交互途径。软件开发是一个 迭代的过程,在这个过程中,演化的工具本身就 作为沟通的媒介,每新一轮对话都可以从参与的 人员中获得更有用的知识。[BAE98]
过程技术
过程技术工具可以帮助软件开发组织对通 用过程框架、任务集和普适性活动建造自 动化的模型。 一旦创建了可接受的过程,其他过程技术 工具可用来分配、监测、甚至控制所有过 程模型中的软件工程任务。

产品与过程

如果过程很薄弱,最终产品必将受到影响。 但是对过程的过于依赖也是很危险的。
小结
软件工程是一门涉及软件开发过程、方法、 工具的学科。尽管有多种不同的软件工程 过程模型,但它们都定义了:一组框架活 动,完成每个活动的所包含的任务集,任 务完成所形成的工作产品,以及一组可应 用于整个过程的普适性活动。过程模式可 以用来定义过程的特征。 CMMI是一个全面的过程元模型,它描述 了成熟软件过程应该具备的特定目标、实 践和能力。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章:软件过程目标:软件工程和软件过程模型的概念;了解3个一般的软件过程模型及何时使用它们;了解软件需求工程,软件开发,测试和进化中所涉及的基本过程活动;理解为什么软件过程要有效地组织以应对软件需求和设计上的变更;了解Rational统一过程是如何集成好的软件过程实践来产生一个可适应的软件过程。

所有的软件过程都必须具有4种对软件工程来说是基本的活动。

它们是:1.软件描述:必须定义软件的功能以及软件操作上的约束。

2.软件设计和实现:必须生产符合描述的软件。

3.软件有效性验证:软件必须得到有效性验证,即确保软件是客户所想要的。

4.软件进化:软件必须进化以满足不断变化的客户需要。

2.1软件过程模型一软件过程模型一般有1.瀑布模型:该模型将基本的过程活动,描述,开发,有效性验证和进化,看成是一些界限分明的独立的过程阶段,例如,需求描述阶段,软件设计阶段,实现阶段,测试阶段,等等。

2.增量式开发:该方法使得描述活动,开发活动和有效性验证活动交织在一起。

系统的开发是建立一系列的版本(增量),每个版本添加部分功能到先前的版本中。

3.面向复用的软件工程:该方法使得描述活动,开发活动和有效性验证活动交织在一起。

系统开发过程着重于集成这些组件到新系统中,而非从头开发。

2.1.1瀑布模型一瀑布模型中的主要阶段直接映射基本的开发活动:1.需求分析和定义2.系统和软件设计3.实现和单元测试4.集成和系统测试5.运行和维护二适合采用瀑布模型的时候瀑布模型是与其他工程过程模型相一致的,在它的每个阶段都要生成文档。

这使得过程是可见的,项目经理能够根据项目计划监控项目的过程。

它的主要问题在于它将项目生硬地分解成这些清晰的阶段。

关于需求的责任和义务一定要在过程的早期阶段清晰界定,而这又意味它对用户需求变更的响应较困难。

所以只有在对需求了解的好,而且在系统开发过程中不太可能发生重大改变的时候,适合采用瀑布模型。

瀑布模型的一个重要变形是形式化系统开发。

针对系统描述创建其数学模型。

然后采用能保持一致性的数学变换对该数学模型进行加工,知道产生可执行代码。

形式化的开发过程,如基于B方法特别适用于有严格安全性,可靠性或信息安全性需求的系统的开发。

形式化方法简化了安全用例和信息安全性的需求。

基于形式变换的过程通常只用于开发安全性或信息安全性要求极高的一类系统。

这需要非常专业的知识和技能。

对于大多数系统,在系统开发中应用这一过程不会比其他方法带来明显的成本优势。

2.1.2增量式开发一增量式开发的定义增量式开发的思想是先开发出一个初始的实现,给用户使用并听取用户的使用意见和建议,通过对多个版本的不断修改直到产生一个充分的系统。

描述,开发和有效性验证等活动不是分离的而是交织在一起。

同时让这些活动之间都能得到快速地反馈信息传递。

增量式软件开发,是敏捷开发的一个基本部分,对于商务,电子商务和个人系统来说更加适合。

增量式开发反映了我们解决问题的方法。

我们很少提前制定出完整的问题解决方案,而是逐步地逼近解决方案,当我们意识到错误的时候进行回溯。

通过增量式地开发软件,在开发过程中可以更经济,更容易对软件变更做出响应。

二增量式开发较之瀑布模型有3个重要优点:1.降低了适应用户需求变更的成本。

重新分析和修改文档的工作量较之瀑布模型要少很多。

2.在开发过程中更容易得到用户对于已做的开发工作的反馈意见。

用户可以评价软件的现实版本,并可以看到已经实现了多少。

这比让用户从软件设计文档中判断工程进度要好很多。

3.使更快地交付和部署有用的软件到客户方变成了可能,虽然不是所有的功能都已经包括在内。

相比于瀑布模型,用户可以更早地使用软件并创造商业价值。

三从管理的角度来看,增量式方法存在两个问题:1.过程不可见。

管理者需要通过经常性的可交付文档来把握进度,如果系统开发速度太快,要产生反映系统每个版本的文档就很不划算。

2.伴随着新的增量的添加,系统结构在逐渐退化。

除非投入时间和金钱用在重构系统结构上以改善软件,否则定期的变更会损坏系统的结构。

随着时间的推移,越往后变更系统越困难,而且成本也将逐渐上升。

2.1.3面向复用的软件工程一面向复用的中间阶段是:1.组件分析:给出需求描述,然后搜寻能满足需求的组件。

2.需求修改:根据的得到的组件信息分析需求,然后修改需求以反映可得到的组件。

3.使用复用的系统设计:设计系统的框架或者重复使用一个已存在的框架。

4.开发和集成:当组件不能买到时就需要自己开发,然后集成这些自己开发的组件和现货组件,使之成为一个整体。

二3种类型的软件组件可能用于面向复用的过程:1.通过标准服务开发的Web服务,可用于远程调用。

2.对象的集合,作为一个包和组件框架,如.NET或者J2EE等集成在一起。

3.独立的软件系统,通过配置在特定的环境下使用。

三面向复用模型的优势与劣势面向复用的模型的明显优势是它减少了需要开发的软件数量,从而降低了软件开发成本,同时也降低了开发中的风险。

通常也可使软件快速地交付。

然而,需求妥协是不可避免的,而且这可能又导致一个不符合用户真正需要的系统。

此外,对系统进化的控制也将失效,因为可复用的组件新版本可能是不受机构控制的。

2.2过程活动真正的软件过程是交织着技术,协作,管理等内容的一个活动序列,围绕着一个总的目标,即实现系统的描述,设计,实现和测试。

2.2.1软件描述一软件描述或需求工程是理解和定义系统需要提供哪些服务,以及找出开发和运行中受到哪些约束。

需求工程是软件过程中一个特别关键的阶段,这个阶段的错误将不可避免地带来系统设计和实现阶段过程的后续问题。

二需求工程过程有4个主要的阶段:1.可行性研究:指明现有的软件,硬件技术能否实现用户对新系统的要求。

从业务角度来决定系统开发是否划算以及在预算范围内能否开发出来。

可行性研究应该是相对来讲花钱少且快速完成的。

结果应该得到结论,该系统是否值得进行更细致的分析。

2.需求导出和分析:这是一个通过对现有系统分析,与潜在用户和购买者讨论,进行任务分析等导出系统需求的过程。

也可能需要开发一个或多个不同的系统模型和原型。

这些都会帮助分析员了解所要描述的系统。

3.需求描述:就是把在分析活动中收集的信息以文档的形式确定下来。

在这个文档中有两类需求。

用户需求是从客户和最终用户角度对系统需求的抽象描述;系统需求是对系统要提供的功能的详尽描述。

4.需求有效性验证:该活动检查需求的现实性,一致性和完备性。

在这个过程中,肯定会发现需求文档中的错误,必须加以改正以解决问题。

2.2.2软件设计和实现一软件开发的实现阶段是把系统描述转换成一个可运行的系统的过程。

它总是包含设计和编程,但是,如果用增量式开发方法,可能还包含对软件描述的精炼过程。

软件设计是对实现软件的结构,系统的数据,系统组件间的接口以及所用的算法的描述。

绝大多数软件有面向其他软件系统的接口。

二信息系统设计过程中4个活动:1.体系结构设计:识别系统总体结构,基本组件(有时候也叫子系统或模块),它们之间的关系以及它们是怎样分布的。

2.接口设计:定义系统组件间的接口。

接口的描述必须是无二义的。

在有精确接口定义的前提下,组件不必知道其他组件的具体实现即可使用它们。

一旦接口描述达成一致意见,组件就可以并行设计和开发了。

3.组件设计:针对每个系统组件设计它的运行方式。

这可能是对预期功能的一个简单声明,留给程序员去做具体的设计。

也可能是对复用组件或是某个细化的设计模型所做的一系列的变更。

设计模型可用于自动生成一个实现。

4.数据库设计:设计系统数据结构,以及如何在数据库中表示这些数据结构。

此处的工作又一次取决于是否复用现有数据库或创建一个新的数据库。

2.2.3软件有效性验证一软件有效性验证,通常也称为检验和有效性验证(V&V),是要看系统是否符合它的描述以及系统是否符合客户的预期。

程序测试,即用模拟测试数据运行系统,是最基本的有效性验证技术。

有效性验证技术也包括在从用户需求定义到程序开发的每个软件过程阶段进行检查过程(比如,查阅和复查)。

由于测试的主导地位,绝大多数的有效性验证成本发生在系统完成过程中和完成之后。

二测试过程中的阶段包括:1.组件(或单元)测试:由开发系统的人员对组成系统的组件进行测试。

每个组件都单独测试,而不受其他系统组件的影响。

组件可能是简单的实体,如一个函数或对象类,或者是这些实体的一个相关集合。

通常用自动化测试工具,如JUnit (Massol 和Husted ,2003),它能在新版本的组件创建的时候对其重新测试。

2.系统测试:集成组件形成完整的系统。

这个过程主要是关注无法预测的组件间交互和组件界面问题所引发的错误。

也关注系统是否满足了功能上和非功能上的需求,并测试系统的总体特性。

对于大型系统来说,这可能是一个多阶段的过程,需要对组件所构成的子系统进行测试,然后测试由这些子系统所构成的最终系统。

3.接收测试:这是系统在接受并运行之前进行的最后阶段测试。

这个阶段不再是用模拟数据来测试系统,而是用客户提供的真实数据测试系统。

真实数据能以不同的方式测试系统,所以能暴露出系统需求定义中的错误和遗漏。

接受测试还能发现系统需求中的类问题,即系统的设施不能满足用户的需要或者系统性能是无法接受的。

2.2.4软件进化一 自有软件开发以来,就有软件开发过程和软件进化(软件维护)过程之分。

而现在完全从头开发的系统很少,将软件系统的开发维护看成是一个连续体显得更有意义。

因此,不再将软件工程看成是开发和维护两个完全独立的过程,而是将其堪称是一个进化过程,即软件在其生命周期内不断地随着需求的变更而变更的进化式过程。

这个进化式过程如下图所示。

2.3应对变更一 对于所有大型项目来说,变更是无法避免的。

系统需求是在变化的,因为采购系统的工作要屈从于外部压力和管理权力的更替。

当有新技术可用的时候,新的设计和实现方法就会出现。

因此不管用什么样的软件过程模型,能在软件开发过程中及时处理变更是很必要的。

二 有两个相关的方法会用于降低返工成本:1.变更避免:软件过程包括一些能够在重大返工发生之前预测变更的活动。

例如,原型系统的开发,要先给客户看系统的一些重要特征。

客户可以试用原型,并在花费高额的软件生产成本之前重新定义需求。

2.变更容忍:所设计的过程使得变更以相对较低的成本得到处理。

这通常需要增量开发。

提出的变更可能是在还没有开发的增量上实现。

假如不是这样的,只需要更改单个增量(系统的一小部分)来适应变更。

三 两种应对变更系统需求的方法,它们是:1.系统原型:快速开发一个系统版本或者是系统的一个部分,以检验客户需求和某些设计决定的可行性。

它支持变更避免,因为它允许客户试用正式交付之前的系统,并重新审视和定义需求。

因此在交付正式系统之后,客户提出的需求变更的数目将会降低。

相关文档
最新文档