传统软件流程模型
基础类型:
- 线性过程
- 迭代过程
现存的模型:
- 瀑布过程
- 增量过程
- V字模型
- 原型过程
- 螺旋模型
选择合适的过程模型的依据:
- 用户参与程度有多大?–适应变化的能力
- 开发效率/管理复杂度
- 开发出的软件的质量
瀑布
进度被视为稳步向下流动(像瀑布一样),易于使用,但事后更改的成本高得令人望而却步。
瀑布过程:
- 线性推进
- 阶段划分清楚
- 整体推进
- 无迭代
- 管理简单
- 无法适应需求增加/变化
增量
- 线性推进
- 增量式(多个瀑布的串行)
- 无迭代
- 比较容易适应需求的增加
V-Model
瀑布模型的扩展
速成迭代原型法
在原型上持续不断的迭代 发现用户变化的需求,原型通过后再进行具体的设计和实现
迭代:开发出来之后由用户试用/评审,发现问题反馈给 开发者,开发者修改原有的实现,继续交给用户评审。 循环往复这个过程,直到用户满意为止。 时间代价高,但开发质量也高
螺旋
非常复杂的过程:
- 多轮迭代基本遵循瀑布模式
- 每轮迭代有明确的目标,遵循“原型”过程,进行严格的风险分析,方可进入下一轮迭代
敏捷开发
通过快速迭代和小规模的持续改进,以快速适应变化
Agile = 增量 + 迭代 每次迭代处理一个小规模增量
- 极限的用户参与
- 极限的小步骤迭代
- 极限的确认/验证
通过小的迭代,不断把变化加入