1. 瀑布模型
瀑布模型遵循软件生存周期的划分,各个工作阶段按生命周期顺序展开,就像瀑布流水一样,最终得到所开发的软件产品。瀑布模型要求在软件开发阶段的前期即软件的分析和设计阶段把需求、设计工作做好然后按照所预定的需求和设计完成软件的开发,有点儿一气呵成的意思。由于瀑布模型的软件开发都是按照需求设计来完成的所以前期的需求设计非常重要,所以瀑布模型开发的一个重要特点就是要求软件需求要明确。如果无法解决软件需求的不明确或不准确的问题,会给软件的开发带来严重的影响,最终导致开发出的软件不符合用户的需求而废弃。因此也暴露出瀑布模型的一个缺陷缺乏灵活性。
优点
1)为项目提供了按阶段划分的检查点。
2)当前一阶段完成后,您只需要去关注后续阶段。
3)可在迭代模型中应用瀑布模型。
缺点
1)在项目各个阶段之间极少有反馈。
2)只有在项目生命周期的后期才能看到结果。
3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。
4)瀑布模型的突出缺点是不适应用户需求的变化.
2. 快速原型模型
快速原型模型就是在软件的开发阶段的前期首先快速建立一个可以在计算机上运行并且具有最终产品功能的一个 子功能,然后在此基础上再根据用户的需求逐步扩展、完善软件的功能。快速原型模型的开发模式有助于满足用户的真实需求,能通过与用户的交互得到验证不会因为需求文档的错误而进行较大的返工,开发出来的产品也不会因为不满足客户的需求而夭折。
优点:克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险
缺点:所选用的开发技术和工具不一定符合主流的发展;快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。
3. 螺旋模型
螺旋模型是瀑布模型和快速原型模型的结合,它是在软件生命周期的不同阶段以原型为基础按照指定计划、风险分析、实施工程、客户评估四个步骤进行迭代直到软件功能实现为止。
优点
1)设计上的灵活性,可以在项目的各个阶段进行变更。
2)以小的分段来构建大型系统,使成本计算变得简单容易。
3)客户始终参与每个阶段的开发,保证了项目不偏离正确方向以及项目的可控性。
4)随着项目推进,客户始终掌握项目的最新信息, 从而他或她能够和管理层有效地交互。
5)客户认可这种公司内部的开发方式带来的良好的沟通和高质量的产品。
缺点
很难让用户确信这种演化方法的结果是可以控制的。建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。
4. 增量模型
增量模型的开发模式给人一种组合拼装的感觉是一种非整体开发模型他与瀑布模型有着本质的区别,瀑布模型属于整体开发模型它要求所有的开发工作按一定的顺序执行,而增量模型属于非整体开发模型。增量模型开发中第一个增量实现了基本的需求,很多的补充功能为增量来为产品完善。
优点:
采用增量模型的优点是人员分配灵活,刚开始不用投入大量人力资源。如果核心产品很受欢迎,则可增加人力实现下一个增量。当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径。这样即可先发布部分功能给客户,对客户起到镇静剂的作用。此外,增量能够有计划地管理技术风险。
缺点:
1)由于各个构件是逐渐并入已有的软件体系结构中的,所以加入构件必须不破坏已构造好的系统部分,这需要软件具备开放式的体系结构。
2) 在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程的控制失去整体性。
3)如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析,这种模型将功能细化后分别开发的方法较适应于需求经常改变的软件开发过程。