瀑布模型  

把每个阶段当成瀑布中的一个阶梯,强调由上而下,互相衔接、逐级下落,固定次序。

优点:开发阶段清晰,便于评审、审计、跟踪、管理和控制

缺点:不可逆或很难可逆

     问题会积累,错误会传递发散扩大,导致成本和质量失控

快速原型模型(原型模型)

快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌。

优点:克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险

缺点:所选用的开发技术和工具不一定符合主流的发展,快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。

增量模型 

增量模型也称为渐增模型。增量模型融合了瀑布模型的基本成分和原型实现的迭代特征,该模型采用随着日程时间的进展而交错的线性序列,每一个线性系列产生软件的一个可发布的增量。

优点:人员分配灵活,开始不用投入大量的人力资源。如果核心产品很受欢迎,则可增加人力实现下一个增量。增量能够有计划的管理技术风险。

缺点:由于各个构件是逐渐并入已有的软件体系结构中,所以加入构件必须不破坏以构好的的系统部分,这需要软件具备开放式的体系结构。

      在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改的模型,从而使软件过程的控制失去整体性。

     如果增量包之间存在相交的情况且未很好处理,则必须做全盘系统分析,这种模型将功能细化后分别开发的方法较适应于需求经常改变的软件开发过程。

螺旋模型

螺旋模型采用一种周期性的方法来进行系统开发。

优点:设计上的灵活,可以在项目的各个阶段进行变更。

     以小的分段来构建大型系统,使成本计算变得简单容易。

     客户始终参与每个阶段的开发,保证了项目部偏离正确方向以及项目的可控性。

缺点:建设周期长,而软件技术发展比较快,所以经常出现软件开发完毕后,和当前的技术水平有了较大的差距,无法满足当前用户需求。

喷泉模型

喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于采用对象技术的软件开发项目。

优点:需要分析活动结束后才开始设计活动,设计活动结束后才开始编码活动。该模型各个阶段没有明显的界限,开发人员可以同步进行开发。其优点是可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。

缺点:由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。

     此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面向可能随时加入各种信息、需求与资料的情况。