软件开发的本质 --《敏捷软件开发:原则、模式与实践》

原创 2003年08月11日 11:23:00

注: Robert C. Martin先生是一位软件开发领域世界级的大师,也是我最喜爱的技术作家之一。他的文章总能直指问题要害,给出最有效、最实际、最贴切的解决方案。他的网站www.objectmentor.com上的文章是我的最爱,篇篇必读,每一篇总能给我一种茅塞顿开的感觉。很早我就知道Uncle Bob要写一本关于敏捷开发的书,我就一直关注着这本书,期待着这一天的到来,因为我知道这次Uncle Bob肯定要说些与众不同的东西。因此,这本书一出版,我就托朋友在Amazon上买了一本。果不其然,这本书讲述的东西确实很特别,说它给我一种醍醐灌顶、拨云见日的感觉一点都不夸张,它向我展示了一副完整的软件开发的“活”的图像......
    我在软件开发方面有不少的研究和实践,深知这本书对软件从业人员的影响必将是震撼性的。 能够有幸将这本必成为经典的巨著翻译出来和大家分享其中的真知灼见,真的是很高兴。希望大家能喜欢。

软件开发的本质 --《敏捷软件开发:原则、模式与实践》

邓辉


    关于软件开发方面的书真是不少,有过程方法的、有最佳实践的、还有设计原则的。但是当你真正进行软件开发实践时,却会发现这些书中告诉你的知识在你实际运用的时候总是和期望的效果有一定的差距。我在这方面有深刻的体会。经过一段时间的反思,我隐约觉得,应该还有某个存在于过程方法、最佳实践以及设计原则之外的东西来有机地把它们结合起来,才能真正地发挥它们的最大效用。这种东西不是可以形式化的条条框框,而是活跃于人的大脑中的某种思维方法。看完了Robert C. Martin的《敏捷软件开发:原则、模式与实践》之后,我有一种豁然开朗的感觉。本书把这种思维方法阐述的再清晰不过。

    本书具有两大特色。第一,很多讲述软件开发的书籍,要么是仅仅涉及过程方法方面的内容,要么是仅仅涉及设计原则方面的内容。这些做法相对于整个软件开发活动来说都是片面的。其实,过程方法、设计原则以及最佳实践是一个不可分割的整体。孤立地去使用任何一部分都无法获得最佳的效果。最有效的方法应该是根据自己开发团队的实际情况,找出一种能够有效地把这三者结合起来并使它们相互支持的方法。比如,大家都知道每周(日)构建是一种得到广泛认可的最佳实践方法,但并不是只要你每周(日)都去构建了,就能得到好的效果,有时,结果可能会更糟。要想使这种方法有效,还需要其他方面的支援。每周(日)构建的前提是软件必须是易于每周(日)构建的。也就是说,你需要对软件中的依赖关系进行管理,使之具有每周(日)构建的基础。而这种依赖关系的管理是需要设计原则来指导和度量的。这只是其中一个例子,本书中到处都体现着作者的这种主导思想和实践。如果读者能够在这个方面好好体会的话,肯定会对软件开发有一个更为全面、深入的理解,从而可以更加有效的去使用这些过程方法、设计原则以及最佳实践。

     第二,本书的核心是软件设计,但是它对软件设计的理解以及讲解方式非常的特别。许多有关软件设计的书籍中,要么先讲述一些设计原则、模式,然后再给出几个简单的在理想情况下的应用;要么是拿一个最终的设计结果来剖析,然后告诉你它们是多么的优美。当时,你可能真会那么认为,但是当你试图在自己的实际开发中应用时,总会发现情况是完全不一样的。此时,你要么束手无策,要么会误用设计原则、模式。究其原因,主要是因为,在此类书中所讲述的不是真正的设计,只是设计的部分内容,而忽略了设计中最为重要的方面。设计是人的思维的一种动态活动,是设计者针对自己的问题的思索、权衡、折中、选择的过程。其中会出现很多在理想情况下不会出现的问题,对这些问题的处理水平才是真正的设计水平。同样,本书中到处都是这样的思考过程。针对每个案例,作者都会和你一起思索、一起探讨、一起权衡、一起验证。本书中所展示的是一个个完整的设计活动过程。通过这些案例的学习,相信读者肯定会对设计有一个更深刻的理解。此外,本书中也讲述了很多的设计模式,但是和很多其他讲述模式的书不同的是,它更多的是在告诉你什么时候不要去使用模式,去抵制模式的诱惑,以免带来不必要的复杂性。在对模式狂热吹捧的今天,本书无疑是一剂纠偏良药,可以让你更加合理、有效地使用模式。

    其实,这些内容正是软件开发活动中最本质,同时也是最难以琢磨的内容。要把这些内容通过文字表达出来更是非常困难的,这也是这方面的书籍凤毛麟角的原因。然而在本书中,Rober C. Martin先生能把这些内容编写得如此清晰、如此易于理解,充分展示了作者深厚的技术功底和卓越的表达能力。因此,本书能从众多优秀书籍中脱颖而出获得第13届Jolt大奖,就没有什么出乎意料了。

    本书主要包含4部分内容,这些内容对于今天的软件工程师都非常的重要,它们是:
 Agile方法:主要讲述了如何去使用Agile方法,其中有很大一部分内容是告诉你为什么要这样做。
 面向对象设计原则:本书包含了11个面向对象设计原则,涵盖了包的设计和类的设计。这是我所见过的对这方面内容讲解的最清晰、最彻底、最深刻的唯一的一本书。
 设计模式:本书中讲述了23个设计模式,并都有具体的实例。讲解的重点在如何在实际的应用中去使用模式,如何根据当前问题的上下文以及约束力去选择最适合的模式,以及何时避免使用模式。
 UML:本书不是关于UML的,但是为了让读者更好的理解书中的内容,作者使用了一些UML图来展示设计思路。同时,本书中也对如何有效的使用UML做了深入的阐述。本书中有两个附录专门对UML进行了简介。

    总之,本书是写给那些一线的软件工程师的。如果你想学习UML,如果你想学习如何去设计软件,如果你想学习设计模式,如果你想学习最好的软件开发实践,那么请阅读本书。

    感谢Robert C. Martin先生为我们写了一本如此优秀的著作,此书必将成为经典。我从本书中学到了很多。我相信本书也不会令您失望。

                邓辉
