瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。在瀑布模型中,软件开发的各项活动严格按照线性方式进行,必须等前一阶段的工作完成之后,才能开始后一阶段的工作;前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确结果。
快速模型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品所能完成的功能的一个子集。和瀑布模型一样,软件产品的开发基本上是线性顺序进行的。和瀑布模型不同的是,快速原型模型是不带反馈环的。快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。
增量模型也称为渐增模型,使用增量模型开发软件产品时,把软件产品作为一系列的增量构件来设计·编码·集成和测试。每个构件有多个相互作用的模块构成,并且能够完成特定的功能。与瀑布模型或快速原型模型一次就把一个满足所有需求的产品提交给客户的目标相反,增量模型分批地逐步向用户提交产品,整个软件产品被分解成许多个增量构件,开发人员一个构件接一个构件地向用户提交产品。在开发过程中,需求的变化是不可避免的。增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程的控制失去整体性。
螺旋模型将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。一个阶段首先是确定该阶段的目标,完成这些目标的选择方案及其约束条件,然后从风险角度分析方案的开发策略,努力排除各种潜在的风险,有时需要通过建造原型来完成。如果某些风险不能排除,该方案立即终止,否则启动下一个开发步骤。最后,评价该阶段的结果,并设计下一个阶段。
人们在面对复杂的非线性问题时,总是将其分解和转化为一系列的线性问题去解决。瀑布模型就是一个严格按照线性方式进行的线性模型,再比如增量模型实质就是分段的线性模型,螺旋模型则是接连的弯曲了的线性模型,在其它模型中也能够找到线性模型的影子。领会到线性精神对我们非常有用。