软件过程
1.4 软件过程
• 1.4.1 概述
• 1.4.2 传统软件过程
• 1.4.3 RUP
• 1.4.4 敏捷过程
• 1.4.5 微软过程
概述
为什么需要过程
- 软件工程的基本元素
- 过程是重要的:
– 软件开发过程的制定对软件项目的实施是很重要的
– 软件开发过程需要文档化,便于交流、培训、改进
– 软件开发过程的制定应针对具体组织和项目的特点
– 一个组织最好应该有特定于该组织、一般性的软件开发过
程,供各个项目剪裁和使用
– 通过培训让项目组成员了解软件开发过程
什么是过程
- 针对一个给定目的的一系列的操作步骤
--(IEEE-STD-610)
• 例如
– 目的:去火车站
– 操作步骤:去德雅路公共汽车站,乘113路汽车
• 每个过程都有明确的目的以及具体的操作步骤,操
作步骤说明了有哪些操作以及按照什么样的方式来
执行操作
什么是软件开发过程
- 按照项目的进度、成本和质量限制,开发和维护满
足用户需求的软件所必需的一组有序的软件开发活
动集合 - 软件开发过程的例子
– 需求分析
– 设计 - 开发过程的有序例子
– 先做需求分析,然后再做软件设计 …… - 软件过程是为了获得高质量软件所需要完成的一系
列活动任务的框架,它规定了完成各项任务的工作
步骤。 - 软件过程定义了运用方法的顺序、应该交付的文档
资料、为保证软件质量和协调变化所需要采取的管
理措施,以及标志软件开发各个阶段任务完成的里
程碑。
传统软件过程模型
典型的过程模型:
- 瀑布模型
- 快速原型模型
- RAD模型
- 演化模型
- 增量模型
- 螺旋模型
瀑布模型
几个特点:
- 阶段间具有顺序性和依赖性
• 必须等前一阶段的工作完成之后,才能开始后一阶段的工作;
• 前一阶段的输出文档就是后一阶段的输入文档。 - 推迟实现的观点
• 清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现 - 质量保证的观点
• 每个阶段都必须完成规定的文档。
• 每个阶段结束前都要对所完成的文档进行评审
优缺点
- 优点:
– 可强迫开发人员采用规范的方法(如结构化技术);
– 严格地规定了每个阶段必须提交的文档;
– 要求每个阶段交出的所有产品都必须经过质量保证小组的
仔细验证。 - 缺点:
– 由于瀑布模型几乎完全依赖于书面的规格说明,很可能导
致最终开发出的软件产品不能真正满足用户的需要。
– 开发周期长。
– 前期不能出错。
实际的瀑布模型
当在后面阶段发现前面阶
段的错误时,需要沿图中
左侧的反馈线返回前面的
阶段,修正前面阶段的产
品之后再回来继续完成后
面阶段的任务
快速原型模型
• Rapid Prototype Model
– 所谓快速原型是快速建立起来的可以在计算机上运行的
程序,它所能完成的功能往往是最终产品能完成的功能
的一个子集。
– 过程:
• 快速建立一个能反映用户主要需求的原型系统
• 用户试用,提出意见
• 修改原型,直到用户满意
• 书写规格说明文档
• 开发软件
快速原型模型
–主要优点:
• 软件产品的开发基本上是线性顺序进行的。
• 原型系统已经通过与用户交互得到验证,据此产生的规格说明文
档正确地描述了用户需求,因此不会进行较大的返工。
• 开发人员通过建立原型系统已经学到了许多东西,因此,在设计
和编码阶段发生错误的可能性也比较小,减少了在后续阶段需要
改正前面阶段错误的可能性。
关键
开发人员应该尽可能快地建造出原型系统,以加速软件开
发过程,节约软件开发成本。原型的用途是获知用户的真
正需求,一旦需求确定了,原型将被抛弃。因此,原型系
统的内部结构并不重要,重要的是,必须迅速地构建原型
然后根据用户意见迅速地修改原型
增量模型
• 增量模型也称为渐增模型。
• 使用增量模型开发软件时,把软件产品作为一系列
的增量构件来设计、编码、集成和测试。每个构件
由多个相互作用的模块构成,并且能够完成特定的
功能。
增量模型
优点:
– 能在较短时间内向用户提交可完成部分工作的产品(分批地
逐步向用户提交产品,整个软件产品被分解成许多个增量构件,开发
人员一个构件接一个构件地向用户提交产品)
– 逐步增加产品功能可以使用户有较充裕的时间学习和适应
新产品,从而减少一个全新的软件可能给客户组织带来的
冲击
缺点:
– 软件体系结构必须是开放的,易于扩充;
– 在把每个新的增量构件集成到现有软件体系结构中时,必
须不破坏原来已经开发出的产品。
风险更大的增量模
RAD模型
- Rapid Application Develop
– 快速应用开发是一个线性顺序的软件开发模型,强调极短
的开发周期。
– RAD 模型是线性顺序模型的一个“高速”变种,通过使用
基于构件的建造方法获得了快速开发。
几个开发阶段
– 业务建模
– 数据建模
– 过程建模
– 应用生成
– 测试及反复
螺旋模型
螺旋模型的基本思想: B. Boehm于1988年提出的
-
使用原型及其他方法来尽量降低风险。理解这种模型的一
个简便方法,是把它看作在每个阶段之前都增加了风险分
析过程的快速原型模型。 -
项目越大,软件越复杂,承担该项目所冒的风险也越大。
软件风险可能在不同程度上损害软件开发过程和软件产品
质量。