出版时间:2014-1 出版社:机械工业出版社 作者:Ivar Jacobson,Pan-Wei Ng,Paul E.McMahon,Ian Spence,Svante Lidman 译者:陈钟 等
内容概要
【本书特色】
软件工程巨擎返璞归真,回归软件工程基本层面
全球软件社区广泛支持,全新标准已获OMG通过
SEMAT发展的重要里程碑,软件工程领域的大事件
【专家推荐】
软件既是艺术又是科学产物,它同时需要激情和规范。编写好的软件既需要想象力和创造力的自由翱翔,又需要残酷现实的工程权衡。本书尝试描述这种平衡。
Robert Martin
Ivar Jacobson和他的同事们的工作,作为SEMAT倡议的一部分,已经采用了一种系统化的方法来确定一种经得起时间和认知检验的软件工程原理与实践的“内核”。
Bertrand Meyer
软件开发产业需要一个用来定义软件开发实践的内核及语言,这些实践可以被混合及配对,可以被其他组织引进,可以被度量,可以被集成,可以被比较和对照它们的速度、质量及价格。这本充满思想的书给了一个思考问题的良好基础,以及一种解决该需求的语言,每个软件工程师都应该阅读这本书。
Richard Soley
这是一本与众不同的书,是引导我们重新认识软件、软件工程和人的关系的书。书中阐述了SEMAT的本质,分享了运用SEMAT内核解决具体问题的案例和有效性。本书是SEMAT发展的一个里程碑,也是软件工程领域的一件大事。我相信这本书对众多软件从业人员和软件工程学者都有重要的参考价值。
陈 钟
【内容简介】
SEMAT(Software Engineering Method and Theory,软件工程方法和理论)是一个国际倡议,旨在确定一个软件工程的公共基础或通用标准。它得到了一些全球软件工程领域最杰出的贡献者的支持。通过创建一种简单的语言来描述方法和实践,SEMAT团队将这个公共基础表示为一个由所有软件开发基本要素组成的内核(或框架)。
本书介绍了这个内核并展示了如何在开发软件和改进团队工作方式时运用这个内核。本书是为软件专业人员、教育工作者和学生而非软件方法论者写的。对于所有需要评价和选择他们工作最佳实践的软件开发团队的成员,本书的实用性和价值远远胜过任何一个方法的描述或应用。
作者简介
【作者简介】
Ivar Jacobson 博士
组件与组件架构、用例、统一建模语言(UML和)Rational统一过程(RUP)之父。他在现代业务建模和面向方面的软件开发方法方面做出杰出贡献。近年来他致力于如何以一个超轻型或敏捷方式处理方法和工具的研究工作。他开发出一个实践概念,现在已经被开发者和工具制造者所采用。现在他是一个世界范围的网络——SEMAT的领导人之一,试图革新软件开发方式。他还是六部影响巨大的畅销书的主要作者,IJI(Ivar Jacobson International)公司董事局主席,IJI公司的分部遍布美国、英国、荷兰、中国、新加坡、瑞典和加拿大。
Pan-Wei Ng(黄邦伟)博士
乐于与各个层次的开发者和软件专业人员一起工作。他曾经成功指导了多家大型系统开发组织(其中每个产品发布都涉及数百万行代码和数百人参与),将他们的工作方式转向精益和敏捷方式的同时不会忘记改进他们的代码、体系架构、基于用例的测试。黄博士是IJI公司的首席顾问和亚太总部的技术总监。他也是《基于用例的面向方面的软件开发》一书的共同作者(Addison-Wesley,2005)。黄博士的信条是要让事情可见和实用,他从SEMAT创立伊始就是内核背后的一个活跃的思想贡献者。特别是他在帮助一个大型、跨文化的外包开发项目提高软件工程能力时发明了状态卡片。
Paul E. McMahon
PEM系统公司的主管,在过去15年间一直担任独立咨询顾问,帮助软件组织增强敏捷性和过程成熟度。他发表了40余篇文章,许多是关于敏捷开发和使用CMMI的教训的。他是一位CSM(Certified Scrum Master),师从于Scrum的一位共同创始人的学生,他还是认证的精益六西格玛黑带大师。他具有超过25年的工程和管理经验,曾供职于洛克希德马丁公司和Link Simulation公司等。他从瑞士启动会议开始就是SEMAT计划中的一位领导人。他的著作包括:《CMMI+敏捷整合开发:更快改进性能的案例与实用技术》(Addison-Wesley,2011),《虚拟项目管理》(CRC Press,2000)
lan Spence
IJI公司首席科学家和主任咨询顾问,他专注于大型敏捷方法运用和基于实践的组织架构变革。作为一个经验丰富的敏捷教练,他曾经为上百个项目引进迭代和敏捷实践,与各种规模(从5人到150人)的团队一起工作。他还成功地引导为数众多的大型转化项目,涉及政府、电信、金融和Internet初创公司等多个领域,和各种规模软件组织(从5个人的小公司到5000人的大型公司)一起工作。他现在的兴趣包括:敏捷用于大型项目、敏捷外包以及利用敏捷度量驱动可持续变更等。他是两部有影响的软件开发著作的共同作者:《用例建模》(Addison-Wesley,2002)和《迭代软件开发项目管理》(Addison-Wesley,2007)。他还是开发SEMAT内核的小组负责人。
Svante Lidman
Hansoft AB公司的高级生产力专家。在其25年的工业界生涯中,他曾经担任过开发经理、规划经理、项目主管、咨询顾问、培训师,供职过的公司包括IJI、Microsoft、Rational Software和其他公司等。在最近的五年中,Svante主要专注于大型项目中精益、敏捷方法的采用。他是团队动态管理和大型精益与敏捷软件开发实践的主要演讲人。
【译者简介】
陈钟
教育部计算机类专业教学指导委员会副主任,北京大学博士生导师、教授,现任信息科学技术学院计算机系主任,曾任北京大学软件与微电子学院院长。陈钟教授是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
图书封面
评论、评分、阅读与下载