螺旋模型是一个演化软件过程模型,将原型实现的迭代特征与瀑布模型的系统化结合起来,使得软件的增量版本的快速开发成为可能。在螺旋模型中,软件开发是一系列的增量发布。在早期的迭代中,发布的增量可能是一个纸上的模型或原型,在以后的迭代中,被开发系统的更加完善的版本逐步产生,螺旋模型的整个开发过程,如下图所示:
图中的螺旋线代表随着时间推进的工作进展,开发过程具有周期性重复的螺旋线状。四个象限分别代表每个周期所划分的四个阶段:
制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件。风险分析:分析评估所选方案,考虑如何识别和消除风险。实施工程:实施软件开发和验证。客户评估:评价开发工作,提出修正建议,制定下一步计划。螺旋模型强调了风险分析,特别适用于庞大而复杂的、高风险的系统。下图代表着螺旋法能够解决的各种问题:

经常遇到的问题
螺旋模型的解决方案
用户需求不够充分
允许并鼓励用户反馈信息
沟通不明
在项目早期就消除严重的曲解
刚性的体系
开发人员首先关注重要的业务和问题
主观臆断
通过测试和质量保证,作出客观的评估
潜在的不一致
在项目早期就发现不一致的问题
糟糕的测试和质量保证
从第一次迭代就开始测试
采用瀑布法开发
在早期就找出并关注风险
优点:
设计上的灵活性,可以在项目的各个阶段进行变更。以小的分段来构建大型系统,使成本计算变得简单容易。客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。随着项目推进,客户始终掌握项目的最新信息,从而他能够和管理层有效地交互。客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。缺点:
很难让用户确信这种演化方法的结果是可以控制的。建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大差距,无法满足当前用户需求。