敏捷技能修炼:《敏捷软件开发与设计的最佳实践》

2012-09-24 07:54:00
王春生
原创
50032
摘要:4位世界顶级软件开发专家、敏捷导师兼Jolt大奖获得者数十年工作经验结晶,敏捷软件开发领域公认的经典著作围绕意图导向编程、分离构造和使用、测试先行、Shalloway原则、面向接口设计、测试驱动开发、避免过度设计、持续集成、共性和可变性分析、重构等核心技术主题给出了大量最佳实践,字字珠玑。

敏捷技能修炼:敏捷软件开发与设计的最佳实践

原书名:Essential Skills for the Agile Developer: A Guide to Better Programming and Design

作者:Alan Shalloway   Scott Bain   Ken Pugh   Amir Kolsky

译者: 郑立   邹骏   黄灵

出版社:机械工业出版社

出版时间:2012年9月

ISBN: 9787111395270

定价: 59.00元

购买链接: http://product.china-pub.com/3683641

样章试读http://vdisk.weibo.com/s/cJGU3


编辑推荐:

4位世界顶级软件开发专家、敏捷导师兼Jolt大奖获得者数十年工作经验结晶,敏捷软件开发领域公认的经典著作

围绕意图导向编程、分离构造和使用、测试先行、Shalloway原则、面向接口设计、测试驱动开发、避免过度设计、持续集成、共性和可变性分析、重构等核心技术主题给出了大量最佳实践,字字珠玑。

内容简介:

本书的4位作者都是世界顶级的软件开发专家和敏捷导师,都有数十年的软件行业从业经验,其中3位曾荣获Jolt大奖。本书是敏捷软件开发领域公认的经典著作,权威性毋庸置疑。


书中内容围绕“敏捷式编程”这一主题展开,对每一位敏捷软件开发人员都应该掌握的核心技能和技术进行了深入阐述,总结出了大量最佳实践,提供了一整套最精炼的技术集合,可以帮助他们在开发中变得游刃有余,极大地提高开发效率和软件质量。


本书共分四个部分:第一部分(1~7章),阐述了在软件开发过程中能起到“四两拨千斤”作用的几种思想方法(“小舵板”),如意图导向编程、分离构造和使用、测试先行和Shalloway原则等,并总结了业界常用的几种实践,包括如何封装、面向接口的设计和验收测试驱动等;第二部分(8~9章),对过度设计和持续集成这两个问题进行了深入的探讨,并给出了最佳实践;第三部分(10~13章),作者分享了很多只有在他们的教学现场才能获得的经验,这些经验是优秀架构师应该具备的,具体包括共性和可变性分析、以开放关闭原则为目标的重构、需求与功能接口、何时以及如何使用继承等重要内容;第四部分是附录,介绍了统一建模语言、提高代码质量的原则,以及如何封装原始数据类型等。

 

作者简介:

Alan Shalloway,Net Objectives公司创始人及CEO。Alan有40多年工作经验,他是计算机软件行业,特别是精益、看板、产品系列管理、scrum和敏捷设计方面的思想领导者。是《Design Patterns Explained: A New Perspective on Object-Oriented Design》(Jolt获奖作品)和《Lean-Agile Pocket Guide for Scrum Teams》的主要作者。

Scott Bain,在计算机技术方面有将近40年经验,从事过软件开发、软件工程、框架设计等方面的工作。Scott也曾经从事课堂和远程教学等教育活动,包括课程的设计、实施培训和相关管理,给用户提供认证培训和终端用户培训。他是《Emergent Design: The Evolutionary Nature of Professional Software Development》的作者,此书荣获了Jolt生产力奖。

Ken Pugh, Net Objectives公司高级咨询师。凭借多年的丰富经验,他提供培训和辅导,帮助公司向精益-敏捷转型。他热衷于研究沟通(特别是有效地传递需求)、业务价值交付,以及用精益原则来快速进行高质量的交付。此外,他还写过好几本编程书籍,包括获得2006年Jolt大奖的《Prefactoring: Extreme Abstraction, Extreme Separation, Extreme Readability》。 


Amir Kolsky,Net Objectives的资深咨询师、教练和培训师。Amir从事计算机科学领域已经超过25年了。他在IBM研究院工作过10年,此外有9年时间在各种大小类型的公司担任过首席架构师和首席技术官等职位。他从2000年开始接触敏捷开发。目前Amir作为敏捷教练和讲师,提供关于精益和敏捷软件流程、工具和实践、Scrum、极限编程、设计模式以及测试驱动开发方面的培训。


译者简介


郑立,敏捷教练、CSP、管理咨询顾问和资深软件开发工程师,致力于敏捷技术的实践、研究和推广,曾发表论文《敏捷软件开发模型实施研究》,组织并参加了中国敏捷之旅(AgileTour)、Scrum Gathering China、敏捷中国(Agile China)和其他敏捷活动。在软件开发流程和管理方面有深刻的认识,专注于提高企业级软件的开发效率和品质。 


邹骏,敏捷教练、极限编程实践者和资深软件开发工程师,是国内Scrum和持续集成技术的先驱者之一,致力于帮助企业实践敏捷软件开发方法,并重点关注优秀的软件设计原则和编码方式、持续集成、测试自动化等工程实践能力的培养。


