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 周),但每个阶段都留下证据:

  1. 立项:一页纸的章程(目标、范围、干系人、成功标准)。
  2. 需求设计:≥5 条用户故事 + 验收标准 + 一张架构图 + 数据模型。
  3. 开发协作:Git 分支 + 至少 3 个 PR + CI 跑通 + 一个 Sprint 看板。
  4. 测试:单元测试 + 至少 1 个 E2E,覆盖率有数字。
  5. 交付:一次真实或模拟的部署 + Release Note + 一页 Runbook。
  6. 维护:一份技术债台账 + 一次小重构 + 一次"退役/下架"演练。
  7. 总复盘:写一份 2 页的过程复盘——哪些做得好、哪些踩了坑、如果重来会怎么改。

把这 7 份证据整理成一个仓库,你就有了自己的第一份"工程履历"。

14、全课程你带走的三句话

  1. 软件生命周期是一条价值流:立项 → 需求设计 → 开发协作 → 测试 → 交付运维 → 维护退役,每一环都为下一环负责。
  2. 质量是内建的,不是补课的:测试、评审、CI、安全、可观测,分布在每一步。
  3. 工程的核心是判断力与取舍:没有银弹,只有在真实项目中一次次校准的、属于你自己的方法论。

全课程完 · 36 课。

(本课程与《Python 从零开始》《从算法到人工智能》构成完整学习路径:语言 → 算法 → 工程。)

标签: 软件工程, 项目管理, 开发流程

添加新评论