目 录
第 1 章 概论
1.1 软件 = 程序 + 软件工程
1.2 为何需要软件工程
1.3 软件工程的目标:在约束条件下创造“足够好”的软件
1.4 软件工程的广阔天地:知识领域与内涵
1.5 软件工程与计算机科学
1.6 总结:软件工程师的宗旨
第 2 章 个人技术和流程
2.1 单元测试
2.2 单元测试案例分析
2.3 效能分析工具
2.4 编程练习和成长
第 3 章 软件工程师的成长
3.1 个人能力的衡量与发展
3.2 个人软件过程
3.3 技能的反面
3.4 软件工程师的思维误区
3.5 软件工程师的成长
3.6 软件工程师的职业发展
第 4 章 两人合作
4.1 代码规范
4.2 代码风格规范
4.3 代码设计规范
4.4 代码复审
4.5 结对编程
4.6 与 AI 结对编程—知人善任
4.7 两人合作的不同阶段和技巧
4.8 本章小结
第 5 章 团队和流程
5.1 非团队和团队
5.2 软件团队的模式
5.3 开发流程
5.4 开源浪潮中的团队和流程
第 6 章 敏捷流程
6.1 敏捷流程简介
6.2 敏捷流程中的问题和解法
6.3 敏捷流程的团队与哲学
6.4 AI 时代的敏捷流程—BMad 方法
6.5 关于敏捷的问答
6.6 开源与敏捷:协作哲学的冲突与融合
6.7 案例分析—“超算”项目之垂直切片
第 7 章 实战中的软件工程
7.1 实战中总结出来的原则 MSF
7.2 MSF 的精髓:九条原则及其文化内核
7.3 MSF 的团队模型与流程模型:历史的镜鉴
7.4 实战中的演进:从“牛仔”到“云原生”
7.5 总结和反思
第 8 章 需求分析
8.1 软件需求
8.2 软件产品的利益相关者
8.3 获取用户需求—用户调研
8.4 竞争性需求分析的核心框架
8.5 功能的定位和优先级
8.6 计划和估算
8.7 分而治之(WBS 和 JTBD)
第 9 章 项目经理
9.1 PM 角色定义与分类
9.2 PM 的核心能力与知识体系
9.3 推动高效的团队讨论
9.4 管理风险:从震惊到主动创造机会
9.5 PM 的挑战与成长
第 10 章 典型用户和场景
10.1 典型用户和典型场景
10.2 用例和用例图
10.3 功能说明书和技术说明书
10.4 AI 赋能的功能驱动设计
10.5 从功能定义到产品演进
第 11 章 软件设计与实现
11.1 分析和设计方法
11.2 模型化方法
11.3 AI 编程的历史
11.4 AI 时代:软件工程师的成长与未来
11.5 案例剖析:在已有服务的基础上增加新功能
11.6 现代软件工程的“脚手架”:源代码管理
11.7 从每日构建到持续集成
第 12 章 用户体验
12.1 设计的演进:从器物到数字体验
12.2 用户体验的三个层次
12.3 用户体验设计的步骤和方法
12.4 UX 设计案例
12.5 用户体验的评价标准
12.6 具身智能形态之辩:通用机器人一定会人形化吗
第 13 章 软件测试
13.1 由核事故引出的基本名词解释
13.2 AI 系统的 Bug 和测试
13.3 各种测试方法
13.4 实战中的测试
13.5 嵌入式系统的测试和发布
13.6 案例分析
第 14 章 质量保障
14.1 什么是软件的质量
14.2 质量保障的组织与实施
14.3 质量是构建出来的
第 15 章 稳定、发布和维护
15.1 代码完成是另一个开始
15.2 稳定与发布阶段的关键战术
15.3 渐进式交付:持续交付的实战
15.4 案例分析—AI 批改简答题
15.5 提高 DevOps 长期效率
15.6 发布之后—解剖自己
第 16 章 IT 行业的创新
16.1 深度理解创新:打破迷思
16.2 创新的理论基石
16.3 把握创新的时机
16.4 创新策略与实践
16.5 竞争的案例:入口争夺、护城河与用户洞察
16.6 创新者的修炼
第 17 章 人、绩效和职业道德
17.1 领导力:从自我生存到引领团队
17.2 识人与用人:构建高效团队的基石
17.3 团队发展的生命周期
17.4 团队角色与责任
17.5 绩效管理的艺术与科学
17.6 构建顶尖团队环境:几种创新文化的范式
17.7 软件工程师的职业道德