软件项目开发全流程 · 第 36 课 · 全流程综合案例(结课)
1、把 35 课串成一条线
前面 35 课,我们像拆零件一样,把软件生命周期的每一环都讲了一遍。但真实的项目不是按课本章节顺序发生的——它是交织的、迭代的、充满取舍的。
这最后一课,我们用一个完整的虚构案例,把六阶段从头到尾走一遍,看看这些知识在实际中怎么串起来用。这也是全课程的收束。
2、案例背景:校园二手交易平台 "CampusTrade"
项目:校园二手交易平台 CampusTrade
团队:3 人(2 开发 + 1 兼职设计)
目标:让学生在校内买卖二手书、电子产品、生活用品
约束:预算少、2 个月出 MVP、团队都是学生(第一次做完整项目)我们跟着它,走过六大阶段。
3、第一阶段:立项与规划(第 1~5 课)
做了什么:
- 问题与机会(第 2 课):校园二手交易靠微信群,信息易沉底、无法搜索、交易无保障。痛点真实存在。
- 商业论证:不追求盈利,目标是"服务校园 + 团队练手"。目标清晰,避免过度设计。
- 可行性:技术可行(Web 应用)、时间可行(MVP 只做核心)、成本可行(学生免费额度/云服务)。
- MVP 范围(第 4 课):只做发布物品、浏览搜索、联系卖家三件事。砍掉聊天、支付、评价、推荐。
- 项目章程:明确目标、范围、干系人(学生用户、学校、团队)、成功标准(100 个发布、50 次成交)。
- 计划与估算(第 5 课):用故事点 + 规划扑克估,留 30% 缓冲,排关键路径(登录 → 发布 → 搜索)。
关键取舍:砍需求是这一阶段最重要的动作。什么都想做 = 什么都做不完。
4、第二阶段:需求与设计(第 6~11 课)
做了什么:
- 需求获取(第 6 课):访谈 10 个学生 + 观察微信群行为 → 得到真实需求;用用户故事写:
作为一个买家,我想要按关键词搜索物品,
以便快速找到我要的书。
验收标准:
Given 已发布的物品中有"数据结构"
When 我搜索"数据结构"
Then 返回标题或描述包含"数据结构"的在售物品,按发布时间倒序- 需求管理(第 7 课):用 MoSCoW 排优先级,MVP 只做 Must;建需求追溯矩阵(需求 → 设计 → 测试)。
- 原型与设计(第 8 课):低保真线框图先定流程(发布 → 列表 → 详情 → 联系方式),再做高保真。
- 架构(第 9 课):单体 + 分层(不是微服务!3 人团队不需要)。
┌─────────────────────────┐
│ 前端(简单 SPA/模板) │
└───────────┬─────────────┘
│ HTTP/JSON
┌───────────▼─────────────┐
│ 应用层(API + 业务) │
├─────────────────────────┤
│ 数据层(ORM + PostgreSQL)│
└─────────────────────────┘- 数据模型(第 10 课):
users/items/categories三张核心表,加必要索引(如status、title)。 - 选型(第 11 课):选团队最熟的技术栈(Python + 轻量框架),不追新。
关键取舍:架构简单优先。过度设计(微服务、消息队列)是学生项目最常见的自杀方式。
5、第三阶段:开发与团队协作(第 12~18 课)
做了什么:
- Git 工作流(第 12 课):
main保护 + 功能分支 + PR 合并。 - 代码评审(第 13 课):每个 PR 至少 1 人 review;小 PR,早合并。
- 编码规范(第 14 课):统一格式(用 formatter)、命名约定、Lint 自动检查。
- 测试驱动(第 15 课):核心业务(发布、搜索)用 TDD;UI 简化。
- CI(第 16 课):GitHub Actions:提交 → 跑测试 → 构建,红灯不合并。
- 敏捷实践(第 17 课):两周一个 Sprint,每日 15 分钟站会,看板管理(To Do / Doing / Done),Sprint 末尾回顾。
- 重构(第 18 课):每到一处就先补测试;发现重复就顺手提炼,别等债雪崩。
关键实践:CI 红灯不合并 + 每个 PR 都 review——这两条拦住了 90% 的低级问题。
6、第四阶段:测试与质量(第 19~23 课)
做了什么:
- 测试金字塔(第 19 课):大量单元测试 + 适量集成测试 + 少量 E2E(搜索、发布全流程)。
- 手工测试(第 20 课):探索式测试找边界(空标题、超长描述、特殊字符、图片格式)。
- 缺陷管理(第 21 课):用 GitHub Issues 记 bug,定严重级,闭环跟踪。
- 质量度量(第 22 课):关注逃逸缺陷数,而非"写了多少测试"。
- 安全与数据质量(第 23 课):防 SQL 注入(参数化查询)、
<script>XSS 转义、上传文件类型校验。
关键实践:把安全当功能做,而不是上线后补。
7、第五阶段:交付与运维(第 24~28 课)
做了什么:
- 构建制品(第 24 课):Docker 镜像,注入版本号 + commit,锁依赖。
- CI/CD(第 25 课):合并到
main自动部署到测试环境;生产部署手动点一下(人工审批)。 - 上线发布(第 26 课):发 Release Checklist;新功能加功能开关;写 Changelog。
- 监控告警(第 27 课):接入基础监控(错误率、响应时间)+ 错误日志聚合。
- 事故响应(第 28 课):写一页 Runbook(挂了怎么办);第一次线上事故后做无指责复盘。
关键实践:先能回滚,再谈上线。
8、第六阶段:维护与退役(第 29~33 课)
做了什么:
- 维护四类(第 29 课):修 bug(纠错)、适配移动端(适应)、加收藏功能(完善)、补测试与重构(预防)——四类都规划。
- 技术债管理(第 30 课):建技术债台账;每个 Sprint 留 20% 容量还债。
- 数据库演进(第 34 课):加
价格字段时用扩展-收缩,先加可空列,回填后再切换。 - 退役规划(第 35 课):把早期一个实验性"留言板"模块下线——盘点依赖 → 迁移 → 灰度 → 关停。
- 本课:把这一切串成一条经验。
关键实践:维护不是"没事干才修",而是每个迭代固定投入。
9、贯穿全程的三条主线
回看 CampusTrade,有三条线贯穿所有阶段:
主线一:持续交付的价值流
想法 → 需求 → 代码 → 测试 → 部署 → 反馈
每一环都要"小步、快速、可验证、可回滚"
主线二:质量内建(Built-in Quality)
测试、评审、CI、安全,是"每一步都做",不是"最后补课"
主线三:可持续的节奏
估算、还债、迭代、复盘,让团队的"速度"能长期维持10、一位工程师的成长地图
学完这 33 课,你掌握的是一张地图:
| 层次 | 你会的 |
|---|---|
| 单点技能 | 写代码、写测试、用 Git |
| 工程实践 | 需求分析、架构设计、CI/CD、监控 |
| 协作能力 | 评审、站会、复盘、沟通、估算 |
| 系统思维 | 取舍、权衡、风险、全生命周期视角 |
真正的分水岭不是"会多少技术",而是判断力:
什么时候该简单、什么时候该严谨?
什么时候该借债、什么时候该还?
什么时候该加、什么时候该砍?
这种判断力,只能在真实项目里、一次次取舍中练出来。
11、给继续前进的你
- 不要等"完美项目"才实践:把身边的小需求做完一整个流程(哪怕是个个人工具)。
- 从小处用全套:一个脚本也配 README、测试、CI——习惯会成自然。
- 读别人的代码与项目:开源项目是最好的教材。
- 复盘自己的项目:每做一个,写一段"回望"。
- 保持好奇与谦逊:技术会变,"思考方式"常青。
12、课程的终点,是实践的起点
从《Python 从零开始》到《从算法到人工智能》,再到这门《软件项目开发全流程》,你走过的是一条从"写程序"到"做产品"、从"一个人"到"一个团队"的路。
这一课没有"新知识",只有一条邀请:
去把学到的东西,用一个真实项目走一遍。
然后回到这里,看看哪些你认同、哪些你要修正。
软件工程没有标准答案,只有在实践中不断校准的、属于你自己的方法论。
感谢你走完全程。现在,去创造你自己的项目吧。 🚀
13、结课作业 🎯
任务:完整走一遍你自己的一个小项目(六阶段全流程)。
要求:规模小、周期短(1~2 周),但每个阶段都留下证据:
- 立项:一页纸的章程(目标、范围、干系人、成功标准)。
- 需求设计:≥5 条用户故事 + 验收标准 + 一张架构图 + 数据模型。
- 开发协作:Git 分支 + 至少 3 个 PR + CI 跑通 + 一个 Sprint 看板。
- 测试:单元测试 + 至少 1 个 E2E,覆盖率有数字。
- 交付:一次真实或模拟的部署 + Release Note + 一页 Runbook。
- 维护:一份技术债台账 + 一次小重构 + 一次"退役/下架"演练。
- 总复盘:写一份 2 页的过程复盘——哪些做得好、哪些踩了坑、如果重来会怎么改。
把这 7 份证据整理成一个仓库,你就有了自己的第一份"工程履历"。
14、全课程你带走的三句话
- 软件生命周期是一条价值流:立项 → 需求设计 → 开发协作 → 测试 → 交付运维 → 维护退役,每一环都为下一环负责。
- 质量是内建的,不是补课的:测试、评审、CI、安全、可观测,分布在每一步。
- 工程的核心是判断力与取舍:没有银弹,只有在真实项目中一次次校准的、属于你自己的方法论。
全课程完 · 36 课。
(本课程与《Python 从零开始》《从算法到人工智能》构成完整学习路径:语言 → 算法 → 工程。)