敏捷软g开发图书概?/span>
本文发表于程序员杂志2006q第5?/span>
?/span>
敏捷软g开发宣aQ我们正在通过亲n实践和帮助其他h实践Q揭C更好的软g开发方法,通过q项工作Q我们认为:
人和交流胜过q程和工?/span>
可工作的软g胜过面面俱到的文?/span>
客户协作胜过合同谈判
响应变化胜过遵@计划
虽然右项也有价|但是我们认ؓ左项更重要?/span>
?o:p>
—?Kent Beck
Q?/span>
Mike Beedle
Q?/span>
Arie van Bennekum
Q?/span>
Alistair Cockburn
Q?/span>
Ward Cunningham
Q?/span>
Martin Fowler
Q?/span>
James Grenning
Q?/span>
Jim Highsmith
Q?/span>
Andrew Hunt
Q?/span>
Ron Jeffries
Q?/span>
Jon Kern
Q?/span>
Brian Marick
Q?/span>
Robert C. Martin
Q?/span>
Steve Mellor
Q?/span>
Ken Schwaber
Q?/span>
Jeff Sutherland
Q?/span>
Dave Thomas
敏捷软g开发这个词?/span>
2006
q的中国软g界听h仍然昑־有些陌生。自
2001
q敏捯盟被发v以来Q敏h法的实践l验和理论研I在不断的更新。而我国的大多数程序员q是只能在书本上d敏捷的好处,很难在项目中q行实践。这其中的原因,主要是缺乏拥有实际敏捷项目经验的人来带领实施敏捷。虽然敏捷开发是U实践行为,很难从书本上直接学习Q不q多数程序员了解敏捷Q却都是先从书本开始的。无论结果怎样Q从认识到实늚q程是免不了的?/span>
敏捷软g开发之Ҏ论篇
大家都知道敏捯Y件开发方法包括了多种Ҏ论,主要有:
SCRUM
Q?/span>
Crystal,
特征驱动软g开发(
FDD
Q,自适应软g开发(
ASD
Q,以及最著名的极限编E?/span>
(XP)
。这些方法论分别在不同的著作上专门论q过Q?/span>
SCRUM
Q?/span>
Agile Software Development with Scrum
?/span>
by Ken Schwaber, Mike Beedle
Q?/span>
Agile Project Management With Scrum
?/span>
by Ken Schwaber
FDD:
?/span>
Java Modeling in Color with UML
?/span>
by Peter Coad,
?/span>
A Practical Guide to Feature-Driven Development
?/span>
(
特征驱动开?/span>
) by Stephen R Palmer, John M. Felsing,
Crystal:
?/span>
Crystal Clear
?/span>
by Alistair Cockburn
ASD:
?/span>
Adaptive Software Development
》(自适应软g开发)
by James A. Highsmith
其中以
XP
pd的书c居多。h民邮电出版社的一pd极限~程pd丛书Q在国内引进较早。在q没有统一敏捷词汇的情况下Q引发了一Ҏ捷先锋h士的热情Q是我国E序员的敏捷启蒙教材。这些书包括?/span>
Extreme Programming Explained
》(解析极限~程Q,?/span>
Extreme Programming Examined
》(极限~程研究Q,?/span>
Extreme Programming Installed
?/span>
(
极限~程实施
)
Q?/span>
Extreme Programming Explored
》(探烦极限~程Q,?/span>
Extreme Programming Applied
》(应用极限~程Q?/span>
Extreme Programming in Practice
》(极限~程实践Q,?/span>
Planning Extreme Programming
》(规划极限~程Q等Q这些书有的是作者的
XP
实践论文Q有些是?/span>
XP
目的介l,其中Q值得推荐的是下面两部著作?/span>
?/span>
Extreme Programming Explained: Embrace Change
?/span>
by Kent Beck
W一版中译版Q《解析极限编E:拥抱变化》,
唐东铭,
人民邮电出版C?/span>
W二版中译版Q?/span>
雷剑文,电子工业出版C?/span>
作ؓ
XP
的开׃作,目前已经出版了第二版。在W一版中Q?/span>
Kent Beck
?/span>
XP
作了详细的描q。从当前软g开发的现状和问题谈P从需求的变化到如何拥抱变化,l出?/span>
XP
的四hD和十二项实践。对于想了解敏捷的来龙去脉的人,此书属于必读之类。在W二版,
Kent
Ҏ几年来的实践Qؓ
XP
增加了一hDQ尊重,q增加了原则的概念,同时增加和删改了一些实c?/span>
该书W一版是E序员的宣言Q这?/span>
Kent
的背景很有关pR随?/span>
XP
l历了五六年的发展和实践Q?/span>
Kent
自己也逐渐意识刎ͼq样的观点太狭隘了。因此就有了W二版,与其说这是技术书c,到更像是Ua意义的Y工书c。期间也可以看出
XP
的体pL加完备。这其中ؓH出的是把h攑ֈ了更为重要的C?/span>
?/span>
Extreme Programming in Practice
?/span>
by James Newkirk, Robert C. Martin
中译版:《极限编E实c,
王钧Q?/span>
人民邮电出版C?/span>
读过了一些列?/span>
XP
书籍Q程序员们都会觉?/span>
XP
非常好,但到底如何才能开始实?/span>
XP
呢?q不是太清楚。本pd中的q本书用一个完整的项目作例子Q从头到教lh如何敏捷开发,是一本不可多得的实践教材。如果想直接实施
XP
开发,q本书可以给你很大启C?/span>
敏捷软g开发之实践?/span>
一、极限编E最佛_?/span>
׃极限~程是如此的行Q多数敏捷团队都会或多或的借鉴一?/span>
XP
中的敏捷实践Q?/span>
XP
的每一个敏捷实践也实值得大书特书Q而其中最著名的是试驱动开发和重构实践Q?/span>
?/span>
Test-Driven Development
?/span>
by Kent Beck
中译版:《测试驱动开发》,
崔凯Q中国电力出版社
试驱动开发是
Kent Beck
另一部力作?/span>
“Clean Code That Works?/span>
是敏捷开发的目标之一Q那么如何达到这个目标?
TDD
l出了一U方式。测试实质上是需求。由需求生出的代码肯定是能够工作的功能代码,而要实现
Class
本n的可试性,׃得不写出高度解耦合?/span>
Clean
的代码。本书从一?/span>
Money
的例子入手,从最初的一炚w求开始,逐步增加需求,完成整个货币pȝ的代码。后面又l出?/span>
Unit Test
中的一些最佛_践和模式供参考?/span>
然而,本书的教导意义比其实跉|义更H出。作Z?/span>
TDD
的教E或入门教材Q这本书无疑是最佳的Q其中提出的一些最佛_跉|是值得l常阅读来温习。本书面向的是单元测试,而实际开发中面对的数据库试Q?/span>
Web
试{问题ƈ不属于单元测试的范畴。因此读者ƈ不能从中直接q入到实战?/span>
另一本同名书?/span>
Test Driven Development: A Practical Guide
》由
Davis Astels
撰写Q他该书看作是
Kent
著作的补充,重点阐述利用
TDD
开发所必要的技术和工具上,因此对实际开发更具实用性?/span>
?/span>
Refactoring:
Improving the Design of Existing Code
?/span>
by Martin Fowler
中译版:《重构:改善既有代码的设计》,侯捷Q熊节,中国电力出版C?/span>
重构q本书的意义在于Q他提供了一U让你写出更加优代码的能力。在试的保证下Q重构能够发挥强大的威力。敏捷团队中Q不断的重构出简单且高效的代码才能够保持拥抱不断变化的需求。后来的一本书?/span>
Refactoring to Patterns
》(从重构到模式Q?/span>
by Joshua Kerievsky
Q更是将重构的威力发挥到极限?/span>
重构曾被UCؓ软g开发图书的双璧Q另一本书是?/span>
Design Patterns
?/span>
(
设计模式
) by GoF
。当Ӟ对现在的软g开发这二者已l不是最重要的?/span>
Thought
Works
的首席科学家
Martin Fowler
ȝ了朋友们的各U实践心得,写出了这本书。从几年后的目光来看Q这本书中的多数实践都被各种
IDE
做到了操作菜单中。虽?/span>
IDE
提供了大量重构功能,但仅?/span>
IDE
是无法写出简z美妙代码的Q多数的敏捷团队重构工作做得q是不够?/span>
另外有一本专门介l结对编E的书,?/span>
Pair Programming Illuminated
》(l对~程技术)
by by Laurie Williams and Robert Kessler
Q指ZZ么要l对Qƈ从各U不同水q不同性格的程序员l对情况来讨实践的优劣。对此有兴趣的程序员不妨一诅R?/span>
二、敏捯Y件开发实?/span>
自从
2001
q敏捯盟成立以来,单独推广极限~程的书变少了,而统一口径推广敏捷的书变得来多。两本同名的敏捷软g开发都是不可多得的好书Q?/span>
?/span>
Agile Software Development
Q?/span>
Principles, Patterns, and Practices
?/span>
by Robert C. Martin
中译版:《敏捯Y件开发:原则Q模式与实践》,邓辉Q?/span>
清华大学出版C?/span>
被业内h士称?/span>
Uncle Bob
?/span>
Robert C Martin
在沉寂几q后写出了这部书。该书可以算是从软g开发角度对敏捷Ҏ阐述的最详细和全面的一本。之前的敏捷书籍多是x于过E改q,而对如何从技术角度实施讲的比较少。本书一开始先介绍了敏捯盟和敏捷开发过E。之后详l论qC面向对象设计的原则,q些原则是本书的_֍之一。后面通过几个目介绍了如何将设计模式应用于项目中?/span>
Uncle Bob
不愧是实늚大师Q写出来的书也是拥有很强的实跉|义。在敏捷团队的办公桌上,应当常备此书Q一来可作ؓ参考查询,二来可以作ؓ新成员的必读书目?/span>
?/span>
Agile Software Development
?/span>
by Alistair Cockburn
中译版:《敏捯Y件开发》,俞涓Qh民邮电出版社
q本书更加适合理者来阅读?/span>
Alistair
从项目h数和交流难易E度Q将敏捷的各U方法划分了光用范围。h数多的或分布式项目就需要靠其他手段来加Z,人数的可以靠
pair programming
{进行面寚w的交。交和反馈是敏L核心。同?/span>
Alistair
也介l了一下他提出?/span>
Crystal
Ҏ族?/span>
?/span>
.
敏捷目理和敏捷需求分?/span>
在推q敏捷一D|间后Q敏L也意识刎ͼ多数书籍更像是面向开发h员,q于技术化Q难以吸引项目经理或ȝ。因此,一扚w向管理者视角的书也开始Q出水面,q些书包括:
?/span>
Agile and Iterative Development
》(敏捷q代开发)
by Craig Larman
?/span>
Lean Software Development
》(
敏捷
软g开发工?/span>
?/span>
_开发方?/span>
Q?/span>
by Mary Poppendieck
?/span>
Agile Software Development Ecosystems
》(敏捷软g开发生态系l)
by Jim Highsmith
书中从各U角度比较和分析各种敏捷Ҏ的优劣,异同Qv源,适用范围{。这些书对于一个项目主决{用何U过E来在自q团队中实跉|h很好的参考作用?/span>
q两q_Z开始逐渐意识到敏捷开发的侧重点不仅仅是开发过E和开发实践,q包括对需求和目理{其他相x面的实践。一些相关的书籍也悄然出现在Z的视野:
?/span>
Agile Project Management
》(敏捷目理Q?/span>
by Jim Highsmith
?/span>
User Stories Applied
?/span>
by Mike Cohn
?/span>
Agile Estimating and Planning
?/span>
by Mike Cohn
?/span>
Agile Requirements & User Stories
?/span>
by Louis Molnar
q些书不同于以往新方法,新过E的书目。敏捷项目管理类的书主要介绍如何理敏捷团队Q如何计划要开发的需求,如何为客h供最大的价倹{介l敏捷需求分析的书主要帮助商务分析师或项目经理挖掘和分析用户需求,写出用户故事Q评估和计划用户故事{。h们已l意识到Q各U方法论的实质是相同的,都是提供商业价|减少费Q增加交,快速反馈。因此不需要着重于区分是用了那种Ҏ。对目l理来说Q不同的目或团队应当采用适应其特D情늚ҎQ而这些方法的基本原则是相同的?/span>
?/span>
.
敏捷软g开发新方向
Ҏ构师或程序员来说Q近q来的技术进展,也得敏捷开发有了新的研I方向:
?/span>
Agile Web Development with Rails
?/span>
by
Dave Thomas, David Hansson, Leon Breedt, and Mike Clark
该书是获?/span>
2006JOLT
奖的书,讲得是采?/span>
Ruby on Rails
q个
Web
开发工h贉|快速开?/span>
Web
目Q从而达到快速反馈拥抱变化的目的?/span>
?/span>
Refactoring Databases
?/span>
by Scott W Ambler
此书?/span>
Scott
的新作,延箋和承了?/span>
Agile Modeling
》(敏捷建模Q和?/span>
Agile Database Techniques
》(敏捷数据Q的思想。在敏捷开发过E中Q作为持久化最常见技术的数据库如果不能够敏捷Q怎么能够适应一ơ次q代和一ơ次发布的修改呢Q书中介l了如何q行数据库演化,如何保证升后数据库数据的正性,以及最佛_c?/span>
我们可以看到Q随着敏捷Ҏ和市场的不断成熟Q敏L书籍也从理论性{向了实用和最佛_늱型。然而,不可否认的是Q一个团队的敏捷化很难仅靠阅M本来完成Q由成功实践q敏L开发者手把手的带领,才是最好的Ҏ?/span>

]]>