软件过程模型
软件过程模型也称为软件开发模型或软件生命周期模型,它是为了使软件生命周期中的各项任务能够有序地按照规程进行,用一定的工作模型对各项任务给以规程约束。
软件生命周期
软件生命周期包含:软件定义、软件开发、软件运行维护三个时期,并可以细分为可行性研究、项目计划、需求分析、概要设计、详细设计、编码实现与单元测试、系统集成测试、系统确认验证、系统运行与维护等几个阶段。
软件定义期
- 软件任务立项(项目立项报告)
- 项目可行性分析 (可行性分析报告)
- 制定项目计划 (软件项目开发计划)
- 软件需求分析(软件需求规格说明书)
软件开发期
- 软件概要设计 (概要设计说明书)
- 软件系统集成测试(测试报告)
- 软件系统确认验证(项目开发总结)
软件运行与维护期
- 软件不断进化升级的过程,以使软件系统更加持久地满足用户的需要
- 改正性维护
- 适应性维护
- 完善性维护
一.建造-修补模型
也称“边做边改”模型,建造第一个模板后一直修改直至客户满意为止。
**优点:**可用于探索某个函数或类的用法
**缺点:**不能用于实际软件开发。没有文档,发生回归错误的可能较大。
二.瀑布模型
其他开发模型的源头,将软件生命周期划分为需求分析、规格说明、软件设计、程序实现、软件集成和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落 。
优点:
- 易于理解,管理成本底。
- 强化开发的阶段早期计划及需求调查和产品测试。
缺点
- 客户必需完整的表达出他们的需求。
- 项目结束时,出现大量的集成和测试任务。
- 需求和设计中的错误一般只能在集成看到,使风险控制能力弱。
三.快速开发模型
为解决前面瀑布模型,客户与开发人员对于需求的不同理解是造成软件开发失败,在正式开发前在需求方面达成一致可有效地提高客户的满意度和软件的可用性,快速原型开发模型正是基于这样的思想而设计的。
优点.
- 产品的开发基本上是线性的,最大程度避免回溯
- 开发进度快:正式设计和编程前做了大量的沟通和准备工作,在开发过程回溯较少,因此整体上提高了开发的速度
缺点.
- 需求人员和客户确定的展示性原型可能不利于设计人员的创新
四.增量模型
产品以一系列增量构件的形式设计、实现、集成和测试,每个构件(Builds)由一些代码块组成,这些代码块来自多个相互作用的模块,完成特定的功能
在增量模型的每一个阶段,编写出一个新构件的代码后,集成到已完成的软件中,作为一个整体进行测试,当产品达到功能目标时,即满足了规格说明后,这个进程停止。
典例.文字处理系统
优点.
- 增量模型在每个阶段交付一个可用的产品
- 分阶段交付产品对客户的资金压力较小
缺点.
- 每个构件要求具有可扩展性
五.极限编程
增量模型的一种扩展 。
- 极限编程小组的计算机设置在一个大房间中,大房间中有许多彼此相连的小隔间,保证程序员之间能有顺畅的交流
- 一个客户代表始终和极限编程小组一起工作 ,为整个开发小组提供业务咨询和指导
- 不允许连续两周超时工作
- 没有规格说明,编程小组的所有成员一起完成规格说明、设计、代码和测试过程
- 建造出各种构件之前没有概要设计阶段
优点.
- 当客户的需要模糊或经常改动时,使用极限编程可以通过不断地调整而逐渐澄清需求,从而避免到开发的最后阶段才发现需求理解错误 。
缺点.
- 仅适用于中小型项目
六.同步-稳定模型
增量模型的一种变型,访问软件潜在顾客,提取的优先特性列表,拟制规格说明文档,将工作分为3、4个构件,第1个构件包含最重要的特性,第2个构件包含次重要的特性;每个构件都由一些小组并行地完成。
优点.
- 同步步骤保证各个组件总能一起工作
缺点.
- 对开发人员要求很高
七,螺旋模型
强调软件开发风险分析。
风险包括:
- 人员风险
- 硬件风险
- 测试投入
- 技术风险
优点.
- 适合动态的需求。
- 提高了软件的适应能力,
缺点.
- 专门用于内部开发
- 只适用于大型软件的开发
- 迭代时间长,容易延迟时间。