第一部分 内核思想解释 4
第1章 简要介绍如何使用内核 4
1.1为什么开发优秀软件具有很大的挑战性 5
1.2认识软件工程的本质:内核 6
1.3应用内核处理特定挑战:一个例子 6
1.3.1进入问题的要点 7
1.3.2处理挑战 8
1.4学习如何使用内核处理开发挑战 9
第2章 关于内核的一些更多的细节 10
2.1如何使用内核处理特定挑战:一个例子 11
2.2阿尔法介绍 11
2.3阿尔法使用状态帮助团队取得进展 14
2.4更多关于内核的内容 16
第3章 纵览完整的内核 17
3.1内核的组织结构 18
3.2对于进展和演变是本质的事物:阿尔法 19
3.3对于做什么是本质的事情:活动空间 23
3.4所需的本质功能:能力 25
3.5更多关于内核的内容 26
第4章 利用卡片使内核阿尔法变得具体 27
4.1使用卡片帮助处理特定挑战:一个例子 28
4.2使内核活跃起来 30
第5章 通过实践了解更多有关内核的细节 32
5.1使实践变得清晰 33
5.2实践的明确程度 34
5.3从实践中构建方法 35
5.4学习方法和实践 36
第6章 内核可以为你做什么 37
6.1开发卓越软件 38
6.2成长 40
6.3学习 40
6.4演进 41
延伸阅读 42
第二部分 使用内核运行一次迭代 44
第7章 使用内核运行迭代:计划-执行-检查-调整 44
7.1使用的术语 45
7.2计划-执行-检查-调整 45
7.3设定场景 47
7.4下几章的重点 48
第8章 计划一次迭代 49
8.1用阿尔法状态指导计划 50
8.1.1确定当前的进展 51
8.1.2确定下一步工作目标 52
8.1.3确定如何完成目标 52
8.2确定当前状态 52
8.3确定下一个状态 54
8.4确定如何达到下一组状态 55
8.5内核如何帮助你进行迭代计划 56
第9章 执行和检查迭代 57
9.1使用内核执行和检查迭代 58
9.2执行和检查我们故事中的迭代 58
9.3内核如何帮助你执行和检查迭代 62
第10章 调整工作方式 63
10.1使用内核调整工作方式 64
10.2调整我们故事中的工作方式 64
10.3内核如何帮助你调整工作方式 66
10.3.1明确工作方式 66
10.3.2改进工作方式 67
第11章 使用明确的需求项状态运行一次迭代 68
11.1使用明确的需求项完成工作 69
11.2计划我们故事中的迭代 71
11.3进行我们故事中的另一次迭代 71
11.4调整我们故事中的工作方式 74
11.5讨论 76
延伸阅读 76
第三部分 使用内核运行一个软件开发工作 78
第12章 运行一个软件开发工作:从想法到运营 78
12.1我们故事中的人物和他们一路上所面临的挑战 79
12.2了解组织环境 79
第13章 创建业务案例 81
13.1准备开始我们的故事 82
13.2了解机会和涉众 84
13.3了解解决方案 86
13.4准备工作 88
13.5制定一个概要计划 89
13.6建立时间进度表 93
13.7内核如何帮助你开始 94
13.7.1拥抱你的涉众 94
13.7.2指导开发 95
13.7.3预先计划 95
第14章 开发系统 96
14.1构建骨架系统——让它能工作 99
14.2涉众参与 100
14.3开始开发 101
14.4建立一个各方都认可的工作方式 103
14.5使骨架系统可用——让系统工作得更好 105
14.6保持涉众参与 106
14.7演化一个可用的系统 107
14.8找到一个好的工作方式 109
14.9演进为可部署的解决方案——结束工作 110
14.10通过验收 111
14.11准备交付 112
14.12完成!完成开发工作 114
14.13内核如何帮助你开发卓越的软件 115
第15章 运营软件 116
15.1设置场景 117
15.2上线——成功地部署系统 119
15.3部署系统 120
15.4两个团队之间的移交 122
15.5支持系统直到其退役 124
15.6我们的故事结束 126
延伸阅读 127
第四部分 利用内核来规模化开发 130
第16章 规模化意味着什么 130
第17章 细化内核来提供更多细节 133
17.1对于缺乏经验的成员将“实践”变得精确 134
17.2实例:需求获取的实践 135
17.3实例:验收测试的实践 137
17.4了解实践是如何协同工作的 138
17.5“明确的实践”的价值 140
第18章 拓展内核来适配不同类型软件开发 141
18.1商定需要使用的实践 142
18.2适应你的开发生命周期 143
18.3在开发过程中增量式地建立一个方法 144
18.4大型组织中的方法 146
18.5让团队控制他们的方法 147
第19章 向上规模化内核来适用大型复杂软件开发 148
19.1大型软件开发的例子 149
19.2利用阿尔法来组织工作 150
19.3利用阿尔法进行可视化开发 153
19.4利用阿尔法来协调开发团队 154
19.5让团队成员参与内核的规模化 156
延伸阅读 156
第五部分 内核如何改变你在工作中运用方法的方式 158
第20章 考虑与不考虑方法 158
20.1不停地思考方法 159
20.2做比说强 160
第21章 敏捷运用方法 161
21.1是整个团队而不是小部分人拥有方法 162
21.2关注于方法使用胜过综合方法描述 163
21.3不断演化团队的方法而不是保持方法固定不变 164
第六部分 真正新在哪 166
第22章 重建方法 166
22.1并不缺少方法,缺少的是基础——内核 167
22.2内核重视实践性 168
22.3内核是可付诸实施的、可扩展的 168
第23章 在方法上应用关注点分离原则 170
23.1将内核从实践中分离 171
23.2将阿尔法从工作产品中分离 172
23.3将本质从细节中分离 173
第24章 关键区分 174
24.1方法上的创新 175
24.2方便软件开发团队和专业人员的实用工具 175
第七部分 结语 178
第25章 这并不是终点 178
第26章 ……,但是现在可能是序幕的结束 180
第27章 愿景实现之时 183
27.1对于软件专业人员 184
27.2对于产业界 185
27.3对于学术界 185
27.4令人激动的未来 186
延伸阅读 186
附录 190
附录A概念和符号 190
附录B本书所涉及内容相比内核的差异 191
B.1内核和本书都包含的内容 191
B.2内核不包含但本书包含的内容 191
B.3内核包含但本书不包含的内容 192
附录C参考文献 193
C.1 SEMAT工作文献 193
C.2 SEMAT:其他文档和参考文献 193
C.3其他参考文献 195
作者介绍 196
业内人士对本书的评价 198
索引 206