
第2章 软件生命周期与开发模型
本章导读
开发一个软件项目,首先要选择并确定一个适合于该项目的软件生命周期模型,然后按照该软件生命周期模型的开发路线图,进行有条不紊地开发,以到达成功的彼岸。
软件生命周期模型是软件工程课程研究的4 项内容之一,它虽然不是软件工程课程研究的重点,但是在宏观上特别重要。因为软件的生命周期与选择的开发模型有关,不同的开发模型,对应不同的生命周期。本章将讨论软件生命周期模型,首先介绍IT企业常用的4种模型:瀑布模型、增量模型、迭代模型和原型模型,然后再介绍其他几种模型,最后进一步论述各个模型之间的关系。表2-1列出了读者在本章学习中要了解、理解和掌握的主要内容。
表2-1 本章对读者的要求

2.1 软件生命周期模型概论
任何有生命的动物、植物和人,都有一个生命周期(Life Cycle)。例如,人的生命周期如表2-2所示。
表2-2 人的生命周期

即使是没有生命的事物或实体,如PC、路由器、家具、房子、汽车,它们也有一个生命周期,这个生命周期就是使用寿命,即使用周期。
在计算机技术发展的初期,人们把软件开发简单地理解为编写程序,很少考虑需求分析和系统设计等。随着软件复杂性的增加,开发人员不知不觉地陷入到“边做边改”的困境。这样的开发模式必然导致质量低下、进度延误、成本高昂等问题。后来,人们逐渐认识到,若要把软件开发工作做好,必须将其划分为分析、设计、编码、测试、维护等若干活动,并将这些活动以适当的方式分配到不同的阶段中去完成,于是产生了“软件生命周期模型”。
从字面上理解,“软件生命周期”应该涵盖软件产品、项目或软件系统从产生、投入使用到被淘汰的全部过程。由于早期人们关注的是技术开发活动,还没有考虑到管理活动,因此“软件生命周期模型”主要描述的还是软件开发的过程及其活动和任务。目前,比较常见的软件生命周期模型有:瀑布模型、原型模型、迭代模型、增量模型。
与人不同的是,软件的生命周期与软件生命周期模型有关:不同的软件生命周期模型,可能对应着不同的生命周期。生命周期不同,该软件的开发阶段划分、评审次数、基线标准都有所不同。软件公司的项目组在开发一个大项目或产品时,首先在技术上必须选择一个软件生命周期模型,使该模型非常适合这个项目或产品的生命周期;随后通过对软件生命周期模型的裁剪,给出适用于本项目或产品的软件生命周期定义;以生命周期定义为标准,在需求定义之后,编制详细的软件开发计划;然后,项目组按计划进行软件开发,软件工程管理部门按计划进行软件过程跟踪与管理。
软件生命周期模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目工作的基础。一般来说,若以时间为序,软件的生命周期可详细地划分为9个阶段,如表2-3所示。
表2-3 软件生命周期的9个阶段

现在,让我们回顾一下第1 章中对软件生命周期模型的定义。定义指出:软件生命周期模型是指在整个软件生命周期中,软件开发过程应遵循的开发路线图。或者说,软件生命周期模型是软件开发全部过程、活动和任务的结构框架。显而易见,这个定义不但非常全面,而且十分准确,它符合所有软件生命周期模型对生命周期的定义与解释。