SEMAT(Software Engineering Method and Theory,软件工程方法和理论)是一个国际倡议,旨在确定一个软件工程的公共基础或通用标准。它得到了一些全球软件工程领域最杰出的贡献者的支持。通过创建一种简单的语言来描述方法和实践,SEMAT团队将这个公共基础表示为一个由所有软件开发基本要素组成的内核(或框架)。
软件工程的本质:运用SEMAT内核介绍了这个内核并展示了如何在开发软件和改进团队工作方式时运用这个内核。本书是为软件专业人员、教育工作者和学生而非软件方法论者写的。对于所有需要评价和选择他们工作最佳实践的软件开发团队的成员,本书的实用性和价值远远胜过任何一个方法的描述或应用。
目录
- 译者序
- Robert Martin作序
- Bertrand Meyer作序
- Richard Soley作序
- 前言
- 致谢
- 第一部分 内核思想解释
- 第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
- 第二部分 使用内核运行一次迭代
- 第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
- 第三部分 使用内核运行一个软件开发工作
- 第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
- 第四部分 利用内核来规模化开发
- 第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
- 第五部分 内核如何改变你在工作中运用方法的方式
- 第20章 考虑与不考虑方法158
- 20.1 不停地思考方法159
- 20.2 做比说强160
- 第21章 敏捷运用方法161
- 21.1 是整个团队而不是小部分人拥有方法162
- 21.2 关注于方法使用胜过综合方法描述163
- 21.3 不断演化团队的方法而不是保持方法固定不变164
- 第六部分 真正新在哪
- 第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
- 第七部分 结语
- 第25章 这并不是终点178
- 第26章 ……,但是现在可能是序幕的结束180
- 第27章 愿景实现之时183
- 27.1 对于软件专业人员184
- 27.2 对于产业界185
- 27.3 对于学术界185
- 27.4 令人激动的未来186
- 延伸阅读186
- 附录
- 附录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