螺旋模型

螺旋模型（Spiral model）是一种演化软件开发过程模型，它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析，使软件在无法排除重大风险时有机会停止，以减小损失。同时，在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。

历史 
螺旋模型由美国软件工程师巴里·勃姆于1988年5月在他的文章《一种螺旋式的软件开发与强化模型》提出。事实上，螺旋模型并不是第一个讨论迭代过程的模型。而它却是第一个解释迭代的重要作用的模型。

步骤 
一个典型的螺旋模型应该由以下的步骤构成：
明确本迭代阶段的目标、备选方案以及应用备选方案的限制；
对备选方案进行评估，明确并解决存在的风险，建立原型；
当风险得到很好的分析与解决后，应用瀑布模型进行本阶段的开发与测试；
对下一阶段进行计划与部署；
与客户一起对本阶段进行评审；

优势 
 通过原型的建立，使软件开发在每个迭代的最初明确方向；
 通过风险分析，最大程度地降低软件彻底失败造成损失的可能性；
 在每个迭代阶段植入软件测试，使每个阶段的质量得到保证；
 整体过程具备很高的灵活性，在开发过程的任何阶段自由应对变化；
 每个迭代阶段累计开发成本，使支出状况容易掌握；
 通过对用户反馈的采集，与用户沟通，以保证用户需求的最大实现；

缺陷 
 过分依赖风险分析经验与技术，一旦在风险分析过程中出现偏差将造成重大损失；
 过于灵活的开发过程不利于已经签署合同的客户与开发者之间的协调；
 由于只适用大型软件，过大的风险管理支出会影响客户的最终收益；

参見 
软件工程
需求分析
瀑布模型
软件测试
项目管理

相关文献 

软件工程
軟體開發