软件开发生命周期-教材瀑布模型与互联网真实流程
软件开发生命周期:教材里的瀑布模型与互联网公司的真实流程
学软件工程的时候,我们经常会看到一套很标准的流程:需求分析、概要设计、详细设计、编码、测试、维护。
但真正进入互联网项目组,你会发现大家嘴里说的更多是 PRD、原型图、UI 走查、接口联调、灰度发布、回滚预案。
这不是教材错了,也不是公司流程不专业。两者关注点不一样:教材讲的是软件生命周期的抽象模型,公司用的是围绕业务交付演化出来的协作流程。
先说明一下本文范围:这里说的“教材流程”,主要指软件工程里最经典、最容易入门的瀑布模型;这里说的“工程界流程”,主要指互联网产品团队的常见开发方式。银行核心系统、车载软件、军工、政务、医疗系统这类强合规项目,流程可能会更严格,也可能采用瀑布、V 模型、敏捷的混合方式。
一、教材里的经典流程:瀑布模型怎么拆阶段
瀑布模型的特点是阶段顺序清晰:先把需求说清楚,再做设计,再编码,再测试,最后上线维护。它强调每个阶段都有输入、输出和评审节点。
注意,瀑布模型不是“永远不能回退”。只是越到后面发现问题,回退成本越高。比如测试阶段才发现需求理解错了,修改就不只是改几行代码,而是可能连需求、设计、接口、测试用例都要一起改。

1. 立项与可行性研究
这个阶段解决的是项目到底要不要做。
常见问题包括:
- 技术上能不能实现
- 成本和周期是否可控
- 是否有足够收益
- 是否存在合规或法律风险
常见产出:
- 可行性研究报告
- 项目立项说明
- 初步成本与工期估算
- 风险评估结论
2. 需求分析
这个阶段解决的是软件到底要做什么。
教材里通常会强调软件需求规格说明书,也就是 SRS。它会尽量把功能需求、非功能需求、边界条件、数据要求、异常场景写清楚。
常见产出:
- 软件需求规格说明书
- 用例说明
- 数据需求说明
- 需求评审记录
- 需求跟踪矩阵
3. 概要设计
概要设计解决的是系统整体怎么搭。
它不会直接写到每个函数怎么实现,而是先确定系统骨架,比如模块怎么拆、架构怎么选、核心数据怎么流转、系统之间怎么交互。
常见产出:
- 概要设计说明书
- 系统架构图
- 模块划分图
- 数据模型草图
- 接口概要说明
4. 详细设计
详细设计解决的是每个模块具体怎么实现。
到了这个阶段,设计粒度会更细,开发人员可以根据文档直接编码。比如数据库表结构、接口字段、关键流程、状态流转、异常处理都会被明确下来。
常见产出:
- 详细设计说明书
- 数据库表结构设计
- 接口详细定义
- 类图、时序图、流程图
- 关键算法或业务规则说明
5. 编码实现
编码阶段就是把设计落成代码。
教材里这个阶段看起来很简单,但实际项目里会涉及编码规范、代码审查、单元测试、分支管理、构建脚本等内容。
常见产出:
- 源代码工程
- 单元测试用例
- 开发自测记录
- 代码评审记录
- 可构建的软件版本
6. 测试验证
测试阶段解决的是软件是否符合需求,质量是否达到交付要求。
常见测试层次包括单元测试、集成测试、系统测试、验收测试。越靠后越接近真实业务场景,越能发现跨模块、跨系统的问题。
常见产出:
- 测试计划
- 测试用例
- 缺陷清单
- 测试报告
- 验收报告
7. 运行与维护
软件交付上线后,并不代表生命周期结束。
真正投入使用后,还会出现环境变化、业务变化、缺陷修复、性能优化、安全加固、版本升级等问题。维护阶段通常是软件生命周期里最长的阶段。
常见产出:
- 用户手册
- 运维手册
- 故障处理记录
- 版本变更记录
- 退役评估报告
二、互联网产品团队:一个版本通常怎么落地
互联网团队不是没有生命周期,而是把生命周期压缩进一个个版本里。
一个需求不会等一年才完整交付,而是会拆成多个版本,按周、双周、月度节奏迭代。每个小版本都要经历需求、设计、开发、测试、发布、反馈,只是文档更轻,协作更密,反馈更快。