2003.8.7于上海

P.S.  感谢本书作者Robert C. Martin先生总是非常及时、耐心地回答我的询问,他的回答使本译本更加贴近作者的本意。
P.S.  感谢本译本的责编尤晓东和审校孟岩先生,他们的努力使本译本增色不少。
P.S.  最后要感谢的是在我的翻译过程中一直陪伴在我身边,给了我很大帮助的人。她就是我的妻子孙鸣。我把最诚挚的感谢献给她。任何珍宝都没有她的陪伴重要。

敏捷软件开发:原则、模式与实践的学习笔记

第四部分   打包薪水支付案例20.包的设计原则 通常以包的形式,对应用程序从高层次进行组织。这里从两个方面考虑:一方面是根据什么指导原则把类划分到包中,另一方面是怎么处理包之间的相互关系。 包的粒度...
  • lindan1984
  • lindan1984
  • 2007年07月20日 13:02
  • 881

《敏捷软件开发:原则、模式与实践》读书笔记

1、敏捷软件开发宣言 个体和交互         胜过 过程和工具 可以工作的软件     胜过 面面俱到的文档 客户合作           胜过 合同谈判 响应变化           胜...
  • backard
  • backard
  • 2013年07月19日 17:20
  • 1134

《敏捷软件开发原则、模式与实践》读书笔记(一)

一、敏捷联盟宣言(The Manifesto of the Agile Alliance)● 个体和交互               胜过       过程和工具● 可以工作的软件       胜过 ...
  • jasmine1987
  • jasmine1987
  • 2007年06月06日 23:36
  • 974

敏捷软件开发:原则、模式与实践-读书笔记1

单一职责链原则(SRP): 为何要把两个职责分类到单独的类中:因为每一个职责都是变化的轴线,当需求变化时,改变化会反应为类的职责的变化,如果一个类承担了多于一个的职责,那么引起他变化的原因就会有...
  • boer521314
  • boer521314
  • 2016年09月11日 23:51
  • 644

Java程序员的推荐阅读书籍之七《敏捷软件开发 原则、模式与实践》

在robbin的那个贴下回了一下,问我要电子书的tx陆续有几个了,本来想通过邮件发的,但是无奈太大,一一发邮件太费神了,所以想了一下,还是我放在博客上,有需要的就下载吧。   根据robbin的那...
  • huangyuanmu
  • huangyuanmu
  • 2013年11月18日 13:26
  • 1168

敏捷软件开发—原则、模式与实践.pdf 免费下载

下载地址: 敏捷软件开发—原则、模式与实践.pdf
  • jiongyi1
  • jiongyi1
  • 2018年01月27日 10:31
  • 76

敏捷软件开发--模式,原则及实践 读书笔记

看完了>,该看这本书了.如果说>是在讲文化,讲思想.而这本书重在讲敏捷开发的实践,如何在讲面向对象的设计原则 ,设计模式应用在敏捷开发中.书中又大量的实例代码.通过这些代码,可以看到这些模式,原则是如...
  • chenzijun20082008
  • chenzijun20082008
  • 2007年01月19日 00:19
  • 738

敏捷开发-原则 模式与实践(1)

敏捷开发-原则 模式与实践        这的确是一本关于开发者的好书,对于我们开发者、研究人员,它提出了一个开发的全新的价值观(对我来说),甚至人生都有启发。需要认真阅读。 书中总结了敏捷开发的实...
  • SUNSHANGJIN
  • SUNSHANGJIN
  • 2015年01月18日 16:01
  • 1526

【敏捷软件开发:原则、模式与实践】之敏捷实践

参与公司的敏捷开发也有一段时间了,还没有系统的学习过敏捷开发。比如早上的站会,每个月的迭代会,还有自己领取任务去开发故事,这些都是敏捷开发的流程之一。敏捷开发需要不断的学习,不断的实践。现在开始写一些...
  • u010098159
  • u010098159
  • 2015年08月21日 09:00
  • 675

设计模式开篇:模式与原则

设计模式介绍 模式:每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。 这是关于模式最经典的定义,作者是建筑大师Christopher Alexander。如果是第一次...
  • OOLOoo
  • OOLOoo
  • 2014年05月29日 01:09
  • 761
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:软件开发的本质 --《敏捷软件开发:原则、模式与实践》
举报原因:
原因补充:

(最多只允许输入30个字)