瀑布模型是现代软件工程的起源,软件工程的发展,很大部分都是构建于瀑布模型的基础之上的。起源是1970年,Winston Royce博士借鉴了建筑工程领域的思想,提出了瀑布开发模型,指出软件开发应有完整周期,把软件开发过程分成了若干阶段,类似于瀑布一样,从上往下,完成一个阶段继续下一个阶段。
瀑布模型把整个项目过程分成了六个主要阶段:
一、问题的定义及规划
本阶段是需求方和开发方共同确定软件开发目标,同时做可行性研究,以确定项目可行,这个阶段产生需求文档和可行性研究报告
二、需求分析
对需求方提出的所有需求要进行详细分析和反复确认,以保证能够充分理解客户需求,最终形成需求分析文档。
三、软件设计
根据需求分析结果,对整个软件系统进行抽象和设计,如系统框架设计、数据库设计等,最终形成架构设计文档
四、程序编码
将架构设计和界面设计的结果转换成计算机能运行的程序代码
五、软件测试
编码完成后对可运行的结果对照需求分析文档进行严密测试,提Bug单,最终形成测试报告
六、运行维护
软件开发完成正式投入使用,后续需要继续维护、修复错误和增加功能,交付时需要提供使用说明文档
瀑布模型因其简单可行,切实有效,在很多软件项目中快速应用起来,也有了“软件生命周期(Software Life Cycle,SLC)”概念。现在虽然瀑布模型已经不是最主流的开发模式,但是不管什么开发模式,需求、设计、编码和测试这四项活动都是起源于瀑布模型,也是瀑布模型中核心的部分。
瀑布模型最大问题也就是不能及时响应需求变更,越到后期变更代价越大,而且通常要到后期才能看到项目结果是什么样子;这样会导致开发和测试阶段加班特别严重。
总结:
瀑布模型的出现,解决了软件项目开发中的几个重要问题:
- 让软件开发过程有序可控。瀑布模型每个阶段都有明确任务、交付产物和里程碑,整个过程可控,及早发现问题
- 让分工协作变成可能。瀑布模型的六个阶段,让软件开发产生基础分工:项目经理、产品经理、架构师、软件工程师、测试工程师、运维工程师。
- 质量有保障。瀑布模型每个阶段都需要交付相应的文档,文档的撰写和评审在动手之前都会把问题沟通清楚,编码结束后有严格的测试,测试验收通过才能部署上线,这让软件质量更有保障。