瀑布模型也称软件生存周期模型。
优点:
它在软件工程中占有重要地位,它提供了软件开发的基本框架,这比依靠“个人技艺”开发软件好得多。
它有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究与使用,从而提高了大型软件项目开发的质量和效率。
缺点:
阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;
由于开发模型是线性的用户只有等到整个过程的末期才能见到开发成果,从而卡增加了开发的风险;
早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重后果。
适用范围
(1)在开发时间内需求没有或很少变化;
(2)分析设计人员应对应用领域很熟悉;
(3)低风险项目(对目标、环境很熟悉);
(4)用户使用环境很稳定;用户除提出需求以外,很少参与开发工作。
快速原型模型
优点:
可以得到比较良好的需求定义,容易适应需求的变化;
有利于开发与培训的同步;
开发费用低、开发周期短且对用户更友好。
缺点:
客户与开发者对原型理解不同;
准确的原型设计比较困难;
不利于开发人员的创新。
使用范围:
对所开发的领域比较熟悉而且有快速的原型开发工具;
项目招投标时,可以以原型模型作为软件的开发模型;
进行产品移植或升级时,或对已有产品原型进行客户化工作时,原型模型是非常适合的。
增量模型
优点:
采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源;
如果核心产品很受欢迎,则可增加人力实现下一个增量;
可先发布部分功能给客户,对客户起到镇静剂的作用。
缺点:
并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构;
增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。
使用范围:
进行已有产品升级或新版本开发,增量模型是非常适合的;
对完成期限严格要求的产品,可以使用增量模型;
对所开发的领域比较熟悉而且已有原型系统,增量模型也是非常适合的。
螺旋模型
优点:
设计上的灵活性,可以在项目的各个阶段进行变更;
以小的分段来构建大型系统,使成本计算变得简单容易;
客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性;
随着项目推进,客户始终掌握项目的最新信息 , 从而他或她能够和管理层有效地交互。
缺点:
采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标识风险,势必造成重大损失;
过多的迭代次数会增加开发成本,延迟提交时间。
使用范围:
螺旋模型只适合于大规模的软件项目。