软件工程
从零基础到专家:生命周期、需求与设计、开发与测试、项目管理、DevOps 与架构演进。按章节系统学习。
-
1
开篇:什么是软件工程、为何要系统学习
软件工程的定义与目标;与「写代码」的区别:可预测、可重复、可协作、可维护。为何零基础或转行者也应建立工程思维;本课程的结构与使用方式。
-
2
软件生命周期与过程模型概览
从需求到上线到退役的全生命周期;瀑布、迭代、增量、螺旋等传统模型;敏捷与精益的兴起;如何根据项目特点选择过程。
-
3
从个人编程到工程化思维
个人开发与团队交付的差异;可读性、可测试性、可维护性;文档、版本控制与协作习惯;建立「为他人与未来写代码」的意识。
-
4
需求工程入门:需求获取与分类
什么是需求;需求获取方法:访谈、问卷、观察、原型;功能性需求与非功能性需求的初步区分;需求分类与优先级。
-
5
功能性需求与非功能性需求
功能需求:系统「做什么」;非功能需求:性能、安全、可用性、可扩展性等「做到什么程度」;NFR 的表述与可验证性。
-
6
需求规格说明与验收标准
需求规格说明书(SRS)的作用与结构;清晰、无歧义、可测试的表述;验收标准与 Definition of Done;需求变更与基线管理。
-
7
用例与用户故事
用例(Use Case):参与者、主成功场景与扩展;用户故事格式与 INVEST 原则;从需求到可开发条目的拆解;Backlog 管理入门。
-
8
软件设计基础:抽象、模块化与接口
抽象:保留本质、隐藏细节;模块化与高内聚低耦合;接口与实现分离;设计如何影响后续开发与维护成本。
-
9
面向对象分析与设计(OOAD)入门
对象、类与封装;职责划分与单一职责;继承、组合与多态;从需求到领域模型的第一步。
-
10
UML 基础:用例图、类图、序列图
UML 的用途与常用图:用例图、类图、序列图、活动图;何时画图、何时不画;图与代码的同步。
-
11
架构设计入门:分层与组件
什么是软件架构;分层架构(表现层、业务层、数据层);组件与模块的划分;架构决策的可见性与文档化。
-
12
设计原则:SOLID 与高内聚低耦合
SOLID 五原则:单一职责、开闭、里氏替换、接口隔离、依赖倒置;高内聚低耦合的实践含义;原则与取舍。
-
13
设计模式入门:创建型、结构型、行为型
设计模式解决什么问题;GoF 分类概览:工厂、单例、适配器、装饰器、观察者、策略等;何时引入模式、何时避免过度设计。
-
14
版本控制与 Git 工作流
版本控制的必要性;Git 基本概念:提交、分支、合并、变基;分支策略:Git Flow、GitHub Flow、Trunk-Based;协作与 Code Review 的衔接。
-
15
代码规范、命名与可读性
命名规范:变量、函数、类、文件;格式与风格(linter、formatter);注释与自解释代码;团队规范与工具落地。
-
16
重构:何时重构与如何安全重构
什么是重构;坏味道与重构时机;小步重构与测试保护;常见重构手法:提取方法、重命名、移动;重构与新功能的平衡。
-
17
单元测试与 TDD
单元测试的目的与范围;测试金字塔中的位置;断言、 mock 与隔离;TDD 的红-绿-重构循环;何时写测试、测试的可维护性。
-
18
代码评审与协作
Code Review 的目的:质量、知识传播、一致性;评审清单与礼仪;异步评审与同步讨论;如何写和如何接收反馈。
-
19
文档与注释:何时写、写什么
文档类型:架构文档、API 文档、运行手册、决策记录;注释的原则:解释为什么、而非重复代码;文档即代码:版本控制与更新责任。
-
20
测试策略与测试金字塔
测试策略:测什么、测多少、谁测;测试金字塔:单元多、集成适中、E2E 少;自动化与手工测试的划分;测试与质量内建。
-
21
集成测试与端到端测试
集成测试:组件/服务间的接口与数据;E2E 测试:用户场景与关键路径;环境、数据与稳定性;测试自动化框架选型。
-
22
性能测试与安全测试入门
性能测试类型:负载、压力、稳定性;指标:响应时间、吞吐量、错误率;安全测试:OWASP、依赖扫描、渗透测试入门;与 CI 的集成。
-
23
缺陷管理、根因分析与持续改进
缺陷生命周期:发现、记录、修复、验证;严重程度与优先级;根因分析(5 Why、鱼骨图);从缺陷到过程改进。
-
24
静态分析与代码质量工具
静态分析:不运行代码即可发现问题;linter、类型检查、安全扫描;质量门禁与度量:复杂度、重复率、覆盖率;工具链集成。
-
25
敏捷与 Scrum 基础
敏捷宣言与原则;Scrum 框架:角色、事件、工件;Sprint、Backlog、Daily Standup、回顾;敏捷不是无计划。
-
26
看板与精益思想
看板:可视化工作流、WIP 限制、拉动;精益:消除浪费、缩短周期、持续改进;看板与 Scrum 的对比与结合。
-
27
估算与计划:故事点、速度与发布规划
估算的目的与局限;故事点与相对估算;速度与预测;发布规划与路线图;何时重估、如何应对不确定性。
-
28
团队角色与沟通
产品、开发、测试、运维的协作;沟通渠道与会议效率;远程与分布式团队;冲突处理与共识建立。
-
29
风险管理与变更管理
识别技术、进度与外部风险;风险应对:规避、减轻、转移、接受;变更控制流程与影响分析;在敏捷中的轻量变更管理。
-
30
构建、打包与制品管理
从源码到可部署制品;构建脚本、依赖管理、产物版本化;制品仓库与不可变构建;多环境构建一致性。
-
31
CI/CD 流水线入门
持续集成:频繁合并、自动构建与测试;持续交付/部署:自动化发布到生产;流水线设计:阶段、门禁、回滚;常见工具与选型。
-
32
环境管理、配置与密钥
开发、测试、预发、生产环境的隔离与一致性;配置管理:环境变量、配置文件、配置中心;密钥与敏感信息:不落库、轮换与审计。
-
33
监控、日志与可观测性
可观测性三支柱:指标、日志、追踪;监控指标与告警策略;日志级别、聚合与检索;分布式追踪入门;On-call 与故障响应。
-
34
发布策略与回滚
发布策略:蓝绿、金丝雀、滚动发布;功能开关与渐进发布;回滚预案与数据兼容;发布检查清单与事后复盘。
-
35
DevOps 文化与 SRE 初探
DevOps:开发与运维的协作与文化;自动化、反馈与持续改进;SRE 核心:SLO/SLI、错误预算、自动化运维;从理念到落地。
-
36
架构风格:单体、分层、微服务
单体与分层架构;微服务的动机与边界划分;服务间通信:同步与异步;何时微服务、何时不;模块化单体的价值。
-
37
领域驱动设计(DDD)入门
领域、子域与限界上下文;实体、值对象、聚合与领域事件;统一语言与模型驱动设计;DDD 与架构的衔接。
-
38
API 设计与版本管理
REST 与资源设计;API 契约与文档(OpenAPI);版本策略:URL、Header、兼容性;向后兼容与废弃策略。
-
39
数据存储与一致性考量
关系型与 NoSQL 的选型;事务与一致性:ACID、CAP、最终一致性;读写分离、分库分表入门;数据迁移与版本管理。
-
40
可扩展性、高可用与性能设计
水平与垂直扩展;无状态与有状态;高可用:冗余、故障隔离、熔断与降级;性能设计:缓存、异步、批处理;非功能需求的架构化实现。
-
41
遗留系统与技术债务
什么是技术债务;遗留系统的特征与风险;评估与增量改进策略; strangler fig、防腐层;何时重写、何时不。
-
42
架构演进与重构策略
架构不是一次性的;演进式架构与 fitness function;大规模重构的步骤与风险控制;架构决策记录(ADR)与演进历史。
-
43
软件工程伦理与职业责任
技术对社会与用户的影响;隐私、安全与公平;质量责任与「说不」的勇气;开源与知识产权;职业操守与长期主义。
-
44
技术选型与平衡
选型维度:团队能力、生态、演进与锁定风险;构建 vs 采购 vs 开源;技术雷达与持续学习;避免追逐热点与从众。
-
45
从工程师到技术负责人
个人贡献者与带人、带项目的区别;技术决策与路线图;培养他人与知识传承;本课程回顾与进阶学习路径:架构、管理、专项深入。