软件开发的生命周期包括两方面的内容, 首先是项目应包括哪些阶段,其次是这些阶段的顺序如何。
软件行业的人都知道,一般的软件开发过程包括:需求分析(RA)、软件设计(SD)、编码(Coding)及单元测试(Unit
Test)、集成及系统测试(Integration and System Test)、安装(Install)、实施(Implementation)等阶段。值得一提的是,项目开始之前应经过合同评审,这是非常重要的过程,在ISO质量体系及CMM中都对合同评审有明确的规定。这不仅仅是财务及市场部门的事,作为实际的执行者,项目经理还应从技术的角度提出意见,如公司有无相应的技术、设备、人员等来完成这个项目,也即资源是否足够?能否按时完成?验收的标准是否明确?项目的风险如何?工时(成本)是否合理?等等。因此,在正式进行项目,即需求分析之前,还应有一个项目初始化的阶段(Project
Initiation),也可称为计划阶段,来确认上述情况,并制定项目计划、质量计划、配置计划等,并组织资源,确认内、外部的交流的渠道,安排必要的培训等。
另外,项目并不是将软件交给客户就结束了,应该与客户确认移交,并对项目进行分析,总结项目的经验和教训,提高以后项目管理水平,同时,还应将项目的文件归档。这可称之为项目结束阶段(Project
Closure)。根据项目性质的不同,阶段的选取是不同的。比如, 有公司将编码的工作外包, 则其软件开发项目的生命周期中就不包括编码阶段。但是,不论项目的生命同期如何,项目一定应包括初始化、需求分析及结束阶段。
还有一种生命周期为维护生命周期,指在项目完成之后,运行中的维护工作。除了与一般项目一样也有初始化与结束阶段外,还包括系统学习及维护阶段。要注意的是,即使是维护项目,也应制定相应的维护计划、质量计划、配置计划,以及其它相应的准备工作,如资源调配、明确沟通渠道等。系统学习阶段也即需求分析阶段,在这个阶段了解系统。而维护阶段实际上是一个微型的软件开发生命周期,包括:对缺隙或更改申请进行分析即需求分析(RA),分析影响即软件设计(SD),实施变更即进行编程(Coding),然后进行测试(Test)。在维护生命周期中,最重要的就是对变更的管理。