瀑布模型
1970 年温斯顿·罗伊斯(Winston Royce)提出了著名的“瀑布模型”,直到20 世纪80 年代早期,它一直是唯一被广泛采用的软件开发模型,瀑布模型是由瀑布开发模型演变而来的。
瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护六项基本活动,其过程是将上一项活动接收的工作对象作为输入,当该项活动完成后会输出该项活动的工作成果,并将该项成果作为下一项活动的输入。该模型规定这六项基本活动自上而下、固定相互衔接的次序,如同瀑布流水,逐级下落。从本质上讲,它是一个软件开发架构,开发过程是通过一系列阶段顺序展开的,从需求分析直到产品发布和维护。如果在其中某个阶段有信息未被覆盖或有问题,那么就得返回到上一个阶段,并对这些阶段进行适当的修改才能进入下一个阶段,这样每个阶段都会产生循环反馈,开发过程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来,瀑布模型如图2-3 所示。

瀑布模型的核心思想是按工序将问题简化,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。
瀑布模型的优点如下:
1)为项目提供了按阶段划分的检查点;
2) 当前一阶段完成后,只需要关注后续阶段;
3)可在迭代模型中应用瀑布模型,如图2-4 所示
增量迭代应用于瀑布模型,迭代1 解决最大的问题,每次迭代产生一个可运行的版本,同时增加更多的功能,但每次迭代必须经过严格的质量和集成测试。
瀑布模型有以下缺点:
1)项目中各个阶段之间极少有反馈;
2)只有在项目生命周期的后期才能看到结果;
3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。