软件研发效能提升之美
作 者: 吴骏龙,茹炳晟 著
出版时间: 2021
内容简介
《软件研发效能提升之美》汇聚了行业前沿的研发效能提升实践与案例,同时提炼出大量方法论和经验反思,以诙谐、幽默而又不失严谨、详实的风格,多角度、全方位覆盖研发效能领域的核心知识,深入浅出,发人深思。 全书采用从概要到细节、从方法论到案例、理论联系实际的写作思路。第1章和第2章通览研发效能的概念与背景,并对研发效能进行由浅入深的解读;第3章以敏捷开发为主线,讲述项目管理中的提效实践;第4章介绍了行业流行的DevOps实践,并衍生讲解了目前流行的DevSecOps、AIOps、DevPerfOps,以及混沌工程等内容;第5章和第6章立足于工具建设,详细介绍了流量回放、精准测试、服务虚拟化,以及AI在研发效能提升中的应用等12个大大小小的工具、系统与设计理念;第7章介绍了组织效能提升的多种手段,同时给出作者从实践中总结的大量经验和误区;第8章为案例篇,通过对四家不同形态企业的研发效能提升的实战讲解,帮助读者举一反三、融会贯通。 本书适合IT行业的各类从业人群,无论是技术人员、项目经理、产品经理,还是团队管理人员;无论是初入IT行业的新人,还是资深专家和高层管理者,都能从本书中得到启发。
目录
第1章 软件研发效能概论 1
1.1 到底什么是研发效能 2
1.1.1 研发效能提升案例1:前端代码的自动生成 3
1.1.2 研发效能提升案例2:临界参数下的API测试 4
1.1.3 研发效能提升案例3:基于流程优化的效能提升 5
1.2 研发效能的“第一性原理” 6
1.3 研发效能的另一种解读 7
1.4 基于工具协作的研发效能提升 8
1.5 基于MVP原则构建研发效能的持续改进 11
1.6 研发效能提升最佳实践的探索 12
1.6.1 从痛点入手 13
1.6.2 从全局切入 14
1.6.3 用户获益 15
1.6.4 持续改进 16
1.6.5 全局优化 17
1.6.6 效能平台架构的灵活性 18
1.6.7 杜绝“掩耳盗铃” 18
1.6.8 吃自己的“狗粮” 19
1.7 研发效能的发展方向与未来展望 20
1.8 总结 21
第2章 研发效能的进阶解读 23
2.1 研发效能与霍桑效应 25
2.1.1 霍桑效应 25
2.1.2 霍桑效应的负面影响 26
2.1.3 霍桑效应的正面影响 27
2.2 摩尔定律与反摩尔定律 28
2.2.1 摩尔定律 28
2.2.2 反摩尔定律 28
2.2.3 反摩尔定律对研发效能的意义 29
2.3 不容忽视的沟通成本 31
2.3.1 信息熵 32
2.3.2 沟通信息熵衰减 32
2.3.3 自解释编程 34
2.4 研发效能对现代大型软件企业的重要性 35
2.5 总结 37
第3章 项目管理中的提效手段 38
3.1 敏捷项目管理概述 39
3.1.1 敏捷宣言 40
3.1.2 常见的敏捷开发方法 42
3.1.3 敏捷角色 45
3.2 敏捷项目管理中效能提升的五大要素 47
3.2.1 自组织团队 47
3.2.2 持续改进 48
3.2.3 频繁交付 48
3.2.4 消除对立 49
3.2.5 未雨绸缪 50
3.3 敏捷项目管理中的常见误区 50
3.3.1 敏捷开发就是快速开发 51
3.3.2 敏捷开发应当抛弃文档 51
3.3.3 敏捷开发只适合小微团队 52
3.3.4 敏捷开发沦为小瀑布开发 52
3.3.5 敏捷是没有约束的 53
3.4 建立度量体系:无法度量,就无法改进 54
3.4.1 选择度量指标 55
3.4.2 构建度量体系 58
3.4.3 度量的误区 59
3.5 可视化:打开窗户看世界 60
3.5.1 项目管理中的效能可视化 61
3.5.2 效能数据可视化 64
3.6 提速:依赖解耦,提升交付速度 65
3.6.1 提速的切入点 65
3.6.2 高频的威力 68
3.6.3 避免竖井效应 68
3.7 消除变量:控制复杂度 70
3.7.1 约束 70
3.7.2 控制 71
3.7.3 抵抗熵增 71
3.7.4 远虑 72
3.8 未雨绸缪:防御性管理 73
3.8.1 及时暴露风险 73
3.8.2 防御性管理 74
3.8.3 Plan B 74
3.8.4 避免盲目自信 75
3.9 总结 76
第4章 DevOps落地实施精要 78
4.1 DevOps核心解读 80
4.1.1 DevOps的“六大武器” 81
4.1.2 自动化、自动化、自动化 82
4.1.3 DevOps生命周期精解 83
4.1.4 DevOps不适合的场景 86
4.2 代码、分支与流水线 86
4.2.1 代码质量 87
4.2.2 分支与工作流 91
4.2.3 流水线 94
4.3 持续集成与持续交付 96
4.3.1 持续集成与持续交付的轻量级实施 98
4.3.2 持续集成与持续交付的误区 101
4.4 容器技术在DevOps中的应用 103
4.4.1 无容器化管理 104
4.4.2 持续集成的容器化 104
4.4.3 持续交付的容器化 105
4.4.4 测试环境的容器化 107
4.5 混沌工程 109
4.5.1 Chaos Monkey 110
4.5.2 混沌工程的实施要点 111
4.5.3 混沌工程的相关工具 114
4.6 DevSecOps的由来与发展 115
4.6.1 传统软件安全开发体系面临的挑战 115
4.6.2 新技术对软件安全开发提出的挑战 118
4.6.3 DevSecOps概念的诞生与内涵 119
4.6.4 DevSecOps工具 121
4.6.5 典型DevSecOps流程的解读 124
4.7 AIOps的行业实践 126
4.7.1 AIOps的知识体系 128
4.7.2 AIOps实施的关键技术 129
4.7.3 AIOps的应用场景 133
4.7.4 AIOps在运营保障中的应用 134
4.7.5 AIOps在成本优化中的应用 137
4.7.6 AIOps在效率提升中的应用 139
4.8 DevPerfOps初探 142
4.8.1 全链路压测的局限性 142
4.8.2 DevPerfOps全流程解读 144
4.9 软件产品的可测试性和可运维性 149
4.9.1 可测试性的例子 150
4.9.2 可运维性的例子 151
4.10 总结 152
第5章 基于工具的研发效能提升(基础篇) 154
5.1 造数能力 155
5.1.1 通过服务接口实时造数 156
5.1.2 异步造数与造数平台 156
5.1.3 黄金数据集 158
5.1.4 生产数据迁移 159
5.2 流量回放 160
5.2.1 传统流量回放技术 161
5.2.2 请求对比 162
5.2.3 高级流量回放技术 163
5.3 精准测试 166
5.3.1 什么是精准测试 167
5.3.2 精准测试的工程化实施 168
5.3.3 精准测试的应用 170
5.4 异常场景测试 171
5.4.1 一个交易服务逆向流程补偿机制的设计 172
5.4.2 使用JVM-Sandbox制造异常场景 174
5.4.3 兼容异常场景测试和正常场景测试 176
5.4.4 异常场景测试平台 176
5.5 测试模块化 178
5.5.1 可复用单元 179
5.5.2 切面化 181
5.5.3 模块化案例 181
5.6 测试环境治理 183
5.6.1 测试环境的标签化容器方案 184
5.6.2 测试环境的配置管理 185
5.6.3 测试环境的可用性巡检 186
5.7 总结 187
第6章 基于工具的研发效能提升(进阶篇) 189
6.1 服务虚拟化 190
6.1.1 Hoverfly的搭建方式 191
6.1.2 Hoverfly的六大模式 192
6.1.3 Hoverfly对有状态请求的支持 197
6.2 变异测试 200
6.2.1 变异测试的概念 201
6.2.2 两个基本假设和六大定义 201
6.2.3 变异测试步骤 204
6.2.4 变异测试实战 204
6.3 高效API自动化测试的分层设计 209
6.3.1 原始状态 210
6.3.2 API定义层 213
6.3.3 Service层 214
6.3.4 TestCase层 219
6.3.5 测试数据层 221
6.4 高效GUI自动化测试的分层设计 223
6.4.1 Page Object 224
6.4.2 Page Section 225
6.4.3 Flow 226
6.4.4 Action 226
6.5 AI在研发效能提升中的应用 228
6.5.1 AI在测试结果分析中的应用 229
6.5.2 使用aiXcoder开发代码的效率提升 231
6.6 单元测试用例的自动化生成 234
6.6.1 EvoSuite 235
6.6.2 Diffblue Cover 239
6.7 总结 240
第7章 组织效能提升 242
7.1 工程效能部:从哪里来,到哪里去 244
7.1.1 工程效能部的背景 244
7.1.2 工程效能部的组织建设 245
7.1.3 工程效能部的未来 247
7.2 业务中台与质量中台 248
7.2.1 中台的深入解读 249
7.2.2 业务中台解读 250
7.2.3 质量中台解读 251
7.3 组织建设中的研发效能度量 252
7.3.1 度量失败的案例 253
7.3.2 度量失败的原因 254
7.3.3 组织建设中的研发效能度量精解 255
7.3.4 组织建设中的研发效能度量误区 258
7.4 高效组织建设的最佳实践 263
7.4.1 不要制定冲突的目标 264
7.4.2 善用激励手段,敢用惩罚手段 265
7.4.3 规避形式主义,勇于做减法 266
7.4.4 重视创新,鼓励“小轮子”经济 267
7.5 企业级研发效能提升的常见误区 268
7.5.1 试图提升研发效能的绝对值 268
7.5.2 迷信单点局部能力 268
7.5.3 过高估计普适性的通用研发效能工具的能力 269
7.5.4 用伪工程实践和面子工程来滥竽充数 270
7.5.5 忽略研发效能工具体系的长尾效应 270
7.5.6 盲目跟风 271
7.5.7 研发效能的“冷思考” 271
7.6 总结 272
第8章 业界优秀研发效能提升案例解读 274
8.1 大型全球化电商公司的“去QE化”实践 275
8.1.1 “去QE化”带来的问题 277
8.1.2 “去QE化”的工程建设 278
8.2 CODING团队的组织效能变迁 288
8.2.1 作坊式的团队组织 288
8.2.2 “稍微”敏捷的团队组织 289
8.2.3 产品制的团队组织 291
8.2.4 基于工具优化助力组织建设 292
8.3 大型通信行业公司的研发效能提升实战案例 293
8.3.1 DevOps实践 294
8.3.2 敏捷开发实践 296
8.3.3 研发效能的度量 298
8.3.4 案例总结 299
8.4 某大型金融行业公司的性能测试提效之路 299
8.4.1 背景与挑战 300
8.4.2 基础平台建设 301
8.4.3 性能测试体系建设 303
8.4.4 案例总结 308
8.5 总结 310
参考文献 312