软件工程

从零基础到专家:生命周期、需求与设计、开发与测试、项目管理、DevOps 与架构演进。按章节系统学习。

  1. 1

    开篇:什么是软件工程、为何要系统学习

    软件工程的定义与目标;与「写代码」的区别:可预测、可重复、可协作、可维护。为何零基础或转行者也应建立工程思维;本课程的结构与使用方式。

  2. 2

    软件生命周期与过程模型概览

    从需求到上线到退役的全生命周期;瀑布、迭代、增量、螺旋等传统模型;敏捷与精益的兴起;如何根据项目特点选择过程。

  3. 3

    从个人编程到工程化思维

    个人开发与团队交付的差异;可读性、可测试性、可维护性;文档、版本控制与协作习惯;建立「为他人与未来写代码」的意识。

  4. 4

    需求工程入门:需求获取与分类

    什么是需求;需求获取方法:访谈、问卷、观察、原型;功能性需求与非功能性需求的初步区分;需求分类与优先级。

  5. 5

    功能性需求与非功能性需求

    功能需求:系统「做什么」;非功能需求:性能、安全、可用性、可扩展性等「做到什么程度」;NFR 的表述与可验证性。

  6. 6

    需求规格说明与验收标准

    需求规格说明书(SRS)的作用与结构;清晰、无歧义、可测试的表述;验收标准与 Definition of Done;需求变更与基线管理。

  7. 7

    用例与用户故事

    用例(Use Case):参与者、主成功场景与扩展;用户故事格式与 INVEST 原则;从需求到可开发条目的拆解;Backlog 管理入门。

  8. 8

    软件设计基础:抽象、模块化与接口

    抽象:保留本质、隐藏细节;模块化与高内聚低耦合;接口与实现分离;设计如何影响后续开发与维护成本。

  9. 9

    面向对象分析与设计(OOAD)入门

    对象、类与封装;职责划分与单一职责;继承、组合与多态;从需求到领域模型的第一步。

  10. 10

    UML 基础:用例图、类图、序列图

    UML 的用途与常用图:用例图、类图、序列图、活动图;何时画图、何时不画;图与代码的同步。

  11. 11

    架构设计入门:分层与组件

    什么是软件架构;分层架构(表现层、业务层、数据层);组件与模块的划分;架构决策的可见性与文档化。

  12. 12

    设计原则:SOLID 与高内聚低耦合

    SOLID 五原则:单一职责、开闭、里氏替换、接口隔离、依赖倒置;高内聚低耦合的实践含义;原则与取舍。

  13. 13

    设计模式入门:创建型、结构型、行为型

    设计模式解决什么问题;GoF 分类概览:工厂、单例、适配器、装饰器、观察者、策略等;何时引入模式、何时避免过度设计。

  14. 14

    版本控制与 Git 工作流

    版本控制的必要性;Git 基本概念:提交、分支、合并、变基;分支策略:Git Flow、GitHub Flow、Trunk-Based;协作与 Code Review 的衔接。

  15. 15

    代码规范、命名与可读性

    命名规范:变量、函数、类、文件;格式与风格(linter、formatter);注释与自解释代码;团队规范与工具落地。

  16. 16

    重构:何时重构与如何安全重构

    什么是重构;坏味道与重构时机;小步重构与测试保护;常见重构手法:提取方法、重命名、移动;重构与新功能的平衡。

  17. 17

    单元测试与 TDD

    单元测试的目的与范围;测试金字塔中的位置;断言、 mock 与隔离;TDD 的红-绿-重构循环;何时写测试、测试的可维护性。

  18. 18

    代码评审与协作

    Code Review 的目的:质量、知识传播、一致性;评审清单与礼仪;异步评审与同步讨论;如何写和如何接收反馈。

  19. 19

    文档与注释:何时写、写什么

    文档类型:架构文档、API 文档、运行手册、决策记录;注释的原则:解释为什么、而非重复代码;文档即代码:版本控制与更新责任。

  20. 20

    测试策略与测试金字塔

    测试策略:测什么、测多少、谁测;测试金字塔:单元多、集成适中、E2E 少;自动化与手工测试的划分;测试与质量内建。

  21. 21

    集成测试与端到端测试

    集成测试:组件/服务间的接口与数据;E2E 测试:用户场景与关键路径;环境、数据与稳定性;测试自动化框架选型。

  22. 22

    性能测试与安全测试入门

    性能测试类型:负载、压力、稳定性;指标:响应时间、吞吐量、错误率;安全测试:OWASP、依赖扫描、渗透测试入门;与 CI 的集成。

  23. 23

    缺陷管理、根因分析与持续改进

    缺陷生命周期:发现、记录、修复、验证;严重程度与优先级;根因分析(5 Why、鱼骨图);从缺陷到过程改进。

  24. 24

    静态分析与代码质量工具

    静态分析:不运行代码即可发现问题;linter、类型检查、安全扫描;质量门禁与度量:复杂度、重复率、覆盖率;工具链集成。

  25. 25

    敏捷与 Scrum 基础

    敏捷宣言与原则;Scrum 框架:角色、事件、工件;Sprint、Backlog、Daily Standup、回顾;敏捷不是无计划。

  26. 26

    看板与精益思想

    看板:可视化工作流、WIP 限制、拉动;精益:消除浪费、缩短周期、持续改进;看板与 Scrum 的对比与结合。

  27. 27

    估算与计划:故事点、速度与发布规划

    估算的目的与局限;故事点与相对估算;速度与预测;发布规划与路线图;何时重估、如何应对不确定性。

  28. 28

    团队角色与沟通

    产品、开发、测试、运维的协作;沟通渠道与会议效率;远程与分布式团队;冲突处理与共识建立。

  29. 29

    风险管理与变更管理

    识别技术、进度与外部风险;风险应对:规避、减轻、转移、接受;变更控制流程与影响分析;在敏捷中的轻量变更管理。

  30. 30

    构建、打包与制品管理

    从源码到可部署制品;构建脚本、依赖管理、产物版本化;制品仓库与不可变构建;多环境构建一致性。

  31. 31

    CI/CD 流水线入门

    持续集成:频繁合并、自动构建与测试;持续交付/部署:自动化发布到生产;流水线设计:阶段、门禁、回滚;常见工具与选型。

  32. 32

    环境管理、配置与密钥

    开发、测试、预发、生产环境的隔离与一致性;配置管理:环境变量、配置文件、配置中心;密钥与敏感信息:不落库、轮换与审计。

  33. 33

    监控、日志与可观测性

    可观测性三支柱:指标、日志、追踪;监控指标与告警策略;日志级别、聚合与检索;分布式追踪入门;On-call 与故障响应。

  34. 34

    发布策略与回滚

    发布策略:蓝绿、金丝雀、滚动发布;功能开关与渐进发布;回滚预案与数据兼容;发布检查清单与事后复盘。

  35. 35

    DevOps 文化与 SRE 初探

    DevOps:开发与运维的协作与文化;自动化、反馈与持续改进;SRE 核心:SLO/SLI、错误预算、自动化运维;从理念到落地。

  36. 36

    架构风格:单体、分层、微服务

    单体与分层架构;微服务的动机与边界划分;服务间通信:同步与异步;何时微服务、何时不;模块化单体的价值。

  37. 37

    领域驱动设计(DDD)入门

    领域、子域与限界上下文;实体、值对象、聚合与领域事件;统一语言与模型驱动设计;DDD 与架构的衔接。

  38. 38

    API 设计与版本管理

    REST 与资源设计;API 契约与文档(OpenAPI);版本策略:URL、Header、兼容性;向后兼容与废弃策略。

  39. 39

    数据存储与一致性考量

    关系型与 NoSQL 的选型;事务与一致性:ACID、CAP、最终一致性;读写分离、分库分表入门;数据迁移与版本管理。

  40. 40

    可扩展性、高可用与性能设计

    水平与垂直扩展;无状态与有状态;高可用:冗余、故障隔离、熔断与降级;性能设计:缓存、异步、批处理;非功能需求的架构化实现。

  41. 41

    遗留系统与技术债务

    什么是技术债务;遗留系统的特征与风险;评估与增量改进策略; strangler fig、防腐层;何时重写、何时不。

  42. 42

    架构演进与重构策略

    架构不是一次性的;演进式架构与 fitness function;大规模重构的步骤与风险控制;架构决策记录(ADR)与演进历史。

  43. 43

    软件工程伦理与职业责任

    技术对社会与用户的影响;隐私、安全与公平;质量责任与「说不」的勇气;开源与知识产权;职业操守与长期主义。

  44. 44

    技术选型与平衡

    选型维度:团队能力、生态、演进与锁定风险;构建 vs 采购 vs 开源;技术雷达与持续学习;避免追逐热点与从众。

  45. 45

    从工程师到技术负责人

    个人贡献者与带人、带项目的区别;技术决策与路线图;培养他人与知识传承;本课程回顾与进阶学习路径:架构、管理、专项深入。