10.2 软件生命周期
软件和其它产品一样,周期性地重复着一些阶段。
10.2.1 开发过程模型
- 瀑布模型
软件开发过程早期非常流行的模型,在这种模型中,开发过程只有一个方向的流动。
优点是开始下一个阶段之前,上一个阶段已经完成。
- 增量模型
软件开发经历一系列版本,随着版本的推进,更多的功能被加入,直到要求的全部功能被加入。
10.2.2 典型开发模型
分析阶段
整个开发过程始于分析阶段,这个阶段生成规格说明文档,这个文档说明了软件要做什么,而没有说明如何去做。
- 开发分支:和客户沟通,研究讨论,并整理确认出需求。
- 测试分支:同开发部一起确认需求。
- 交付产品:需求规格说明书。
- 结束条件:开发部和测试部必须对需求的理解达成一致;客户认可需求规格说明书。

设计阶段
设计阶段定义系统如何完成在分析阶段所定义的需求。在设计阶段,系统所有的组成部分都被定义。
- 开发分支:根据需求说明书,对软件进行架构,详细设计。
- 测试分支:对测试进行规划,开始设计用例。
- 交付产品:开发计划,详细设计文档,DEMO;
- 测试计划,测试策略,测试用例。
- 结束条件:以上文档经过评审通过。
实现阶段
程序员为面向过程设计中的模块编写程序单元,实现面向对象设计中的类。
- 开发分支:编写代码,修复缺陷,生成迭代版本。
- 测试分支:对迭代版本进行测试,提交,跟踪缺陷。
- 交付产品:迭代版本,bugs。
- 结束条件:开发计划中规定的功能全部实现。
测试阶段
测试阶段的目标就是发现错误,进而提升软件质量。
- 开发分支:稳定软件,修复缺陷,编写说明书等文档。
- 测试分支:执行系统测试。
- 交付产品:迭代版本,bugs。
- 结束条件:达到测试计划中的稳定条件。

发布
- 开发分支:对开发过程进行总结。
- 测试分支:对测试过程进行总结。
- 交付产品:可交付软件,部署方案,开发总结,测试总结。
- 结束条件:以上文档评审通过。

10.2.3 文档
软件通常包含三种文档:
用户文档
传统上称为用户手册,包含指导用户熟悉软件的教程。系统文档
定义软件本身,目的是为了让原始开发人员之外的人能够维护和修改软件。技术文档
描述了软件系统的安装和服务。