黄灵,敏捷教练、PMP、CSM 和CSP,有多年软件开发项目和项目群管理经验。现就职于惠普,担任敏捷教练和咨询师,为团队提供敏捷培训和咨询,并在这个过程中不断提升自己对敏捷思想的理解和认识。上海敏捷社区的积极参与者和贡献者之一,曾参与过AgileTour Shanghai 和Scrum Gathering China的组织活动。

 

媒体评论

“我曾经告诉我的团队,精益和敏捷实践应该像吃自助餐那样:不要试图掌握所有一切,而是去尝试那些对项目有意义的事情,否则就会失败。在这本书里,作者简洁地描述了最有效的那些实践的‘为什么’及‘怎么做’,这些有效的方式可以帮助所有软件工程师在短周期内写出高质量代码。”—— Kay Johnson,IBM软件开发效率顾问


“成功的敏捷开发不仅仅要求精通一门计算机语言,更要求对敏捷开发方式和最佳实践有深层次的理解。这本书为学习乃至真正理解敏捷开发背后的方法和动机提供了一个完善的基础。”—— R.L. Bogetti,www.RLBogetti.com,Baxter Healthcare公司系统设计师

“这本书是一个很好的资源库,它提供了许多可供练习的、能演示那些关键敏捷实践的代码样例。”—— Dave Hendricksen,Thomson Reuters软件架构师

 

目录

推荐序

译者序

丛书前言

前言

致谢

第一部分 最关键的小舵板

第1章 意图导向编程

1.1意图导向编程:一个实例

1.2优点

1.3小结

第2章 分离构造和使用

2.1一个重要的问题

2.2两种视图

2.3给你的决策计时

2.4重载和C++

2.5自我查验

2.6小结

第3章 代码未动,测试先行

3.1一个小舵板:测试与可测试性

3.2什么是测试

3.3可测试性和代码质量

3.4案例学习:可测试性

3.5一个关于测试先行的思考

3.6小结

第4章 Shalloway法则和Shalloway原则

4.1冗余的种类

4.2重新定义冗余

4.3其他形式的冗余

4.4设计模式在减少冗余时扮演的角色

4.5很少有开发人员花费大量的时间去“修改”代码错误

4.6冗余对代码质量其他方面的影响

4.7小结

第5章 封装

5.1未封装的代码:对全局变量的破坏

5.2成员标志的封装

5.3自封装成员

5.4预防代码更改

5.5封装引用对象的难点

5.6用get()来打破封装

5.7对象类型的封装

5.8设计的封装

5.9各个层次的封装

5.10实用性建议:把困难封装起来

5.11小结

第6章 面向接口的设计

6.1针对接口的设计

6.2接口的定义

6.3接口约定

6.4分离不同的视图

6.5接口的模拟实现

6.6让接口保持简单

6.7避免过早采用继承体系

6.8接口和抽象类

6.9依赖反转原则

6.10多态性概述

6.11不是每个类都需要接口

6.12小结

第7章 验收测试驱动开发

7.1两种开发流程

7.2验收测试

7.3一个关于验收测试的实例

7.4实现验收测试

7.5一个练习

7.6如果客户不告诉你怎么做的时候,你应该怎么办

7.7小结

第二部分 基本态度

第8章 避免过度设计或设计不足

8.1给开发人员的箴言

8.2代码质量病理学

8.3避免过度设计或设计不足

8.4把复杂度和返工最小化

8.5永不把代码变得更糟/仅在有目的的情况下降低代码质量

8.6使代码容易修改,足够强大健壮,适应变化并安全可靠

8.7在非面向对象的代码或遗留系统里编写易于修改代码的策略

8.8小结

第9章 持续集成

9.1建立源代码分支

9.2将主干内容合并回分支

9.3测试驱动开发与合并成本

9.4持续集成

9.5持续集成服务器

9.6小结

第三部分 设计问题

第10章 共性和可变性分析

10.1用动词和名词来做指南:警告,前面有危险

10.2真正的问题是什么

10.3我们所需要知道的

10.4共性和可变性分析

10.5发掘对象的新范式

10.6分析矩阵:一个用例学习

10.7小结

第11章 以开放关闭原则为目标的重构

11.1开放关闭原则

11.2重构

11.3小结

第12章 需求与功能接口

12.1迪米特法则

12.2耦合,可恶的耦合,还有依赖

12.3理想的分离方案:需求接口和功能接口

12.4回到迪米特法则

12.5小结

第13章 何时以及如何使用继承

13.1“四人组”

13.2初始向量,最终结果

13.3优先委托

13.4使用继承与使用委托

13.5继承的使用

13.6可扩展性

13.7在敏捷开发里应用四人组的训诫

13.8测试问题

13.9更多

第四部分 附录

附录A统一建模语言概览

附录B代码质量

附录C封装原始数据类型

文章分类
联系我们
联系人: 徐先生
电话: 4006-8899-23
Email: co@cnezsoft.com
QQ: 1492153927
地址: 青岛开发区武夷山路167号千禧龙花园9-1-101室