软件工程学习路线:把一个小功能从想法做到可靠交付
会写代码以后,为什么项目还是经常延期、改坏、交不出去?因为一个产品还需要把问题问清楚,让代码能合作,让变化能被检查,并在真实环境中持续运行。这门课用“给知识库增加收藏功能”贯穿全过程,先看到问题,再认识方法和术语。
1. 从哪里开始
前两章不要求会框架或数据库。你只需要能理解网页上有文章、用户和按钮,准备一张纸记录需求。进入 Git 章时再安装 Git;进入自动化测试时使用 Node.js 24 和少量 JavaScript。不了解数组与函数,可以先到语言基础分区补上这些概念。
本课讨论软件工程中的通用方法,不把某个框架的 API 当作必背前提。第一次阅读按目录顺序走;已经做过项目,可以先找自己最常卡住的阶段,再回头补需求和验证的连接。
2. 八个阶段,每次留下一个成果
| 顺序 | 分区 | 先回答的问题 | 本轮成果 |
|---|---|---|---|
| 1 | 从一个小功能开始 | 能点的按钮为什么还不算完成? | 一张功能卡 |
| 2 | 把需求说清楚 | 大家说的“完成”是不是一回事? | 正常、边界、失败验收例子 |
| 3 | 设计与拆分 | 数据放哪里,规则由谁守住? | 一张图和一条决策记录 |
| 4 | 版本管理与协作 | 怎样记录、讨论和合并变化? | 小提交与评审说明 |
| 5 | 测试与排错 | 如何知道没有改坏,坏了怎么查? | 可运行测试与缺陷记录 |
| 6 | 构建发布与运行 | 怎样交给用户并确认实际可用? | 发布及恢复清单 |
| 7 | 维护安全与改进 | 以后怎样继续改,怎样防止越权? | 债务卡与复盘行动 |
| 8 | 把全过程做一遍 | 能否把前面步骤串起来? | 一个有证据的交付包 |
每个分区两篇短课。建议一次完成一篇的练习,并用自己的话解释参考答案为什么成立。不需要一天读完;写出一个可以验证的例子,比划过一页名词更有用。
3. 怎样使用贯穿案例
完整产品目标是私人收藏、跨设备找回、取消、重复请求处理和失败提示。我们会先写这些承诺,再讨论模块、数据、测试与交付。不同章节观察的是同一功能的不同侧面。
附带代码刻意只实现本地收藏状态规则,让你无需先搭登录、数据库和服务器就能运行测试。它不是生产收藏系统,不提供跨设备同步或真实权限验证。涉及接口和数据库的设计片段会明确标注示意,需要在真实项目里补齐运行条件。
仓库中的独立示例位于 examples/software-engineering,从项目根目录执行:
node examples/software-engineering/demo.mjs
node --test examples/software-engineering/favorites.test.mjs
第一条显示状态变化,第二条检查预期。具体代码解释在测试章与综合实践章。没有编程基础时可以先读需求、流程和图示,再回来运行。
4. 如何判断已经学会
试着让另一位同学只看你的说明就能运行示例,预测重复保存的结果,并指出它还没有解决哪些线上问题。然后提出一个新需求,例如收藏分组,说明会影响需求、接口、数据、测试中的哪些部分。
如果只能说“需要高内聚低耦合”,继续追问:具体哪两段代码应该分开?为什么?如果只能说“加测试”,继续追问:什么输入、什么预期、怎样证明旧错误会被抓到?把抽象话换成可观察动作,理解通常就会更扎实。
5. 本课程的资料边界
内容以原创案例组织,参考开放教程和官方资料,不拼接原文。流程方法要结合场景,测试金字塔、微服务、敏捷都不是每个项目必须照搬的模板。文中示例目标和估算不是行业统一标准。
资料核对日期为 2026-10-05。Scrum 内容按 2020 版指南;示例验证基于 Node.js 24。工具升级后,先看对应版本文档,再调整命令。补充阅读放在目录后面,可按当前问题查阅,不需要先把所有外部链接读完。
