把整个软件生存周期划分成若干阶段、使每个阶段有明确的任务,使规模大、结构复杂和管理复杂的软件的开发变的容易控制和管理。通常,软件生命周期包括可行性分析与项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等,可以将这些活动以适当的方式分配到不同的阶段去完成。
一、可行性分析与项目开发计划
这个阶段主要确定软件开发目标及其可行性。必须要弄清楚的问题是:
要解决的问题是什么?
该问题有可行的解决办法吗?
若有解决办法,则需要多少成本(费用、资源、时间)?
要回答这些问题,就要进行问题定义、可行性分析,制定项目开发计划。
可行性分析与项目开发计划阶段的参加人员有用户、项目负责人和系统分析师。该阶段产生的主要文档有可行性分析报告。
二、需求分析
需求分析阶段的任务不是具体解决问题,而是准确的确定软件系统必须做什么,确定软件系统的功能、性能、数据和界面等要求,从而确定系统的逻辑模型。该阶段的参加人员有用户、项目负责人和系统分析师。该阶段产生的主要文档有软件需求说明书和项目开发计划。
三、概要设计
概要设计阶段,开发人员要把确定的各项功能需求转换成需要的体系结构。在该体系结构中,每个成分都有意义明确的模块,每个模块都和某些功能需求相对应,因此概要设计就是设计软件的结构,明确软件由哪些模块组成,这些模块的层次结构是怎样的,调用关系是怎样的,每个模块功能是什么。同时,还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据的结构是怎样的,他们之间有什么关系。
概要设计阶段参加的人员有:系统分析师、系统架构师。产生的文档主要有:概要设计说明书和用户手册。
四、详细设计
详细设计阶段主要任务是对每个模块完成的功能进行具体描述,要把功能描述转换成精确的、结构化的过程描述。即模块的控制结构是怎样的、先做什么、后做什么,有什么样的判定条件、有些什么重复处理等,并用相应的工具把这些控制结构表示出来。
详细设计阶段参加的人员有:系统架构师、软件开发工程师。该阶段产生的主要文档有:详细设计文档。
五、编码
编码阶段就是把每个模块的控制结构转换成计算机可接受的程序代码。
编码阶段参加的人员有:软件开发工程师。该阶段产生的主要文档有:数据库设计说明书、数据需要说明书、开发进度月报。
六、测试
测试时保证软件质量的重要手段,其主要方式在设计测试用例的基础上检查软件的各个部分。测试阶段参加的人员通常是另一个部门的软件开发工程师或系统分析师。该阶段主要产生的文档有:软件测试计划、测试用例、软件测试报告。
七、维护
软件维护是软件生命周期中时间最长的阶段。已交互的软件投入正式使用后,便进入了软件维护阶段。在软件运行过程中可能由于各个方面的原因需要对其修改,可能是运行中发现软件隐含的错误、可能是为了适应变化了的软件工作环境,可能是为了用户业务发生了变化,可能是未了软件维护活动做预先准备等。
软件维护参加的人员有:项目实施工程师。该阶段产生的主要文档有:操作文档、项目开发总结报告(项目负责人)。