瀑布模型(Waterfall Model) 是软件工程中最早、最经典的生命周期模型之一,由温斯顿·罗伊斯(Winston Royce)在1970年提出。它将软件开发过程划分为一系列线性且顺序依赖的阶段,每个阶段必须在下一个阶段开始前完成,整个流程形如“瀑布”倾泻而下。
瀑布模型的六个核心阶段:
-
计划(Planning)
- 明确项目目标、范围、资源、预算和时间表。
- 进行可行性分析(技术、经济、操作可行性)。
- 输出:项目计划书、可行性研究报告。
-
需求分析(Analysis / Requirements Gathering)
- 与用户沟通,收集并定义功能与非功能需求。
- 编写《软件需求规格说明书》(SRS, Software Requirements Specification)。
- 需求必须完整、明确、可验证。
-
系统设计(Design)
- 将需求转化为系统架构和技术方案。
- 分为:
- 概要设计:模块划分、接口设计、技术选型。
- 详细设计:模块内部逻辑、数据结构、算法设计。
- 输出:《概要设计说明书》《详细设计说明书》。
-
编码实现(Programming / Implementation)
- 根据设计文档进行程序编写。
- 使用选定语言和工具开发系统功能。
- 强调代码规范、版本控制和单元测试。
-
测试(Testing)
- 对系统进行全面测试以发现缺陷。
- 包括:单元测试 → 集成测试 → 系统测试 → 验收测试。
- 目标是确保软件满足需求且稳定可靠。
-
运行与维护(Maintenance)
- 软件上线部署后进入使用阶段。
- 维护类型包括:
- 更正性维护(修复Bug)
- 适应性维护(适配新环境)
- 完善性维护(新增功能或优化性能)
- 预防性维护(提升可维护性)
瀑布模型的特点
| 特点 | 说明 |
|---|---|
| ✅ 结构清晰 | 每个阶段有明确定义的任务和产出物,易于管理。 |
| ✅ 文档驱动 | 强调阶段性文档输出,便于追溯和审查。 |
| ❌ 缺乏灵活性 | 一旦进入下一阶段,很难回溯修改前期决策。 |
| ❌ 风险滞后 | 错误往往到测试阶段才被发现,修复成本高。 |
| ❌ 不适合需求变化频繁的项目 | 用户只有到最后才能看到成品,反馈延迟严重。 |
适用场景
- 需求明确且稳定不变的项目(如军工、航天系统)。
- 开发团队经验丰富,技术路径清晰。
- 有严格合规要求或需要完整文档存档的行业(如医疗、金融)。
# 示例:瀑布模型中各阶段对应的主要输出文档
artifacts = {
"计划": ["项目计划书", "可行性报告"],
"分析": ["软件需求规格说明书(SRS)"],
"设计": ["概要设计说明书", "详细设计说明书"],
"编程": ["源代码", "单元测试报告"],
"测试": ["测试用例", "系统测试报告"],
"维护": ["维护记录", "更新日志"]
}


1956

被折叠的 条评论
为什么被折叠?



