前言
这是基于我所学习的软件工程课程总结的第二篇文章。
在20世纪80年代之前,瀑布模型一直是唯一被广泛采用的生命周期模型,现在它仍然是软件工程中应用得最广泛的过程模型。传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述。
正文
1.瀑布模型的基本概况
- Winston Royce1970年提出的第一个软件过程模型
- 软件开发过程与软件生命周期模型一致
- 瀑布模型也被称为经典生命周期模型
- 规定了各项软件工程活动,以及它们自上而下,相互衔接的固定次序,如同瀑布流水逐级下落。
2.瀑布模型的特点
- 是一种使用广泛,以文档为驱动的模型
- 每个阶段都有与其相关联的里程碑和可交付产品
- 每个阶段结束前完成文档审查,及早改正错误
- 线性模型
- 阶段间具有顺序性和依赖性
- 推迟实现的观点
- 一直被用来规范软件开发活动
- 很多其它模型都是在瀑布模型基础上的改进
- 质量保证的观点
3.实际的瀑布模型 (带反馈)
传统的瀑布模型过于理想化了,工作中不可能不犯错误。因此,实际的瀑布模型是带“反馈环”的。
- 当后面阶段发现前面阶段的错误,则沿反馈线返回并修正单元测试系统测试验收测试
- 对软件的维护,则反馈到相应的阶段
4.瀑布模型的缺点
增加工作量
各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量
早期错误发现晚
早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果
开发风险大
由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险
不适应需求变化
不能反映实际的开发方式,软件开发需要迭代;无法适应需求不明确和需求的变化
阶段间具有顺序性和依赖性
①必须等前一阶段的工作完成之后,才能开始后一阶段的工作;②前一阶段的输出文档就是后一阶段的输入文档,因此,只有前一阶段的输出文档正确,后一阶段的工作才能获得正确的结果
5.瀑布模型的优点
- 可强迫开发人员采用规范的方法(例如,结构化技术);
- 严格地规定了每个阶段必须提交的文档;
- 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
6.瀑布模型适用的场合
适用于系统需求明确且稳定,技术成熟,工程管理严格的场合,如军工、航天、医疗。