
2.6 螺旋模型
1988年,Barry Boehm提出了螺旋模型(Spiral Model)。
1.模型的本意
螺旋模型将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适用于大型复杂系统。螺旋模型的基本做法是:在瀑布模型的每一个开发阶段前,引入一个非常严格的风险识别、风险分析和风险控制机制,它把软件项目分解成一个个小项目。每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定,如图2-4 所示。螺旋模型沿着螺旋线顺时针方向进行若干次迭代,图中的4个象限代表了以下迭代活动:

图2-4 螺旋模型
(1)制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件。
(2)风险分析:分析评估所选方案,考虑如何识别和消除风险。
(3)实施工程:实施软件开发和验证。
(4)客户评估:评价开发工作,提出修正建议,制定下一步计划。
2.模型的特点
螺旋模型的特点是:
(1)由软件开发过程组成一个逐步细化的螺旋周期,每经历一个周期,系统就得到进一步的细化和完善。
(2)整个模型紧密围绕开发中的风险分析,推动软件设计向深层扩展和求精。
(3)强调持续的判断、确定和修改用户的任务目标,并按成本、效益来分析候选软件产品对任务目标的贡献。
3.选择模型的条件
螺旋模型强调风险分析,使开发人员和用户对每个演化层出现的风险有所了解,继而做出应有的反应,它特别适用于庞大、复杂并具有高风险的系统。对于这些系统,风险是软件开发不可忽视且潜在的不利因素,它可能在不同程度上损害软件开发过程,影响软件产品的质量。减小风险的目标是在造成危害之前,及时对风险进行识别及分析,决定采取何种对策,消除或减少风险的损害。
4.模型的优点
螺旋模型的优点是:
(1)与瀑布模型相比,螺旋模型支持用户需求的动态变化,为用户参与软件开发的所有关键决策提供方便,有助于提高目标软件的适应能力。它为项目管理人员及时调整管理决策提供了便利,从而降低了软件开发风险。
(2)螺旋模型对可选方案和约束条件的强调,有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标。
(3)减少了过多测试(浪费资金)或测试不足(产品故障多)所带来的风险。
(4)螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。因此,软件维护得到了根本的重视。
5.模型的缺点
螺旋模型的缺点是:
(1)很难让用户确信这种演化方法的结果是可以控制的。由于建设周期长,软件技术发展快,所以经常出现软件开发完毕时,和当前的技术水平有了较大差距,无法满足当前用户需求。
(2)采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失。
(3)过多的迭代次数会增加开发成本,延迟提交时间。