
瀑布式方法是一种线性、顺序的项目管理方法,项目在不同且预先确定的阶段中稳步向下推进。每个阶段必须 100% 完成,才能开始下一个阶段,而且团队很难返回之前的阶段,除非重新开始整个流程。
与敏捷开发灵活且迭代的特性不同,瀑布式开发高度依赖于大量的初期规划、严格的文档记录和固定的时间表。
瀑布式开发的 6 个经典阶段
传统的瀑布式项目严格按照以下连续阶段进行: [11]
- 需求分析:在项目一开始时,收集并记录项目的每一个细节、功能和约束条件。
- 系统设计:架构师根据固定的需求规划技术解决方案、选择编程语言或创建蓝图。
- 实施(开发):实际的构建阶段,团队成员编写软件代码或制造实物产品。
- 集成与测试:将完成的产品组合在一起,并进行严格测试以发现并修复缺陷。
- 部署:将最终定稿、完全完成的产品正式发布给市场、客户或最终用户。
- 维护:产品上线后,提供持续支持、修复漏洞和进行小版本更新。
瀑布式开发的主要特点
- 顺序流转:进度以通过一个阶段的门槛进入下一个阶段为衡量标准。
- 大量文档:在生产开始前,每一个步骤、需求和设计选择都会被细致地记录下来。
- 灵活性低:项目中期更改需求需要经过正式的、通常成本高昂的变更管理流程。
- 价值交付延迟:用户直到整个项目完成,才能看到或使用产品的可用版本。
瀑布式模型优缺点
优点:
- 预期明确:成本、时间表和最终交付成果从一开始就明确定义。
- 易于跟踪:里程碑非常清晰,且易于跟踪,因为截止日期是固定的。
- 结构规范:阶段之间清晰分离,便于管理不同团队(如设计师与开发人员)之间的交接。
缺点:
- 变更困难:如果市场需求或客户目标在项目进行到一半时发生变化,进行调整会极其困难。
- 测试过晚:在项目接近尾声的测试阶段发现严重架构缺陷,修复成本极高。
- 高风险:如果最初的需求存在缺陷,团队面临数月时间都在制造错误产品的风险。
何时选择瀑布式而非敏捷开发
虽然现代软件开发高度倾向于敏捷开发,但对于具有以下特征的项目,瀑布式开发仍是行业标准:
- 固定且不可更改的预算和截止日期。
- 严格的法规和合规要求(如医疗设备、航空航天工程)。
- 物理依赖性导致无法进行迭代(如建造桥梁或摩天大楼)。
- 技术成熟且熟悉团队以前已经多次制造过完全相同的产品。
