1 精益之由 1
1.1 软件开发中的问题 2
1.2 敏捷方法的成功故事 5
1.3 精益方法的成功故事 10
1.4 精益原则 13
2 在软件开发中应用精益思想 15
2.1 精益软件开发 16
2.2 精益Vs.敏捷 22
2.3 起步 24
3 实践0:源代码管理和脚本化构建 27
3.1 关于第0项实践 28
3.2 源代码管理 28
3.3 脚本化构建 34
3.4 集成化环境(Integrated Environment)的纪律 34
3.5 总结 35
4 实践1:自动化测试 37
4.1 为何需要测试? 39
4.2 什么是自动化测试? 41
4.3 测试的类型 43
4.4 测试的方法 49
4.5 总结 53
5 实践2:持续集成 55
5.1 端到端(End-to-End)的自动化构建 57
5.2 专门的构建服务器 61
5.3 持续集成软件 62
5.4 实施持续集成 63
5.5 持续集成内建了质量 65
5.6 实施持续集成中的阻力 67
5.7 总结 69
6 实践3:精简代码 71
6.1 保持代码的精益 73
6.2 开发精简的代码 75
6.3 实践“精简代码”的阻力 80
6.4 总结 81
7 实践4:短迭代周期 83
7.1 短迭代周期生成客户价值 85
7.2 以短迭代周期进行开发 88
7.3 关于迭代开发的误区 90
7.4 把大任务分解成小片段 92
7.5 总结 93
8 实践5:客户参与 95
8.1 客户参与是双行道 96
8.2 铺设道路 97
8.3 一个常见问题 101
8.4 总结 101
9 下一步? 103
9.1 精益思想和分析实践 104
9.2 改善(Kaizen) 105
9.3 改善研习会 106
9.4 价值流图 107
9.5 其他精益技术 109
9.6 其他互补的方法 115
9.7 从这里到哪里去 117
A 资源 119
索引 123