1. 立项与商业评估
工程里的立项不只是技术能不能做,更关心业务值不值得做。
产品负责人、业务方、技术负责人会一起判断目标、收益、成本、风险和优先级。对于大需求,还会提前做技术预研,避免产品方案定完后才发现技术成本不可接受。
常见产出:
- BRD 或 MRD
- 项目背景说明
- 目标与指标
- 人力与排期预估
- 技术预研结论
2. 需求定义与交互原型
互联网团队不会只靠一份纯文字需求文档推进开发。
产品经理通常会写 PRD,同时给出页面流程、线框图或可点击原型。这样开发、测试、设计、业务方可以围绕同一个可视化对象讨论,减少“你以为”和“我以为”。
常见产出:
- PRD
- 页面流程图
- 线框图
- 可点击原型
- 需求评审纪要
- 需求优先级清单
3. UI / UX 设计
对于 C 端 App、Web 产品、运营活动页来说,UI 和 UX 是非常关键的独立环节。
设计师会基于原型输出高保真设计稿、组件状态、异常状态、空页面、加载态、动效说明等内容。开发并不是只看一张漂亮的图,而是要根据设计稿还原真实交互。
但要注意,纯后端系统、中间件、SDK、基础设施项目未必有 UI 阶段。它们的“设计重点”更多会体现在接口设计、架构设计、数据模型和运维方案上。
常见产出:
- 高保真设计稿
- 设计规范
- 组件库说明
- 标注与切图资源
- 动效说明
4. 技术方案设计
这个阶段对应教材里的概要设计和详细设计,但互联网项目通常不会把两个阶段切得特别死。
常见做法是技术负责人先把核心方案说清楚:系统怎么改、接口怎么定、数据表怎么设计、是否影响老版本、是否需要灰度、是否有回滚方案。
常见产出:
- 技术方案设计文档
- API 接口文档
- 数据库设计文档
- 核心流程图
- 兼容与灰度方案
- 测试关注点
5. 开发、自测与联调
开发阶段不是每个人关起门来写自己的模块。
前端、后端、客户端经常需要并行开发。接口没完成时可能先用 Mock 数据,接口完成后再进入联调。联调是工程界非常真实的一环,因为很多问题不是单模块内部 bug,而是字段理解、状态流转、异常处理、版本兼容上的问题。
常见产出:
- 可运行代码
- 单元测试结果
- 开发自测记录
- 联调环境
- 联调问题清单
6. 测试与 UAT 验收
测试团队会根据需求文档、原型、设计稿、接口文档编写测试用例,覆盖功能、兼容、性能、安全、异常场景等内容。
同时,产品经理或业务方会做 UAT,也就是用户验收测试。测试关注“有没有 bug”,产品和业务更关注“是不是我要的效果”。
常见产出:
- 测试用例
- 测试执行报告
- 缺陷清单
- 回归测试记录
- UAT 验收结论
7. 灰度发布与上线
上线在教材里常被归到维护阶段,但在互联网团队里通常会被单独拎出来。
因为上线不是点一下发布按钮。稍微成熟一点的团队都会考虑灰度策略、监控指标、回滚预案、数据校验、用户影响范围。尤其是客户端、支付、账号、订单这类核心链路,更不可能无脑全量发布。
常见产出:
- 发布计划
- 灰度方案
- 回滚预案
- 部署记录
- 上线验收单
- 发布公告
8. 数据复盘与下一轮迭代
互联网产品上线后,真正的反馈才开始。
团队会看埋点数据、转化率、留存、崩溃率、接口耗时、用户反馈和客服问题。然后再决定是继续优化、补需求、修 bug,还是停止投入。
常见产出:
- 版本发布日志
- 数据复盘报告
- 线上故障记录
- 运营反馈
- 下一轮需求池
三、横向对比:两套流程到底差在哪
教材流程和互联网流程不是简单的谁先进、谁落后。
教材里的模型更像“抽象骨架”,帮助你理解软件从想法到交付的基本阶段。互联网流程更像“团队协作手册”,把这些阶段拆成产品、设计、开发、测试、运维之间可以执行的动作。

