软件工程
软件工程关注的不是某一种语言或某一个框架,而是如何把复杂的软件系统稳定地构造、验证、部署和演化。本章把“抽象与规格”到“架构与系统”再到“工程实践与交付”串成一条完整主线。
如果把算法、操作系统、网络看作研究“计算系统本身”,那么软件工程研究的就是:人如何用合适的抽象、流程和工具,把这些计算原理落地成可维护的软件系统。
概览与理论
- 软件工程概述 从章节级角度理解软件工程的定义、生命周期、抽象层与本章地图。
- 软件工程的抽象、自动化与边界 讨论软件工程为什么属于计算科学,以及抽象层之间为何总会出现边界。
- 软件复杂度与银弹 通过 Brooks 的经典文章理解本质复杂度与附带复杂度。
- 自动编程、规格与实现 讨论 Balzer 如何把自动编程从“代码生成”扩展到“规格链条”。
架构与系统
- 系统设计 从需求澄清、容量估算到高层架构设计的方法论。
- 分布式系统 关注一致性、复制、消息、事务与故障处理。
- 云服务 关注云平台、虚拟化、容器、Serverless 与部署模型。
- 数据库系统 覆盖关系模型、事务、索引、NoSQL 与向量数据库。
- 并行计算 讨论 CPU/GPU 并行、并行算法以及分布式训练中的通信模式。
工程实践
- 设计模式 关注模块边界、对象协作与常见设计取舍。
- 版本控制与CI/CD 讨论代码协作、持续集成和持续交付。
- 测试与质量保障 讨论测试金字塔、自动化验证与质量治理。
- 全栈开发 从前后端协作、API 到数据层设计理解完整产品交付。