10.2 软件生命周期

软件和其它产品一样,周期性地重复着一些阶段。

10.2.1 开发过程模型

  • 瀑布模型
    软件开发过程早期非常流行的模型,在这种模型中,开发过程只有一个方向的流动。
    优点是开始下一个阶段之前,上一个阶段已经完成。

  • 增量模型
    软件开发经历一系列版本,随着版本的推进,更多的功能被加入,直到要求的全部功能被加入。

10.2.2 典型开发模型

分析阶段

整个开发过程始于分析阶段,这个阶段生成规格说明文档,这个文档说明了软件要做什么,而没有说明如何去做。

  • 开发分支:和客户沟通,研究讨论,并整理确认出需求。
  • 测试分支:同开发部一起确认需求。
  • 交付产品:需求规格说明书。
  • 结束条件:开发部和测试部必须对需求的理解达成一致;客户认可需求规格说明书。

设计阶段

设计阶段定义系统如何完成在分析阶段所定义的需求。在设计阶段,系统所有的组成部分都被定义。

  • 开发分支:根据需求说明书,对软件进行架构,详细设计。
  • 测试分支:对测试进行规划,开始设计用例。
  • 交付产品:开发计划,详细设计文档,DEMO;
  • 测试计划,测试策略,测试用例。
  • 结束条件:以上文档经过评审通过。

实现阶段

程序员为面向过程设计中的模块编写程序单元,实现面向对象设计中的类。

  • 开发分支:编写代码,修复缺陷,生成迭代版本。
  • 测试分支:对迭代版本进行测试,提交,跟踪缺陷。
  • 交付产品:迭代版本,bugs。
  • 结束条件:开发计划中规定的功能全部实现。

测试阶段

测试阶段的目标就是发现错误,进而提升软件质量。

  • 开发分支:稳定软件,修复缺陷,编写说明书等文档。
  • 测试分支:执行系统测试。
  • 交付产品:迭代版本,bugs。
  • 结束条件:达到测试计划中的稳定条件。

发布

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

10.2.3 文档

软件通常包含三种文档:

  • 用户文档
    传统上称为用户手册,包含指导用户熟悉软件的教程。

  • 系统文档
    定义软件本身,目的是为了让原始开发人员之外的人能够维护和修改软件。

  • 技术文档
    描述了软件系统的安装和服务。