10.1.2 软件生存周期模型

2025-06-05 21:45:39 更新

软件生存周期模型是一个包括软件产品开发、运行和维护中有关过程、活动和任务的框架,覆盖了从该系统的需求定义到系统的使用终止。

常见的软件生存周期模型有瀑布模型、演化模型、螺旋模型和喷泉模型等。


模型

说明

优缺点

1

瀑布模型

(Waterfall Model)

定义:将软件生存周期各个活动规定为依线性顺序连接的若干阶段的模型。包括需求分析、设计、编码、测试、运行和维护。规定了由前至后、相互衔接的固定次序,如同瀑布流水,逐级下落。

特点:以文档为驱动、适合于需求很明确的软件项目。以项目阶段评审和文档控制为手段,有效控制整个开发过程。

前提:假定待开发系统的需求是完整、简明和一致的,而且可以先于设计和实现之前产生。

优点:

(1)容易理解,管理成本低;

(2)强调开发阶段性早期计划及需求调查和产品测试。

缺点:

(1)客户必须能够完整、正确和清晰地表达需求;

(2)在项目进行中,很难评估真正的进度状态;

(3)当项目结束时,积累大量的集成和测试工作;

(4)在项目结束前,无法演示系统。

(5)风险控制能力弱,需求或设计错误在项目后期才能被发现,从而导致项目延期,开发费用超支。

2

增量模型

(Incremental Model)

定义:融合了瀑布模型基本成分和原型实现的迭代特征。随着日程时间的进展而交错的线性序列,每个线性序列产生软件的一个可发布的“增量”,第1个增量往往是核心产品。强调每一个增量均发布一个可操作的产品

前提:假定能将需求分段为一系列增量产品,每个增量可以分别开发。

优点:具有瀑布模型的所有优点,

(1)第一个可交付版本所需要的成本和时间很少;

(2)开发由增量表示的小系统所承担的风险不大。

(3)第一个版本发布后,可以减少用户需求变更。

(4)运行增量投资,即在项目开始时,可以仅对一个或两个增量投资

缺点:

(1)如果没有对用户的变更要求进行规划,那么产生的初始增量可能会造成后来增量的不稳定;

(2)如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布;

(3)管理发生的成本、进度和配置的复杂性,可能会超出组织的能力。

3

演化模型

(Evolutionary Model)

定义:针对事先不能完整定义需求的软件开发,在快速开发一个原型的基础上,根据用户意见和建议改进原型,获得原型新版本。重复这一过程,最终可得到令用户满意的软件产品。

优点:

任何功能一经开发就能进入测试,以便验证是否符合产品需求,可以帮助引导出高质量的产品要求。

缺点:

如果不加控制地让用户接触开发中尚未稳定的功能,可能对开发人员及用户都会产生负面影响。

4

螺旋模型

(Spiral Model)

定义:将瀑布模型和演化模型结合起来,加入了两种模型均忽略的风险分析,弥补这两种模型的不足。

将开发过程分为几个螺旋周期,每个螺旋周期大致和瀑布模型相符合,每个螺旋周期分为4个步骤:

(1)制订计划。确定软件目标,选定实施方案,明确项目开发限制条件;

(2)风险分析。分析所选方案,识别风险,消除风险。

(3)实施工程。实施软件开发,验证阶段性产品。

(4)用户评估。评价开发工作,提出修正建议,建立下一个周期的开发计划。

螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,继而做出应有的反应。特别适用于庞大、复杂并且具有高风险的系统。

优点:

(1)与瀑布模型相比,支持用户需求的动态变化,为用户参与关键决策提供了方便,有助于提高软件的适应能力,

(2)为项目管理人员及时调整管理决策提供便利,降低软件开发风险。 缺点:

(1)需要开发人员具有相当丰富的风险评估经验和专门知识。

(2)过多的迭代次数会增加开发成本,延迟提交时间。

5

喷泉模型

(Fountain Model)

定义:是一种以用户需求为动力,以对象为驱动的模型,适合于面向对象的开发方法。

对比瀑布模型:

(1)克服了瀑布模型不支持软件重用和多项开发活动集成的局限性,使开发过程具有迭代性(开发活动常需要重复多次)和无间隙性(在开发活动如分析、设计、编码之间不存在明显边界)。

(2)不同于瀑布模型,按照需求分析、设计和编码顺序进行,而是允许活动同时交叉、迭代地进行。

优点:各阶段没有明显界限,开发人员可以同步进行。提高项目开发效率,节省开发时间。

缺点:

(1)在各开发阶段重叠,需要大量开发人员,不利于项目管理。

(2)要求严格管理文档,使得审核难度加大。