一、简介
瀑布模型(Waterfall Model)是最早出现的软件开发模型,是传统软件开发方法的代表。在软件工程中占有重要的地位,它提供了软件开发的基本框架。最早于20世纪70年代由温斯顿·罗伊斯(Winston Royce)提出,而在当时软件开发技术水平和经济大背景下,并不像我们所熟知的当下,技术发展这么成熟。创建瀑布模型的早期,其核心思想很明确,按工序(线性)排列将问题简化,把功能实现与设计分开,目的是方便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。作为软件开发领域常用的生命周期方法,其各项活动按照固定的工序线性推进,形如瀑布流水,因此得名。
瀑布模型强调各工作之间的顺序性和依赖性,前一阶段工作的结束即是后一阶段工作的开始,因此特别关注需求分析的预先定义,整个开发流程按照顺序逐一进行。瀑布模型最主要的优点在于重视阶段管理,确保阶段成果的质量。
瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求、分析、设计、编码、测试的步骤顺序进行。
1.1 瀑布模型
瀑布模型包含五步工序
:
- 需求(Requirement):了解产品所需的功能、用途,获取用户需求。
- 设计(Design):确定达成项目成功所需的软件、硬件要求,并将这些要求(需求)转化为物理设计。
- 实施(Impementation):根据设计规划,编写代码。
- 验证(Verification)::测试调优,确保产品符合客户期望。
- 维护(Maintenance)::持续为客户提供修复等服务。
二、瀑布模型的特点和逻辑
2.1 瀑布模型的特点
-
特点:
瀑布模型将软件生命周期划分为 制定计划、需求分析、软件设计、程序编写、软件测试和运行维护 等六个基本活动,并且规定了它们 自上而下、相互衔接的固定次序 ,如同瀑布流水,逐级下落。其严格强调文档
,前一个阶段的输出就是下一个阶段的输入,文档是个阶段衔接的唯一信息。所以很多开发人员好象是在开发文档,而不是开发软件,因为要到开发的后期,才可以看到软件的“模样”。
- 优点:
- 结构化清晰,为项目提供了按阶段划分的检查点。
- 当前一阶段完成后,开发团队只需要关注后续的阶段即可。
- 可在迭代模型中应用瀑布模型。(增量迭代应用于瀑布模型。迭代1解决最大的问题。每次迭代产生一个可运行的版本,同时增加更多的功能。每次迭代必须经过质量和集成测试。)
- 它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。
- 缺点:
- 各个阶段的划分完全固定,阶段与阶段之间极少有反馈,所以对客户需求的理解程度高低不等,开发人员更像是定义为流水线上的工人。阶段之间产生大量的文档,极大地增加了工作量。
- 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。
- 通过过多的强制性时间约束或里程碑来跟踪项目的每个阶段。
- 线性阶段自上而下,不可逆,不适应用户需求的变化,对客户不友好。
-
适用场景:
对于需求相对稳定的大项目,如果正确使用,可以节省大量的时间和金钱。所以是否使用这一模型主要取决于您是否能理解客户的需求以及在项目的进程中这些需求的变化程度,对于经常变化的项目而言,瀑布模型毫无价值,对于这种情况,您可以考虑其他的架构来进行项目管理,比如名为螺旋模型(spiral model)的方法。
2.2 瀑布模型背后的逻辑
瀑布模型核心思想是按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。将软件生命周期]划分为制定计划
、需求分析
、软件设计
、程序编写
、软件测试
和运行维护
等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
• 由 Leung 写于 2023 年 4 月 16 日