第1章 敏捷共识 1
敏捷的起源 1
敏捷的出现是为了处理复杂性 2
经验过程模型 3
新的共识 4
关于Scrum 5
潜在可上市 6
减少软件开发中的浪费 8
透明性 9
技术债务 9
一个例子 10
自管理团队 11
回到基础 11
小结 12
尾注 13
第2章 Scrum、敏捷实践和Visual Studio 15
Visual Studio和过程制定 16
过程模板 16
团队 18
过程周期和TFS 19
发布 20
冲刺 21
由下而上的周期 25
个人开发准备 25
测试周期 26
每个周期对“完成”的定义 29
检查和调整 29
任务板 30
看板 30
为项目适配过程 31
地理分布 32
小结 34
尾注 34
第3章 产品所有权 37
什么是产品所有权 38
商业价值问题:花生酱 38
客户价值问题:死鹦鹉 39
范围蔓延问题:下沉的船 40
Scrum的产品所有权 41
发布计划 42
兴奋、满意和不满意:卡诺分析 44
客户验证 52
服务质量 57
安全和隐私 57
性能 58
用户体验 58
可管理性 58
需求有多少层次 60
工作分解 60
小结 61
尾注 62
第4章 运行冲刺 65
来自定义过程控制的经验 66
精通Scrum 67
团队规模 68
快速估算(计划扑克) 68
对比的类比 72
使用描述性而非规定性指标 72
使用仪表板回答日常问题 76
燃尽图 76
质量仪表板 78
Bug仪表板 82
测试仪表板 82
构建仪表板 83
选择和自定义仪表板 83
使用微软Outlook来管理冲刺 84
小结 85
尾注 86
第5章 架构 89
敏捷共识中的架构 90
检查和调整:涌现式架构 90
架构和透明度 91
可维护性设计 92
探索现有架构 92
了解代码 92
维护控制 98
了解域 101
小结 109
尾注 110
第6章 开发 111
敏捷共识中的开发 112
冲刺周期 113
每日周期中要警惕避免 113
保持代码库干净 114
在签入时捕获错误 114
搁置而非签入 119
代码协作 120
早期检测编程错误 123
测试驱动的开发提供清晰度 123
代码未经测试 125
通过改变数据来优化测试 127
将单元测试重用为构建验证测试 128
有冗余代码时 130
使用自动化代码分析捕获编程错误 131
捕获副作用 133
隔离意外行为 133
隔离生产中的根本原因 135
优化性能 137
防止版本偏差 140
版本控制什么 140
分支 141
并行工作在不同版本 142
合并及跟踪分支间的变更 144
使用Eclipse或直接使用Windows Shell 145
使工作透明 146
小结 147
尾注 148
第7章 构建和实验室 149
周期时间 150
定义“完成” 151
持续集成 152
自动构建 154
每日构建 155
BVT 155
构建报告 155
维护构建定义 156
维护构建代理 157
自动部署到测试实验室 158
建立测试实验室 159
在生产中是否能像在实验室中一样正常工作 160
自动部署与测试 164
消除浪费 170
完成PBI 170
尽可能频繁地集成 170
检测流程中的低效率 171
小结 173
尾注 174
第8章 测试 175
敏捷共识中的测试 176
测试和价值流 177
检查和调整:探索性测试 177
测试和减少浪费 178
测试和透明度 178
测试产品积压工作项 179
最重要的首先测试 180
可操作的测试结果和错误报告 182
不再“无法再现” 184
使用探索性测试以避免错误的信心 185
处理bug 188
哪些测试应该自动化 189
自动场景测试 189
使用HTTP测试 191
负载测试,冲刺的一部分 193
了解输出 197
诊断性能问题 197
生产-现实测试环境 198
报告 199
基于风险的测试 200
像工作项那样捕获风险 201
安全测试 202
小结 202
尾注 203
第9章 微软开发部门的经验教训 205
规模 206
商业背景 207
文化 207
浪费 208
债务危机 209
2005年之后的改进 210
做到并保持干净 210
集成与隔离 211
产品积压工作 212
迭代积压工作 215
工程原则 217
结果 217
敏捷共识行动 218
经验教训 218
社会契约需要重建 219
经验教训 219
庆祝成功,但不宣告胜利 221
Visual Studio 2012之路 221
尾注 223
第10章 持续反馈 225
敏捷共识在行动 226
小结 230
生活在混沌的边缘 231
尾注 232