好像任何美满的婚姻一样,这个ExtremePerl的家庭成员都彼此的支持。例如
这本书邀请Perl开发人员和他们的客户用一个崭新的角度来看待软件开发过程。客户或广义上的商人会明白在高效和善变的需求分析过程中
作为用户,你也必需用合一的语调说话。你可以自由决定对需求讨论的详细程度,但是最后你总得用自己的语言来清晰地描述出来,这也就是所谓的故事。所有的不一致意见都必须在扮家家的时候解决掉。而所谓的扮家家,就是你和程序员共同决定每个功能对应开发时间的过程。
最棒的是你总可以立刻结束进展。程序员总是用最简单的方法解决问题,你可能觉得难以置信,但问题的确经常在几周内得到解决。没有别的方法比这个更加直接地保证你的需求进入了软件里面,这正是你要做的活。每个人都被一个可用的软件驱动来工作。
编程的角色在
对
编码是
重构的目标是唯一的表达概念。Perl比其他语言更容易让你做到这个。ExtremePerl代码可以紧凑易懂,琅琅上口。这种代码经常演变成为我所称为的面向主题编程
面向主题编程把问题浓缩到一种小的语句中。在这本书里面的
你得很熟悉Perl才能读懂这些例子。我跳过Perl语法的细节直接解释例子。你得随时准备查阅好用的Perl参考手册,比如有时你得查看它才能明白map是怎么回事。
最后:有些测试用例是关于bivio在线业务处理平台(bOP)的。我所在公司(
这本书向程序员和商人解释ExtremePerl。我还力图用(他人的)例子和个人经历为媒介来分享ExtremePerl的经验。这本书很详细的覆盖了极限编程的方方面面,所以即使以前没有经验也可以读懂。
本书的第一部分是ExtremePerl里面和编程无关的内容:why(背景),what(什么是极限编程和Perl)和how(发布计划,迭代计划,测试用例,跟踪和结对编程)。测试用例里面有些代码,但是任何人都应该能读懂。最后一章里面的
书的第二部分包含着众多真实的编程例子。随后的章节展示了什么是ExtremePerl:编码格调/规范,物流,测试驱动设计,延续式设计,单元测试,重构和
若你是个自顶而下地考虑问题的人,我建议你从头到尾阅读本书。自底而上的读者可能最好反过来读。
如上一节所说,本书中的Perl代码可能比较难懂。每个编程的例子都不复杂,都只涉及为数不多的概念。然而代码对于有些程序员来说却可能显得非常复杂。如果你熟悉函数式编程和面向对象的Perl,这些例子就会变得一下子清晰起来。如果不是的话,你可能需要看看最后一章涉及到函数编程的部分。书中的参考资料也会很有用。面向对象的方面不怎么要紧,所以你哪怕没有面向对象的经验也可以明白。
词汇注释∶我会对
这本书是一个合作性的项目。很多人努力使这本书更好。任何错误和疏忽都是我的,而更正则来自于跟随的人。如果我在这里忘记了你的名子,请接受我的道歉。
给Joanne,谢谢你因为你用爱来支持我,也谢谢你的知识和积极的参与,以及编辑技巧。没你这本书就没辙。
给Ben和Aidan,谢谢你们因为你们如此快速的熟习XP。你们制作了上千张故事卡,还在生活中教我做人的道理。带孩子和学习
给PaulMoeller,谢谢你因为你是一个如此卓越的商务伙伴,朋友和程序员。谢谢你教我为何编程不是一个体力活,还谢谢你对这本书的评价和保留在心里的感受。
给IonYadigaroglu,谢谢你的千言万语,你的支持和信任。还要谢谢你的勇气,是你把编程的活留给程序员来做.
给MartinLinchtin,谢谢你逐字逐句的解释为何indirection会带来新的软件问题,也感谢你这些年帮助我解决堆积如山的软件问题。
谢谢以下的人∶DannyAce,AnnalieseBeery,GregCompestine,EricDobbs,EricSchell,DavidFarber,JustinSchell和TomVilot。你们参与了我那疯狂的实验,耐心地听我的演讲和漫长的讨论,还有你教我关于编程,团队合作和兴趣培养的事。
谢谢JohannesRukkers,因为你教我在大机构里面如何编程,还有你在JamesJoyce那里的启发性的谈话,还有别处的谈话。
谢谢你RobWard,你优雅的放弃了在O&A使用真名的机会,还有你多年的耐心教导和支持我,另外你还严肃的指出本书草稿里面非理性和不成英语的部分。
谢谢StasBekman,JustinSchell和AledViggio,你们在最后一章和我结对编程。你们让我总是很快进入工作状态,还帮助我减少复杂性。
谢谢其他的很多审阅者,你们贡献了足够的反馈信息,这让我能写出更容易读懂也更加正确的代码。你们的名子按照字母顺序是∶JimBaker,KentBeck,TomBrown,DavidBruhweiler,SeanBurke,chromatic,PhilCooper,WardCunningham,BryanDollery,JeffHaemer,GedHaywood,JoeJohnston,WalterPienciak,ChrisPrather,LweisRowett,MichealSchwern,JeremySiegel和MikeStok。
我还得谢谢这些年来我的导师,他们是∶JonBondy,PeteBonham,DavidCheriton,TomLyon,JimMadden,RichardOlsen,AndrewSchofield和RogerSumner。你们的智慧都星星点点的散布在这本书里面,希望我都正确的掌握了它们。
最后,我还要对PeteBonham的家庭表示最深切的同情。你们让我在如此困难的时候走进你们的生活。Pete的离去是我写这本书的推动力,他一生的工作仍在引导我前进。
生命和工作是一系列的成功。它们每时每刻都在发生,XP只是让它更加易与显现,而你得选择去庆祝它们。
不管客户告诉你什么,那里基本上都是一个问题。—GeraldWeinberg
软件是一种稀有资源,供大于求。我们总是听说要满足需要得增加巨大数量的
程序员的任务是准确的获得任务的细节。这不像在物质生产过程中,开销主要在于对流水线上每一个产品的复制上。外包对于生产来说很有效,因为细节都在设计阶段已经决定下来。生产过程主要是对已经决定的设计的重复。对于软件来说,拷贝的代价几乎没有,主要是设计阶段决定了产品的代价。便宜和充足的劳动力虽然提高了生产过程的效率,却无法用规模化生产给软件开发过程带来效率。
编程的代价是和网络效应相关的。在你给项目增加程序员数量的过程中,沟通的代价也随之以平方比率增长。因为项目中的细节必须在更多的渠道传播。而且随着客户和程序员之间的距离加大,重要渠道的数目也随着增加。减少客户和程序员之间的沟通代价是使细节得到有效实施的关键。这中间的等待时间会增加成本。为了提高效率,客户需要和程序员及时沟通,而程序员也需要得到客户的及时回应。
这一章区分软件开发和物质生产的不同之处。我们试图解释为什么传统的计划驱动的开发方法会增加项目的风险,为什么直面失败会减少风险。这一章以一个比喻来结束,它展示了需求和实现阶段的风险是如何通过让客户更接近开发过程来得到降低的。
根据商业软件联盟的报道,软件产业正在以迅速的增长来满足看上去无限增长的需求。从1990年到1998年,美国的软件产业以每年13的速度增长。
新闻热点
疑难解答