第1部分 推开软件交付之门
第1章 软件交付过程的范围
1.1 修改了源代码之后
1.2 直到改动发布上线
1.3 在软件开发全过程中的位置
1.4 为什么要这么划分软件交付过程
第2章 软件交付过程的内容
2.1 程序改动的累积和汇聚
2.2 程序形态的转化
2.3 程序质量的提升
第3章 软件交付过程的追求目标
3.1 整体目标:为了业务的成功
3.2 确定需求:有效率地找到有效需求
3.3 从确定需求到实现需求:小步快跑
3.4 实现需求:效率与质量
3.4.1 体现效率:需求吞吐量
3.4.2 体现效率:需求响应时长
3.4.3 质量不是越高越好
3.4.4 体现质量:问题出现量
3.4.5 体现质量:问题修复时长
3.4.6 要兼顾短期和长期
3.4.7 四个象限简介
3.5 软件交付过程在四个象限的优化
3.5.1 提高需求吞吐量
3.5.2 缩短需求响应时长
3.5.3 减少问题出现量
3.5.4 缩短问题修复时长
3.6 DORA的DevOps核心指标
第2部分 软件交付总体过程
第4章 持续集成
4.1 什么是持续集成
4.1.1 什么是持续
4.1.2 什么是集成
4.2 为什么要持续集成
4.2.1 小批量,减少等待
4.2.2 问题早发现、早修复,代价小
4.2.3 频繁同步以减少冲突
4.3 流水线
4.3.1 流水线的诞生
4.3.2 流水线包含哪些活动
4.3.3 流水线的功能
第5章 逐特性集成
5.1 什么是特性
5.2 什么是逐特性集成
5.3 仍符合持续集成的理念
5.4 隔离未完成特性的其他方法
5.5 何时不必考虑隔离未完成的特性
5.6 当特性做不到既小又独立时
第6章 在集成之前
6.1 第四阶段:特性改动提交
6.1.1 合并请求基础款:代码评审
6.1.2 合并请求增强款:代码评审+流水线
6.1.3 在创建合并请求之前
6.2 第三阶段:特性改动累积
6.3 第二阶段:代码改动提交
6.3.1 代码改动通过关卡才出现在目标分支
6.3.2 在提交时本地自动进行质量把关
6.3.3 在提交代码改动之前
6.4 第一阶段:代码改动累积
6.4.1 随时进行的质量保证工作
6.4.2 实时进行的质量保证工作
6.4.3 IDE
第7章 持续交付
7.1 什么是持续交付
7.1.1 持续交付是持续集成的延伸
7.1.2 持续是适度频繁
7.2 为什么要持续交付
7.3 版本晋级机制
7.4 部署流水线
7.5 迈向持续部署
7.5.1 适当的发布频率
7.5.2 如何提高发布频率
7.5.3 持续部署
第8章 特性间进一步解耦
8.1 混合自测
8.2 特性摘除
8.3 混合测试
8.4 逐特性交付
8.5 特性间解耦方法小结
第9章 运用精益思想
9.1 限制在制品的数量
9.2 优化发布审批
9.2.1 什么是发布审批
9.2.2 精简发布审批流程
9.2.3 发布审批的工具支持
9.3 消除发布时间窗口限制
第10章 突破Scrum的若干约束
10.1 发布版本间的交叠
10.2 在一次迭代中多次发布
10.3 迭代规划内容不必都做完
10.4 特事特办
第11章 多项内容协同交付
11.1 本书中的微服务是代称
11.2 提交完整的特性
11.3 采用相同的节奏
11.4 特性间完全解耦
11.5 按特定的顺序发布
第12章 静态库的交付
12.1 什么是静态库
12.2 作为公共基础库
12.3 作为整体应用的组成部分
12.4 作为服务接口定义
第13章 并行的多个版本序列
13.1 版本序列之间的交叠
13.2 变体
第14章 尽快修复问题
14.1 尽快修复流水线的问题
14.1.1 为什么要尽快修复
14.1.2 自动通知合适的人
14.1.3 足够高的优先级
14.1.4 足够多的相关信息
14.2 尽快修复测试发现的缺陷
14.3 尽快解决发布带来的问题
14.3.1 系统的可观测性
14.3.2 发布回滚
14.3.3 紧急发布
14.3.4 当紧急程度更低一些时
第3部分 程序改动的累积和汇聚
第15章 版本控制
15.1 什么是版本控制
15.2 实现版本控制的方法和工具
15.3 版本命名
15.3.1 传统的版本命名方式
15.3.2 SaaS软件的版本命名
15.3.3 考虑版本控制工具的能力
15.3.4 考虑制品管理的方法
15.4 分支
15.4.1 “现代派”分支
15.4.2 制品的分支
第16章 使用版本控制工具
16.1 版本控制工具简介
16.2 代码库内的层次结构
16.3 代码库间的层次结构
16.4 不应放入代码库的内容
16.4.1 小心二进制文件
16.4.2 代码
展开