第1章 敏捷软件开发方法的历程 1
1.1 敏捷方法的出现 1
1.1.1 软件开发简史 1
1.1.2 敏捷方法是历史的必然 8
1.2 敏捷联盟与敏捷宣言 9
1.2.1 个人与沟通胜过过程与工具 10
1.2.2 可工作软件胜过面面俱到的文档 10
1.2.3 客户协作胜过合同谈判 11
1.2.4 响应变化胜过遵循计划 11
1.3 敏捷原则 11
1.3.1 敏捷的十二项原则 11
1.3.2 敏捷实践和原则与传统方法的比较 14
1.4 敏捷方法动态 14
1.4.1 敏捷领导力运动 15
1.4.2 敏捷成熟度模型 16
第2章 敏捷软件方法族 22
2.1 Scrum方法 22
2.1.1 理论方法与经验方法 22
2.1.2 Scrum——经验式过程框架 23
2.1.3 Scrum流程与实践 24
2.2 极限编程方法 28
2.2.1 XP的过程模型 28
2.2.2 XP的价值观、原则和实践 29
2.2.3 XP2的一些变化 34
2.3 Crystal方法 39
2.4 特性驱动开发方法 41
2.4.1 FDD中的角色和职责 41
2.4.2 FDD开发过程 43
2.5 精益软件开发 44
2.5.1 丰田生产系统与精益生产 45
2.5.2 精益软件开发原则和工具 47
2.6 适应性软件开发 60
2.7 动态系统开发方法 61
2.7.1 DSDM项目生命周期阶段的四个步骤 62
2.7.2 DSDM的原则 63
2.8 敏捷统一过程 63
2.8.1 AUP的四个总体阶段 64
2.8.2 AUP规程及在各阶段的工作 66
2.8.3 增量式发布 68
2.8.4 AUP的原则 68
2.9 各种敏捷方法的简单总结 68
第3章 敏捷项目交付模型 71
3.1 敏捷软件交付模型 71
3.2 项目规划 72
3.2.1 本阶段工作概述 72
3.2.2 统一不同涉众的目标和愿景 75
3.2.3 确定项目初始范围 80
3.2.4 制定初始发布计划 92
3.3 迭代开发 96
3.3.1 项目启动 迭代0 96
3.3.2 迭代开发过程 97
3.4 发布前的用户验收测试 104
3.4.1 发布前验收测试的必要性 104
3.4.2 用户验收测试的分类及实施 104
第4章 敏捷管理实践 109
4.1 项目范围管理 109
4.1.1 引例 109
4.1.2 项目管理三角形 113
4.1.3 需求变更管理 115
4.1.4 敏捷范围管理 117
4.2 每日站立会议(Stand-up) 118
4.2.1 Stand-up及其作用 118
4.2.2 Stand-up的常用实践 120
4.2.3 Stand-up的常见问题 121
4.3 项目进度跟踪 123
4.3.1 发布进度跟踪 124
4.3.2 迭代进度跟踪 126
4.4 迭代回顾 128
4.4.1 回顾的作用 128
4.4.2 迭代回顾过程——海星图法 129
4.4.3 其他回顾方法 136
4.5 项目风险管理 140
4.5.1 风险识别 140
4.5.2 风险评估 141
4.5.3 风险应对 141
4.5.4 风险管理检查 142
4.6 促进信息交换的工作空间 143
4.6.1 作战墙 143
4.6.2 开放式工作室 144
第5章 敏捷开发实践 145
5.1 敏捷需求分析 145
5.1.1 传统需求分析和敏捷需求分析的对比 145
5.1.2 敏捷需求划分的单位 146
5.1.3 敏捷需求分析的时机和细化过程 151
5.1.4 敏捷需求分析中的文档 155
5.2 设计与编码实践 158
5.2.1 简单设计 159
5.2.2 重构 159
5.2.3 持续集成 161
5.2.4 测试驱动开发 161
5.2.5 演进式设计 162
5.3 测试 163
5.3.1 开发沙箱测试 164
5.3.2 自动化验收测试 165
5.3.3 探索测试 166
5.3.4 冒烟、Sanity与回归测试 169
第6章 软件开发企业的敏捷转型 170
6.1 采用敏捷与敏捷转型 170
6.2 企业转型决策分析 171
6.2.1 转型动因分析 171
6.2.2 判断敏捷是否是企业所需 172
6.2.3 选择变革方式 172
6.3 企业变革模型 172
6.3.1 Lewin变革模型 173
6.3.2 Kotter变革实施模型 173
6.4 转型的实施过程 175
6.4.1 产生紧迫感 175
6.4.2 建立强有力的领导联盟 175
6.4.3 确立转型愿景 177
6.4.4 沟通转型愿景 178
6.4.5 排除障碍 179
6.4.6 计划并夺取短期胜利 181
6.4.7 巩固成果并深化变革 183
6.4.8 变革成果制度化 184
第7章 分布式环境下的敏捷实践 186
7.1 分布式敏捷和案例项目简述 186
7.2 敏捷方法面临的困难 188
7.2.1 沟通障碍 188
7.2.2 语言与文化背景差异 189
7.2.3 缺乏控制 190
7.2.4 缺乏信任 190
7.2.5 现场业务分析师的强势 190
7.3 一些改进性实践 191
7.3.1 沟通改进 191
7.3.2 保持项目状态可视 195
7.3.3 增进信任 195
7.3.4 减少转手工作 196
7.3.5 额外的客户联系 196
7.3.6 更详细的需求文档 198
7.3.7 持续的过程调整 199
参考文献 200