软件工程核心知识复习¶
软件工程是区分"写代码的人"和"做工程的人"的核心能力——它解决的不是"代码能不能跑",而是"系统能不能长期演进、团队能不能高效协作"。
知识结构¶
mindmap
root((软件工程核心))
设计原则
SOLID 五大原则
DRY 不重复
KISS 保持简单
YAGNI 不过度设计
架构设计
单体架构
微服务架构
DDD 领域驱动
CAP 理论
代码质量
代码坏味道识别
重构手法
测试金字塔
工程实践
CI/CD 持续集成
监控与可观测性
系统设计方法论
知识点导航¶
| # | 知识点 | 核心内容 | 重要程度 |
|---|---|---|---|
| 1 | SOLID 原则 | SRP / OCP / LSP / ISP / DIP | ⭐⭐⭐⭐⭐ |
| 2 | 软件架构演进 | 单体 vs 微服务、核心组件 | ⭐⭐⭐⭐⭐ |
| 3 | DDD 领域驱动设计 | 贫血/充血模型、聚合根、限界上下文 | ⭐⭐⭐⭐ |
| 4 | CAP 理论与 BASE 理论 | CP vs AP 选型、最终一致性 | ⭐⭐⭐⭐⭐ |
| 5 | 代码质量与重构 | 坏味道识别、重构手法、测试金字塔 | ⭐⭐⭐⭐ |
| 6 | CI/CD 持续集成与交付 | 流水线、蓝绿/金丝雀/滚动发布 | ⭐⭐⭐⭐ |
| 7 | 系统设计方法论 | 答题框架、常见错误避坑 | ⭐⭐⭐⭐⭐ |
核心问题速查¶
| 问题 | 关键答案 | 详见 |
|---|---|---|
| SOLID 哪条最重要? | OCP 是核心目标,其他四条是实现手段 | SOLID 原则 |
| 微服务 vs 单体如何选? | 初创用单体,团队 > 10 人再考虑拆分 | 软件架构演进 |
| 贫血模型 vs 充血模型? | 复杂业务用充血,简单 CRUD 用贫血 | DDD 领域驱动设计 |
| CAP 中 P 为何不可放弃? | 网络分区客观存在,P 是前提 | CAP 理论与 BASE 理论 |
| 何时需要重构? | 方法 > 20 行、类 > 200 行、相同代码出现 3 次 | 代码质量与重构 |
| 系统设计如何答题? | 需求澄清 → 容量估算 → 架构 → DB → 接口 → 扩展性 | 系统设计方法论 |
一句话口诀¶
SOLID 是设计准则,DDD 是业务建模,CAP 是分布式选型,CI/CD 是工程实践,测试金字塔是质量保障。