| 教材里的瀑布模型 | 互联网团队常见流程 | 主要差异 |
|---|---|---|
| 可行性研究 | 立项、商业评估、技术预研 | 教材更重论证完整性,互联网更重投入产出和优先级 |
| 需求分析 | PRD、原型图、需求评审 | 教材偏文字规格说明,互联网会把需求可视化 |
| 概要设计 | 架构设计、模块划分、技术方案 | 教材强调系统结构,互联网强调能否支撑当前版本落地 |
| 详细设计 | 接口设计、数据库设计、核心流程设计 | 教材文档更完整,互联网更看重关键风险点是否说清楚 |
| 编码实现 | 开发、自测、前后端联调 | 教材偏单阶段描述,互联网更强调多人协作和联调成本 |
| 软件测试 | 功能测试、回归测试、专项测试、UAT | 教材关注需求符合性,互联网还关注产品体验和业务验收 |
| 运行维护 | 灰度发布、监控、故障处理、持续迭代 | 教材把上线后统称维护,互联网会把发布和迭代单独管理 |
1. 流程逻辑不同
教材里的瀑布模型强调顺序推进,适合讲清楚每个阶段的职责和边界。
互联网产品流程更强调迭代推进。一个大需求会被拆成多个小版本,每个版本都走一遍小型生命周期。
2. 文档重心不同
教材更重标准文档,比如需求规格说明书、概要设计、详细设计、测试报告。
互联网团队也需要文档,但文档通常更轻,更贴近协作。PRD、原型图、接口文档、设计稿、发布计划、回滚预案,都是为了让团队尽快对齐并安全交付。
3. 角色分工不同
教材里的角色划分通常比较抽象,比如系统分析员、设计人员、程序员、测试人员。
互联网团队的角色颗粒度更细:产品经理、交互设计师、UI 设计师、前端、后端、客户端、测试、DevOps、运营、数据分析都可能参与同一个版本。
4. 适用场景不同
瀑布模型或偏瀑布的流程,更适合需求稳定、合同边界清晰、合规要求强、交付文档要求高的项目。
互联网迭代流程,更适合需求变化快、重视用户反馈、需要持续试错和快速发布的产品。
5. 真实项目经常是混合流程
很多公司并不是纯瀑布,也不是纯敏捷。
比如一个金融 App,需求立项和合规评审可能很瀑布;App 端页面优化可能很敏捷;底层支付链路又会非常严格,发布前要经过多轮灰度和审批。
所以不要纠结“到底哪套流程正确”。更现实的判断方式是:这个项目需求稳不稳定、风险高不高、合规强不强、反馈快不快。
四、给开发者的理解方式
如果你是开发者,可以这样理解两套流程:
- 教材里的流程,是为了让你知道软件工程的完整骨架。
- 公司里的流程,是为了让一个团队能把需求安全、稳定、可控地交付出去。
- PRD 不是需求分析的替代品,而是需求分析在产品团队里的落地形式。
- 原型图和 UI 稿不是“美工环节”,而是降低沟通成本的重要交付物。
- 联调不是多余流程,而是跨端、跨系统协作时必然出现的质量关口。
- 灰度和回滚不是运维小事,而是互联网产品降低上线风险的核心手段。
一句话总结:
教材教你软件生命周期的底层逻辑,公司教你多人协作时怎么把软件真正交付出去。
参考来源
- W. W. Royce, Managing the Development of Large Software Systems, 1970:https://dl.acm.org/doi/10.5555/41765.41801
- Agile Manifesto, Principles behind the Agile Manifesto:https://agilemanifesto.org/principles.html
- The 2020 Scrum Guide:https://scrumguides.org/scrum-guide.html
- Atlassian, What is Software Development Life Cycle:https://www.atlassian.com/agile/software-development/sdlc
- Atlassian, What is the Waterfall Methodology:https://www.atlassian.com/agile/project-management/waterfall-methodology
- IBM, What is the Software Development Lifecycle:https://www.ibm.com/think/topics/sdlc
评论