瀑布模型将软件生命周期划分为软件计划、需求分析、软件设计、程序编码、软件测试和运行维护六个基本阶段,它们是自上而下的固定步骤,形如瀑布。
优点:每个阶段都有明确的任务,每个阶段都必须提交相应的文档,项目的推进会严格按照流程顺序推进,会有严密的测试,测试通过后才会上线。
缺点:如果测试不通过会输出对应要修改的需求报告,开发模型呈现线性,严重依赖各个阶段输出的项目文档,脱离用户需求,用户需要整个开发过程结束才能看到开发结果,最终有可能满足不了用户的真正需求。尤其是需求模糊的系统不适用瀑布模型,不但会增加各个阶段项目文档的输出难度,也会增加开发风险。