简单之美—软件开发实践者的思考(探索软件开发和管理的精髓与本质,10大社区推荐)
基本信息
- 作者: 倪健 [作译者介绍]
- 出版社:机械工业出版社
- ISBN:9787111301035
- 上架时间:2010-5-5
- 出版日期:2010 年4月
- 开本:16开
- 页码:304
- 版次:1-1
- 所属分类:
计算机 > 软件工程及软件方法学 > 软件方法/软件工程
编辑推荐
这是一次软件开发者的心灵沟通之旅
10大社区一致鼎力推荐
推荐阅读
内容简介回到顶部↑
本书不是一本关于方法论的理论性书籍(尽管已经尝试在大量的思考上进行一些理论归纳),也不是一本关于具体技术的操作手册。本书为读者呈现的是作者在软件 开发实践中的思考和体验,目的在于探究实践中的问题的根源,并给出思想上的解决之道。
本书以软件开发的基本顺序为主线,以简单、想象和文化的开发思想为线索,以为软件开发实践提供指导价值为目标。本书力图做到传递经过组织的、可操作的软件开发经验,使软件开发领域的新手在知识(软件开发思想)积累过程中少走弯路,也使软件开发领域的老手可以对照自己的经验把可能的困惑降到最低。有一些有趣例子为那些有价值的思考提供支持。
本书中,作者尝试对简单、想象和文化做一些形而上的思考。这些思考会比较抽象,但却是很多话题的基础。
本书以软件开发的基本顺序为主线,以简单、想象和文化的开发思想为线索,以为软件开发实践提供指导价值为目标。本书力图做到传递经过组织的、可操作的软件开发经验,使软件开发领域的新手在知识(软件开发思想)积累过程中少走弯路,也使软件开发领域的老手可以对照自己的经验把可能的困惑降到最低。有一些有趣例子为那些有价值的思考提供支持。
本书中,作者尝试对简单、想象和文化做一些形而上的思考。这些思考会比较抽象,但却是很多话题的基础。
作译者回到顶部↑
本书提供作译者介绍
倪健,资深软件工程师、项目经理和架构师,拥有12年IT行业从业经验。从事过电气设计与装配、单片机开发、软件系统设计与开发、项目管理、软件架构、软 件培训以及性能调优相关的工作。精通汇编语言、VB、VC、Java和C#,自主设计过一些框架。12年的工作经验帮助他建立了一个完整的认识世界的思想 体系,这个体系的核心内容就是简单、想象和文化。他擅长想象,善于归纳,内心坚持,追求有意义的生活。
倪健技术博客地址:http://nijian.javaeye.com
.. << 查看详细
倪健技术博客地址:http://nijian.javaeye.com
.. << 查看详细
目录回到顶部↑
场景故事人物关系图
本书赞誉
前言
为什么写本书
本书面向的读者
如何阅读本书
第1章无极生太极
1.1创造的根源
1.2本质的把握
1.3简单的追求
第2章关于软件开发方法论的思考
2.1方法论的实践场景
2.2cmm的精髓
2.2.1过程定义
2.2.2成熟之路
2.3敏捷软件开发的精髓
2.3.1人与实践
2.3.2海岸灯塔
2.4最好的软件开发方法
2.4.1中庸
本书赞誉
前言
为什么写本书
本书面向的读者
如何阅读本书
第1章无极生太极
1.1创造的根源
1.2本质的把握
1.3简单的追求
第2章关于软件开发方法论的思考
2.1方法论的实践场景
2.2cmm的精髓
2.2.1过程定义
2.2.2成熟之路
2.3敏捷软件开发的精髓
2.3.1人与实践
2.3.2海岸灯塔
2.4最好的软件开发方法
2.4.1中庸
前言回到顶部↑
为什么写本书
19年前夏日的一天,我正在宿舍里看一本关于禅宗禅宗,又称宗门,汉传佛教宗派之一,始于菩提达摩,盛于六祖慧能,中晚唐之后成为汉传佛教的主流,也是汉传佛教最主要的象征之一。汉传佛教宗派多来自于印度,但唯独天台宗、华严宗与禅宗,是由中国独立发展出的三个本土佛教宗派。其中又以禅宗最具独特的性格。禅宗祖师会运用各种教学方法,以求达到这种境界,这又称开悟。其核心思想为:“不立文字,教外别传;直指人心,见性成佛”,意指透过自身实践,从日常生活中直接掌握真理,最后达到真正认识自我。 的书。一位朋友走过来,他注意到了书的封面,然后好奇地问我禅宗是什么。当时我也说不清楚,只是觉得禅宗很像唯心主义者的一道逻辑题。
禅宗的心髓是悟,在禅宗思想推广的历史上,有很多具体生动的故事阐释了这个概念。最有名的是六祖慧能慧能(638—713),俗姓卢氏,河北燕山人(现今的涿州),生于岭南新州(今广东新兴县)。佛教禅宗祖师,得黄梅五祖弘忍传授衣钵,继承东山法门,为禅宗第六祖,世称禅宗六祖。唐中宗追谥大鉴禅师。他是中国历史上有重大影响的佛教高僧之一。陈寅恪称赞六祖:“特提出直指人心、见性成佛之旨,一扫僧徒繁琐章句之学,摧陷廓清,发聋振聩,固我国佛教史上一大事也!” 的偈句:“菩提本无树,明镜亦非台。本来无一物,何处惹尘埃?”。“本来无一物”——说明了慧能在洞悉事物本质上的境界(后来这首诗的境界又被超越了)。
禅宗的历史就是种种境界被建立和被超越的过程。为了达到无法超越的最高境界,参禅者们发明了机锋公案、棒喝直指、扬眉瞬目、拳打脚踢、斩蛇杀猫这样一些辅助手段,这些手段可以让人快速通过量变到质变的一刹那(没有可以解释的过程),直达内心顿悟。进入顿悟状态后,所有语言、文字和思想都成了阻碍。
唯一例外的词——想入非非——可以作为那种境界的缩影。想入非非的意思是说,那种至高无上的境界不是我们头脑中可以想到的,因为可以想到是一种阻碍;也不是我们头脑中无法想到的,因为无法想到是指除了可以想到之外的。非非,表示否定了否定,这里的双重否定不代表肯定。想入非非,把没有边界的思想通过一种特殊的方式表达了出来。
在这些年的软件开发生涯中,禅宗那种积极反思、不断追求完美境界的精神一直影响着我。凭着这种精神,我把软件开发变成了乐趣。有两个原因使这种转变成为可能:第一,我把想象力和创造力结合了起来;第二,我的软件开发思想已经比较成熟和完整了。这两点很重要。想象力和创造力的运用使人的精神得到了满足,而软件开发思想则使任何事情在开始之前都有了一个合理的解释。合理与满足会给你带来乐趣。
我写本书的主要目的也有两个:第一,回顾自己的软件开发生涯;第二,与读者朋友们分享我自己的体验和感受。我希望在你阅读完本书后,可以发现如何品尝软件开发的乐趣,如何从千头万绪变得线索明朗,如何从复杂世界进入简单世界。
我还想在本书中表达以下几个观点。
首先,思想是解决一切问题(包括软件开发中的问题)的根本。Robert C. MartinRobert C. Martin是Object Mentor公司总裁,面向对象设计、模式、UML、敏捷方法学和极限编程领域内的资深顾问。他不仅是Jolt获奖图书《敏捷软件开发:原则、模式与实践》(中文版)(《敏捷软件开发》(英文影印版))的作者,还是畅销书Designing Object-Oriented C++ Applications Using the Booch Method的作者。Martin是Pattern Languages of Program Design 3和More C++ Gems的主编,并与James Newkirk合著了XP in Practice。他是国际程序员大会上著名的发言人,并在C++ Report杂志担任过4年的编辑。 在Agile Software Development: Principles, Patterns, and Practices的中文版序言中表达了一个思想,即软件是美的(我喜欢阅读序言,因为那里通常是和作者心灵最接近的地方)。而我想表达的思想是,在你熟悉的软件开发领域,软件不仅是美的,还是简单的。领悟到软件开发中的简单之美是解决软件开发问题的钥匙。在我看来,思想是一种坚定不移的信仰,并且是在经过了足够的实践检验后形成的。在软件开发过程中,稳定的思想会使所有的力量汇聚到一个有效的方向。
其次,思想是一盏明灯,但有时也会成为一种桎梏。像参禅者一样不断追求完美的境界,使思想成为你自己不断成长的体验。
最后,思想必须转换成习惯。我不是个真正意义上的实用主义者(本质上是个追求内驱力的理想主义者),但是在实践中运用思想比停留在思考层面显然更有乐趣。
总之,构建一套完整的思想体系是软件开发能力成熟的标志。只有思想成熟,才会使你的一言一行、举手投足、细节决策等在复杂的实践中收放自如。
软件开发思想的成熟,还需要操作层面上的大力支持。我们不妨以方法论为例来看看软件开发中的问题。
很多软件开发人员在实践中经常处于一种混乱状态。所谓混乱状态,就是当出现问题的时候没有人知道怎么做才算最好,或者人们之间缺乏足够的信任和共识,或者大家不断地讨论却得不到满意的解决方案。
对于软件开发老手而言,经验是帮助他们保持清醒并走出混乱状态的安全绳。可是,要想依靠经验来持续地造福一个团队就比较难。
事实上,造成混乱状态的原因有很多。本书中的所有内容都是在尝试从各个层面来谈论这个话题。如果单从方法论的层面来看主要有两个原因。
首先,没有操作性强的方法论的指导。
软件开发者的很多工作和努力都基于个人经验的积累。即便某些经验丰富的软件开发者掌握了一些必要的方法论知识,也不能在组织范围内有意识地推广,从而成为有实用价值的共享体验。
其次,有经验的软件开发者获取知识和使用知识的方法无法系统地传递给软件开发新手。
无法传递知识,会使新手们在软件开发领域的成长起点变得很低。在这种情况下,软件开发项目的成功通常依赖于个人英雄主义、人海疲劳战和运气。
19年前夏日的一天,我正在宿舍里看一本关于禅宗禅宗,又称宗门,汉传佛教宗派之一,始于菩提达摩,盛于六祖慧能,中晚唐之后成为汉传佛教的主流,也是汉传佛教最主要的象征之一。汉传佛教宗派多来自于印度,但唯独天台宗、华严宗与禅宗,是由中国独立发展出的三个本土佛教宗派。其中又以禅宗最具独特的性格。禅宗祖师会运用各种教学方法,以求达到这种境界,这又称开悟。其核心思想为:“不立文字,教外别传;直指人心,见性成佛”,意指透过自身实践,从日常生活中直接掌握真理,最后达到真正认识自我。 的书。一位朋友走过来,他注意到了书的封面,然后好奇地问我禅宗是什么。当时我也说不清楚,只是觉得禅宗很像唯心主义者的一道逻辑题。
禅宗的心髓是悟,在禅宗思想推广的历史上,有很多具体生动的故事阐释了这个概念。最有名的是六祖慧能慧能(638—713),俗姓卢氏,河北燕山人(现今的涿州),生于岭南新州(今广东新兴县)。佛教禅宗祖师,得黄梅五祖弘忍传授衣钵,继承东山法门,为禅宗第六祖,世称禅宗六祖。唐中宗追谥大鉴禅师。他是中国历史上有重大影响的佛教高僧之一。陈寅恪称赞六祖:“特提出直指人心、见性成佛之旨,一扫僧徒繁琐章句之学,摧陷廓清,发聋振聩,固我国佛教史上一大事也!” 的偈句:“菩提本无树,明镜亦非台。本来无一物,何处惹尘埃?”。“本来无一物”——说明了慧能在洞悉事物本质上的境界(后来这首诗的境界又被超越了)。
禅宗的历史就是种种境界被建立和被超越的过程。为了达到无法超越的最高境界,参禅者们发明了机锋公案、棒喝直指、扬眉瞬目、拳打脚踢、斩蛇杀猫这样一些辅助手段,这些手段可以让人快速通过量变到质变的一刹那(没有可以解释的过程),直达内心顿悟。进入顿悟状态后,所有语言、文字和思想都成了阻碍。
唯一例外的词——想入非非——可以作为那种境界的缩影。想入非非的意思是说,那种至高无上的境界不是我们头脑中可以想到的,因为可以想到是一种阻碍;也不是我们头脑中无法想到的,因为无法想到是指除了可以想到之外的。非非,表示否定了否定,这里的双重否定不代表肯定。想入非非,把没有边界的思想通过一种特殊的方式表达了出来。
在这些年的软件开发生涯中,禅宗那种积极反思、不断追求完美境界的精神一直影响着我。凭着这种精神,我把软件开发变成了乐趣。有两个原因使这种转变成为可能:第一,我把想象力和创造力结合了起来;第二,我的软件开发思想已经比较成熟和完整了。这两点很重要。想象力和创造力的运用使人的精神得到了满足,而软件开发思想则使任何事情在开始之前都有了一个合理的解释。合理与满足会给你带来乐趣。
我写本书的主要目的也有两个:第一,回顾自己的软件开发生涯;第二,与读者朋友们分享我自己的体验和感受。我希望在你阅读完本书后,可以发现如何品尝软件开发的乐趣,如何从千头万绪变得线索明朗,如何从复杂世界进入简单世界。
我还想在本书中表达以下几个观点。
首先,思想是解决一切问题(包括软件开发中的问题)的根本。Robert C. MartinRobert C. Martin是Object Mentor公司总裁,面向对象设计、模式、UML、敏捷方法学和极限编程领域内的资深顾问。他不仅是Jolt获奖图书《敏捷软件开发:原则、模式与实践》(中文版)(《敏捷软件开发》(英文影印版))的作者,还是畅销书Designing Object-Oriented C++ Applications Using the Booch Method的作者。Martin是Pattern Languages of Program Design 3和More C++ Gems的主编,并与James Newkirk合著了XP in Practice。他是国际程序员大会上著名的发言人,并在C++ Report杂志担任过4年的编辑。 在Agile Software Development: Principles, Patterns, and Practices的中文版序言中表达了一个思想,即软件是美的(我喜欢阅读序言,因为那里通常是和作者心灵最接近的地方)。而我想表达的思想是,在你熟悉的软件开发领域,软件不仅是美的,还是简单的。领悟到软件开发中的简单之美是解决软件开发问题的钥匙。在我看来,思想是一种坚定不移的信仰,并且是在经过了足够的实践检验后形成的。在软件开发过程中,稳定的思想会使所有的力量汇聚到一个有效的方向。
其次,思想是一盏明灯,但有时也会成为一种桎梏。像参禅者一样不断追求完美的境界,使思想成为你自己不断成长的体验。
最后,思想必须转换成习惯。我不是个真正意义上的实用主义者(本质上是个追求内驱力的理想主义者),但是在实践中运用思想比停留在思考层面显然更有乐趣。
总之,构建一套完整的思想体系是软件开发能力成熟的标志。只有思想成熟,才会使你的一言一行、举手投足、细节决策等在复杂的实践中收放自如。
软件开发思想的成熟,还需要操作层面上的大力支持。我们不妨以方法论为例来看看软件开发中的问题。
很多软件开发人员在实践中经常处于一种混乱状态。所谓混乱状态,就是当出现问题的时候没有人知道怎么做才算最好,或者人们之间缺乏足够的信任和共识,或者大家不断地讨论却得不到满意的解决方案。
对于软件开发老手而言,经验是帮助他们保持清醒并走出混乱状态的安全绳。可是,要想依靠经验来持续地造福一个团队就比较难。
事实上,造成混乱状态的原因有很多。本书中的所有内容都是在尝试从各个层面来谈论这个话题。如果单从方法论的层面来看主要有两个原因。
首先,没有操作性强的方法论的指导。
软件开发者的很多工作和努力都基于个人经验的积累。即便某些经验丰富的软件开发者掌握了一些必要的方法论知识,也不能在组织范围内有意识地推广,从而成为有实用价值的共享体验。
其次,有经验的软件开发者获取知识和使用知识的方法无法系统地传递给软件开发新手。
无法传递知识,会使新手们在软件开发领域的成长起点变得很低。在这种情况下,软件开发项目的成功通常依赖于个人英雄主义、人海疲劳战和运气。
媒体评论回到顶部↑
正如本书所说,这是一本为那些在实际工作中陷入迷惘或存在困惑的软件开发者、管理者和企业经营者准备的书。当你面对软件开发、管理和架构中的迷惘和失败时,你也许会在追溯问题根源的过程中用到本书中的知识。
——Java开发者社区
在IT技术领域,中国缺少技术大师,但中国不缺少热爱技术、热爱思考的人,本书的作者便是其中的一个典型代表。他用自己的思考和经验带领读者朋友一起去探讨软件开发的本质——大道至简。如果你也是一位热爱技术和思考的人,本书决不容错过。
——架构师社区
这是一本充满智慧的书,它让我们看到了一位在软件开发实践中善于观察、总结和思考的智者形象;这是一本富含哲理的书,它将软件开发的一切问题的本质都归于简单、想象和文化,耐人寻味;这是一本饱含经验的书,它系统地论述了作者在软件开发的整个过程中所总结的大量有价值的观点,引人深思;同时它也是一本充满趣味、非常耐读的书,书中的场景故事既让我们读起来心情舒畅,又能体会到其中蕴含的软件开发哲学。建议所有从事IT工作的朋友都收藏这本书,常读常新。
——中文Java技术网( www.cn-java.com)
本书站在一个较高的角度对软件开发的各个环节和层面(需求分析、架构、实现、测试、维护、团队和项目管理等)都进行了详尽的阐述,尝试着去探讨软件开发的本质和方法论。作者将自己多年的从业经验融入本书中,希望使得无论是新手还是老手,都可以从本书中获得有价值的经验和技巧。
——PHPChina( www.phpchina.com)
本书也许会让你产生共鸣,因为很多问题也是你在实际开发中曾经遇到并认真思考过的;本书也许会让你有些疑惑,因为有些观点只有当你的经验足够丰富时才会悉心领会;本书也许会让你拍案叫绝,因为有些问题你百思不得其解,而它却一语“道破”天机。强烈建议反复品读本书,它值得你拥有。
——Ajax中国(www.okajax.com)
我们始终相信,最简单的也就是最有效的,一个好的idea往往都都能通过一些简单的技术实现,从最早的IM的成功,到SNS的火爆;从AJAX旧瓶装新酒,到jQuery改变JavaScript的书写习惯,莫不是如此。事实证明,简单才是王道!本书用简单的原则、富于想象的精神引领我们悟透软件开发的本质和奥义。
——jQuery中文社区(http://bbs.jquery.org.cn)
大道至简,软件行业也是如此。书中一位饱含经验和善于总结的智者引领我们去思考与领悟软件开发的本质,发人深省。这是一本值得开发者反复阅读的书,历久弥新。
——AIRRIA 艾睿网(http://www.airia.cn/)
——Java开发者社区
在IT技术领域,中国缺少技术大师,但中国不缺少热爱技术、热爱思考的人,本书的作者便是其中的一个典型代表。他用自己的思考和经验带领读者朋友一起去探讨软件开发的本质——大道至简。如果你也是一位热爱技术和思考的人,本书决不容错过。
——架构师社区
这是一本充满智慧的书,它让我们看到了一位在软件开发实践中善于观察、总结和思考的智者形象;这是一本富含哲理的书,它将软件开发的一切问题的本质都归于简单、想象和文化,耐人寻味;这是一本饱含经验的书,它系统地论述了作者在软件开发的整个过程中所总结的大量有价值的观点,引人深思;同时它也是一本充满趣味、非常耐读的书,书中的场景故事既让我们读起来心情舒畅,又能体会到其中蕴含的软件开发哲学。建议所有从事IT工作的朋友都收藏这本书,常读常新。
——中文Java技术网( www.cn-java.com)
本书站在一个较高的角度对软件开发的各个环节和层面(需求分析、架构、实现、测试、维护、团队和项目管理等)都进行了详尽的阐述,尝试着去探讨软件开发的本质和方法论。作者将自己多年的从业经验融入本书中,希望使得无论是新手还是老手,都可以从本书中获得有价值的经验和技巧。
——PHPChina( www.phpchina.com)
本书也许会让你产生共鸣,因为很多问题也是你在实际开发中曾经遇到并认真思考过的;本书也许会让你有些疑惑,因为有些观点只有当你的经验足够丰富时才会悉心领会;本书也许会让你拍案叫绝,因为有些问题你百思不得其解,而它却一语“道破”天机。强烈建议反复品读本书,它值得你拥有。
——Ajax中国(www.okajax.com)
我们始终相信,最简单的也就是最有效的,一个好的idea往往都都能通过一些简单的技术实现,从最早的IM的成功,到SNS的火爆;从AJAX旧瓶装新酒,到jQuery改变JavaScript的书写习惯,莫不是如此。事实证明,简单才是王道!本书用简单的原则、富于想象的精神引领我们悟透软件开发的本质和奥义。
——jQuery中文社区(http://bbs.jquery.org.cn)
大道至简,软件行业也是如此。书中一位饱含经验和善于总结的智者引领我们去思考与领悟软件开发的本质,发人深省。这是一本值得开发者反复阅读的书,历久弥新。
——AIRRIA 艾睿网(http://www.airia.cn/)
评论交流
共有24人开贴评论 42人参与评论 3人参与打分 查看
发表于:2011-4-27 23:25:00
在项目管理方面,书中强调了“负责制度”的实施。这首先关系到责任定位的问题。项目延迟或失败,究竟是项目管理的问题,还是架构设计的问题?是编码实现的问题,还是测试维护的问题?作者认为,负责制度的缺失可能会影响项目的质量。书中提到:“在软件开发过程中,人是最重要的因素,而责任、权利和利益是保证这个因素发挥作用的关键。”“建立负责制度的目的,不是为了惩罚某人,也不是为了永久取消某人的职业发展权利,它只是通过责任人利益损失的形式,来表明这样一个事实:没有金刚钻,别揽瓷器活。”事实上,负责制度的关键不在于制度的确立,而在于执行。如果没有创建公平、公开、公正的执行环境,这种制度只会给软件开发带来负面影响。这也是作者仅仅提出问题,却没有给出好的答案原因所在。相对而言,我个人更倾向于Scrum“回顾会议”,在基于迭代与渐进式开发的基础上,这种方式更能够有效解决项目开发中存在的问题。
倘若是新手阅读本书,由于缺乏足够的工作阅历与开发经验,很难理解作者写作的意图。但我们绝对不能因为这种认识上的障碍,而将本书拒之千里之外。事实上,越早阅读本书,越能够开拓读者的眼界,提前感受业界的真实与谎言,反而能够帮助新手更快地确立自己的职业生涯规划。对于混迹行业多年的老鸟而言,阅读本书,一定能找到那些似曾相识的画面。作者对技术的深入探讨,也一定能给予我们启发,即使观点不同,也可以求同存异。所谓“嘤其鸣矣,求其友声”,这是我在阅读本书时收获的如遇旧友般的快乐!
本评论转自著名网站InfoQ:http://www.infoq.com/cn/news/2011/04/beauty-of-simple
评论是是国内著名的软件架构师、敏捷导师、微软最有价值专家、MUSP培训专家张逸先生,著有《软件设计精要与模式》和翻译了《WCF服务编程》一书,在业界德高望重。
倘若是新手阅读本书,由于缺乏足够的工作阅历与开发经验,很难理解作者写作的意图。但我们绝对不能因为这种认识上的障碍,而将本书拒之千里之外。事实上,越早阅读本书,越能够开拓读者的眼界,提前感受业界的真实与谎言,反而能够帮助新手更快地确立自己的职业生涯规划。对于混迹行业多年的老鸟而言,阅读本书,一定能找到那些似曾相识的画面。作者对技术的深入探讨,也一定能给予我们启发,即使观点不同,也可以求同存异。所谓“嘤其鸣矣,求其友声”,这是我在阅读本书时收获的如遇旧友般的快乐!
本评论转自著名网站InfoQ:http://www.infoq.com/cn/news/2011/04/beauty-of-simple
评论是是国内著名的软件架构师、敏捷导师、微软最有价值专家、MUSP培训专家张逸先生,著有《软件设计精要与模式》和翻译了《WCF服务编程》一书,在业界德高望重。
发表于:2011-4-27 23:23:00
本书的内容有些另类,绝不似书名所呈现的中规中矩,但确实体现了一种美,是一种简单到极致的优雅,似乎又繁复如星空般的深邃,包容如峭立千仞之高的山壁。这是一本可以称之为轻松加愉快的思想随笔,又是一篇如杜拉拉升职记般的职场小说,它还贯穿了整个软件开发过程,揭露了从方法论、需求、架构设计、编码实现,到测试与维护以及团队管理的诸多要诀。这正是本书的另类之处。
我在阅读本书时,情不自禁地被放在书中每章篇首的实践场景所吸引,甚至忽略了本书的重要内容,直接根据提示转到下一个章节的实践场景,一气呵成,直到将这些实践场景阅读完毕。作者挥洒自如的文笔,入木三分的人物刻画,以及细腻含蓄的情感描写,将我彻底吸引住了。在大结局中,孔如之与儿子在阳光中巴黎圣母院前的对话,让人意犹未尽,似乎满怀希望,却又历尽沧桑,真是让我产生“情何以堪”的感慨。
这是本书感性的一面了。只是看完这9篇由实践场景片段组成的小说,就已经值回票价了。而从技术书籍的角度来看,本书的意义显然并不在于此,作者完整地勾勒出软件开发的全貌,诸多感悟与体会都可以成为软件开发人员的重要借鉴。作为本书理性的一面,这些内容需要反复阅读和分析琢磨,才能引起你的共鸣,许多模糊在心头的概念,在作者简明扼要的叙述下,或许就会产生“拨开云层见月明”的感悟。
以本书第4章为例。作者给出了一个简单的实例描述了框架构建的过程。首先从背景描述出发,展现了对保险业务中对保单进行处理的需求功能。这段背景描述将复杂的保险需求阐述得非常清楚而富有条理,体现了作者撰写文档的高超能力。
接下来是作者对这一背景描述的抽象。这段抽象有理有据,较好地体现了从需求捕获到分析的过程演变,利用抽象搭建了基本的领域模型。紧接着是对约束的思考,这是架构师必须完成的工作。根据对需求的抽象和关于约束的思考,就能够做出合理的架构决策。作者在本书中反复强调的“使用自然语言和讲故事的方式”,通过实例得到了具体的展现。事实上,在Joel on software一书中,Joel Spolsky也提出了同样的观点,认为通过讲故事的方式描述用例场景,可以更好地促进理解与交流。本书作者扩大了这种方式的应用范围,引入到架构设计过程中。对这一做法,我深表赞同。事实上,我在架构过程中,也常常采用类似手法,通过在文档撰写设计的故事场景,帮助我梳理设计思路,有时候,甚至在文档中自问自答,在这样的编写过程中我慢慢找到了解决方案。
本书对领域模型的讨论也有着个人独到的见解。例如他对静态模型和动态模型的分类,又例如他提出了使用贫血模型的好处。在Martin Fowler提出贫血模型之后,业界曾经掀起过对贫血模型与充血模型的争论。然而,争论到了最后,也没有一个确切的结果。从经典的OO原则来看,它要求将对象的数据和行为组织在一起,这正是批判贫血对象的主要论据。我比较倾向于这个观点,认为对象没有行为,就是“死”的,缺乏自治的能力。但在实际开发过程中,我也常常体会到贫血模型的好处,尤其是在模型重用与解耦方面,贫血模型都有其显著的优势。本书作者认为,贫血模型的“第一个好处是,有利于信息交换。第二个好处是,清晰了对象的职责。第三个好处是,实体对象(贫血对象)的实现更加灵活。第四个好处是,可以确保实体对象(贫血对象)只能在内存中用于计算。”这些好处都说到了点子上。虽然,我对于贫血对象的使用仍然抱有谨慎态度,但本书对此的阐述依旧给我提供了不错的参考。
我在阅读本书时,情不自禁地被放在书中每章篇首的实践场景所吸引,甚至忽略了本书的重要内容,直接根据提示转到下一个章节的实践场景,一气呵成,直到将这些实践场景阅读完毕。作者挥洒自如的文笔,入木三分的人物刻画,以及细腻含蓄的情感描写,将我彻底吸引住了。在大结局中,孔如之与儿子在阳光中巴黎圣母院前的对话,让人意犹未尽,似乎满怀希望,却又历尽沧桑,真是让我产生“情何以堪”的感慨。
这是本书感性的一面了。只是看完这9篇由实践场景片段组成的小说,就已经值回票价了。而从技术书籍的角度来看,本书的意义显然并不在于此,作者完整地勾勒出软件开发的全貌,诸多感悟与体会都可以成为软件开发人员的重要借鉴。作为本书理性的一面,这些内容需要反复阅读和分析琢磨,才能引起你的共鸣,许多模糊在心头的概念,在作者简明扼要的叙述下,或许就会产生“拨开云层见月明”的感悟。
以本书第4章为例。作者给出了一个简单的实例描述了框架构建的过程。首先从背景描述出发,展现了对保险业务中对保单进行处理的需求功能。这段背景描述将复杂的保险需求阐述得非常清楚而富有条理,体现了作者撰写文档的高超能力。
接下来是作者对这一背景描述的抽象。这段抽象有理有据,较好地体现了从需求捕获到分析的过程演变,利用抽象搭建了基本的领域模型。紧接着是对约束的思考,这是架构师必须完成的工作。根据对需求的抽象和关于约束的思考,就能够做出合理的架构决策。作者在本书中反复强调的“使用自然语言和讲故事的方式”,通过实例得到了具体的展现。事实上,在Joel on software一书中,Joel Spolsky也提出了同样的观点,认为通过讲故事的方式描述用例场景,可以更好地促进理解与交流。本书作者扩大了这种方式的应用范围,引入到架构设计过程中。对这一做法,我深表赞同。事实上,我在架构过程中,也常常采用类似手法,通过在文档撰写设计的故事场景,帮助我梳理设计思路,有时候,甚至在文档中自问自答,在这样的编写过程中我慢慢找到了解决方案。
本书对领域模型的讨论也有着个人独到的见解。例如他对静态模型和动态模型的分类,又例如他提出了使用贫血模型的好处。在Martin Fowler提出贫血模型之后,业界曾经掀起过对贫血模型与充血模型的争论。然而,争论到了最后,也没有一个确切的结果。从经典的OO原则来看,它要求将对象的数据和行为组织在一起,这正是批判贫血对象的主要论据。我比较倾向于这个观点,认为对象没有行为,就是“死”的,缺乏自治的能力。但在实际开发过程中,我也常常体会到贫血模型的好处,尤其是在模型重用与解耦方面,贫血模型都有其显著的优势。本书作者认为,贫血模型的“第一个好处是,有利于信息交换。第二个好处是,清晰了对象的职责。第三个好处是,实体对象(贫血对象)的实现更加灵活。第四个好处是,可以确保实体对象(贫血对象)只能在内存中用于计算。”这些好处都说到了点子上。虽然,我对于贫血对象的使用仍然抱有谨慎态度,但本书对此的阐述依旧给我提供了不错的参考。
| 我要写评论 |
| 查看所有评论交流(共24条) |

点击看大图





加载中...