1.瀑布模型
使用最早应用最广,瀑布模型如图。

1.1特点
(1)阶段具有顺序性和依赖性
前一阶段结束后一阶段开始,前一个阶段输出文档,后一个阶段输入文档。
(2)推迟实现观点
瀑布模型在编码前设置系统分析、系统设计,推迟程序物理实现,保证前期工作扎实。
(3)质量保证观点
瀑布模型每阶段坚持两个重要做法:
- 一是每阶段都必须完成完整、准确的文档。软件开发时人员间通信、运行时期维护的重要依据。
- 二是每阶段结束前对文档评审。
1.2改进
传统瀑布模型过于理想化,但人在工作过程中不可能不犯错误,所以实际瀑布模型带反馈环。

1.3 优缺点
- 优点:提高软件质量,降低维护成本,缓解软件危机。
- 缺点:模型缺乏灵活性,无法解决需求不明确问题。用户不经过实践提出完整准确需求不切实际。
2.快速原型模型
快速建立反映用户主要需求的原型系统,反复由用户评价修正需求,开发出最终产品。

2.1优点
- 确定需求上优于瀑布模型(通过原型与用户交互);
- 提供学习手段,通过开发原型和演示原型对开发者和使用者了解系统都有积极作用;
- 有的软件原型可以成为最终产品的一部分。
2.2缺点
快速建立的系统结构加连续修改可能导致产品质量低下原型系统的内部结构可能不好。
3.增量模型
又称渐增模型,开发软件时将软件产品作一系列增量构件设计、编码、集成和测试。

3.1区别于瀑布和快速原型模型:
瀑布和快速原型模型是一次把满足所有需求产品提交给用户。增量模型是分批向用户提交产品。
3.2优点
- 较短时间向用户提交可完成有用工作产品;
- 用户有充裕时间学习适应产品;
- 软件结构必须开放,方便向现有产品加入新构件
3.3缺点
- 做到第三个优点比较困难
3.4改进:风险更大增量模型(不建议使用)
前述增量模型在实现构件前完成总体的需求分析、规格说明和概要设计,相对来说风险较小。
风险更大增量模型:确定用户需求后,各构件集并行构建。

4.螺旋模型
1988年B.Boehem提出,加入风险分析,常指导大型软件项目。
4.1软件风险
超期、超预算、行业竞争等
4.2螺旋模型
笛卡尔坐标四象限表达四方面活动:
- 制定计划:确定目标、选定方案、设定约束条件。
- 风险分析:评估方案,识别和消除风险。
- 实施工程:软件开发
- 客户评估:评价开发工作,计划下一阶段工作。
沿螺线自内向外每旋转一圈开发出更完善新版本。

4.3优点
- 大型软件开发项目有较好的风险控制;
4.4缺点
- 需要风险评估的经验;
- 契约开发通常需要事先指定过程模型和发布产品,
- 普及不如前述模型
5.喷泉模型
面向对象生命周期模型,体现迭代和无缝特性。
5.1特点
迭代:
求精,系统某部分常被重复工作多次,相关功能在每次迭代中逐渐加入演进系统。
无缝:
分析、设计、编码各阶段间不存在明显边界。
5.2 喷泉模型

5.3优点:
无缝,可同步开发,提高开发效率,节省开发时间,适应面向对象软件
5.4缺点:
可能随时加各种信息、需求与资料,需严格管理文档,审核的难度加大。
6.Rational统一过程
由Rational软件公司推出的一种软件过程,该过程强调以迭代和渐增方式开发软件。
Rational统一过程是一个二维生命周期模型。

6.1 横轴
RUP有9个核心工作流,包括6个核心过程工作流和3个核心支持工作流。
6.2纵轴
RUP有4个连续阶段,每个阶段有明确目标,通过一次或多次迭代完成。
6.3优点
- 不断的版本发布成为一种团队日常工作的真正驱动力;
- 将发现问题、制定方案和解决过程集成到下一次迭代;
- 迭代开发,降低风险;
- 更好地安排产品开发的辅助过程。
7.微软公司软件开发过程

7.1 五个阶段
(1)规划阶段
开展市场调查研究,结合公司战略形成产品的远景目标。
(2)设计阶段
根据产品远景目标,完成软件功能规格说明和总体设计,确定产品开发的主要进度。
(3)开发阶段
完成产品中所有构件的开发工作。
(4)稳定阶段
实行全面的内部和外部测试,最终形成可发布的RTM版本
(5)发布阶段
确认产品质量符合发布标准后,发布产品及相关消息
7.2递进式的开发策略
解决问题的及时性、不确定和变更因素可控性、缩短产品上市周期
