螺旋模型(Spiral Model)
什麽是螺旋模型
1988年,巴利·玻姆Barry Boehm正式发表了软体系统开发的"螺旋模型",它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合於大型复杂的系统.
螺旋模型采用一种周期性的方法来进行系统开发.这会导致开发出众多的中间版本.使用它,项目经理在早期就能够为客户实证某些概念.该模型是快速原型法,以进化的开发方式为中心,在每个项目阶段使用瀑布模型法.这种模型的每一个周期都包括需求定义、风险分析、工程实现和评审4个阶段,由这4个阶段进行迭代.软体开发过程每迭代一次,软体开发又前进一个层次.采用螺旋模型的软体过程如下图所示:
螺旋模型基本做法是在"瀑布模型"的每一个开发阶段前引入一个非常严格的风险识别、风险分析和风险控制,它把软体项目分解成一个个小项目.每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定.
螺旋模型强调风险分析,使得开发人员和用户对每个演化层出现的风险有所了解,继而做出应有的反应,因此特别适用於庞大、复杂并具有高风险的系统.对於这些系统,风险是软体开发不可忽视且潜在的不利因素,它可能在不同程度上损害软体开发过程,影响软体产品的质量.减小软体风险的目标是在造成危害之前,及时对风险进行识别及分析,决定采取何种对策,进而消除或减少风险的损害.
螺旋模型的优缺点
1、螺旋模型的优势包括:
1)设计上的灵活性,可以在项目的各个阶段进行变更.
2)以小的分段来构建大型系统,使成本计算变得简单容易.
3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性.
4)随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互.
5)客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品.
螺旋模型很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及经常发生的回圈之前,都必须首先进行风险评估.在实践中,螺旋法技术和流程变得更为简单.迭代方法体系更倾向於按照开发/设计人员的方式工作,而不是项目经理的方式.螺旋模型中存在众多变数,并且在将来会有更大幅度的增长,该方法体系正良好运作着.下表是螺旋法能够解决的各种问题:
| 經常遇到的問題 |
螺旋模型的解決方案 |
| 用戶需求不夠充分 |
允許並鼓勵用戶反饋信息 |
| 溝通不明 |
在項目早期就消除嚴重的曲解 |
| 剛性的體系(Overwhelming architectures) |
開發首先關註重要的業務和問題 |
| 主觀臆斷 |
通過測試和質量保證,作出客觀的評估 |
| 潛在的不一致 |
在項目早期就發現不一致問題 |
| 糟糕的測試和質量保證 |
從第一次迭代就開始測試 |
| 採用瀑布法開發 |
在早期就找出並關註風險 |