1 瀑布模型怎么来的?
(1)所谓软件危机
瀑布模型算是现代软件工程的起源,软件工程的发展,很大部分都是构建于瀑布模型的基础之上的。在校期间做的项目相对简单,通常不会涉及到诸如性能测试等,通常为边写边改,但是一旦
项目变复杂,开发人员水平参差不齐,从而导致软件开发与维护过程中出现一系列严重问题,这个现象也被称之为“软件危机”。
(2)边写边改的缺点
- 开发的过程不可控
- 项目的人数多了以后,不方便协作分工
- 对需求分析的理解误差,导致返工,从而影响项目交付
- 没有有效的测试,上线问题一堆
(3)瀑布模型的诞生
1970 年,Winston Royce 博士借鉴了其他工程领域的思想,比如建筑工程,提出了瀑布开发模型,指出软件开发应有完整之周期,并将软件开发过程分成了若干阶段。像瀑布一样,从上往下,完成一个阶段继续下一个阶段
2 瀑布模型案例
按照一个我曾经毕业设计的案例
(1) 项目的定义和规划
毕业设计是做一个c++的网络嗅探器,所用库为libpcap,可行性没问题,老师大概给我说了下需要做哪些功能,然后说两个月完成吧。啊,你怕是在开玩笑,当时读本科一天天都是在摸鱼。。初步定下时间吧
需求分析——1 周;
软件设计——1周;
程序编码——4 周;
软件测试——1周。
的确如此,软件测试在当时开来就是功能测试,实现功能就完事,哎!!!
(2) 需求分析阶段
通过查看论文文献,使用viso画了一个项目的结构图,然后去和老师讨论,然后加了一些需求,并需要形成文档,然后再和老师谈论,最终确定了需求的文档,现在的时间变成这个样子。
需求分析——2周;
软件设计——1周;
程序编码——3 周;
软件测试——1周。
需求阶段多花了一周时间,这样子程序的编码就被压缩了一周,因为需要在规定的时间尽量完成任务嘛,毕业要紧!!
(3) 软件的设计
这个时候,老师就对应公司里面的架构师角色,画了一个图说明采用什么架构,用什么来界面展示,数据库采用什么。差不多就确定了,但是我写了差不多一周代码后,老师问我进展,需要我加上一些数据包统计功能等
这样子前前后后,软件的设计花了两周的时间。
需求分析——2周;
软件设计——2周;
程序编码——2 周;
软件测试——1周。
(4)编码
有了文档,开始编码,时间压缩了很多,加班呀,使劲加班!!但是身体受不了,只好问老师能不能往后延迟两周,编码,调试,有时候老师还要加功能,前前后后差不多花了4周时间。这样子相当于项目延期2周。
需求分析——2周;
软件设计——2周;
程序编码——4周;
软件测试——1周。
(5)测试
前期需求多了一周,软件设计多花了一周,在既定的时间里,只能压缩编码和测试的时间,加班!!
综上可知,这样子分层的思想,的确可以在每一步的实施上面可以效率比较高,这种编码前先设计、编码后测试、整个过程重视文档的方式,开发出来的产品,质量相对是有保障的。但是一旦前面某个环节出了问题,返工的操作不是延期就是压缩编码测试的时间。从而成了9116.。。。。。
3 瀑布模型的优缺点
最大的问题就是不能及时响应需求变更,越到后期变更代价越大
优点
- 简单易行
- 可以进行阶段检查,能够及时发现问题
- 较好的分工协作,不同阶段不同职位,架构师,项目经理,开发工程师,测试工程师,运维工程师
- 对质量有一定的保障,因为每个阶段有详细的文档
缺点
- 难以响应需求的变更
- 工作量分配不均匀
- 前期阶段受阻压缩后期进展
4 总结
瀑布模型的出现,也解决了软件项目开发中的几个重要问题。进行了模块划分,各个阶段负责各个阶段的内容,所谓分工明确。质量有了保证,每个阶段都有相应的文档评审,可以帮助大家少走弯路,提高工作效率。