软件设计精要与模式
软件设计精要与模式
本文节选自《软件设计精要与模式(第2版)》一书
推荐序一
张逸先生邀我为他的新著做序言,起初觉得难以应命。毕竟,一本书会成为很多人阅读学习的材料,并逐渐沉淀为社会文化的一部分而影响长远。长年的工程习惯告诉我,应该先认真阅读书稿,并且深刻理解书中鲜明的思想和观点后再下笔。但就个人目前的工作及精力,深感不能追求到如此完美的情景。然而,又意识到软件架构与设计工作对整个中国行业发展的重要和紧迫程度,决定借写序为契机,谈点关于架构和设计方面的点滴体会,作为本书的书序。
少年时代的我,充满了对科学的向往。儒勒·凡尔纳的科幻小说,把我带向了科学梦幻的世界,彷佛科学能够创造出美妙的未来世界。后来,对天文及天体物理的迷恋,把我强烈地吸引到了对伽利略、牛顿、爱因斯坦等伟人的崇拜。可笑的是,原想报考南京大学天文专业的我,被父母当头浇了一盆凉水。但是,一颗热爱科学的心一直在跳动。
整个大学的前两年,听课一直混混沌沌。直到大学三年级的时候,听了一位教授讲的数据结构课程,可以算是开启了我对计算机科学最初的认识。这是我第一次感知到计算机科学在很大程度上是研究人类智慧的学科,这也正是年轻的我所热望的专业!
毕业后,由于在国营单位这样的圈子中工作,又经历了一段混混沌沌。1992年后,面向对象的Borland C++ 及Turbo C++ 开始在世界乃至中国大陆范围内流行。半生半熟地阅读完这种全新的编程思想,仔细体会一番,又一次为人类智慧的结晶而震撼和赞叹。原来结构化的编程思想,虽然出自自然,但并不一定就是最好。人类居然可以模仿自然规律,来界定一个个关联的对象,可谓聪明和经典。
九十年代,是一个出国潮涌的时代,我也随着潮流,漂洋到北美。从那时开始,有两件事,真正把我从一个懵懵懂懂的年轻人,带到了计算机科学的智慧天堂,从而满足了专业工作人员的第一个要求,即知识的储备。
第一件是把自己所从事的研究工作,定位到了状态依赖的系统。这个方向的研究,仿佛打开了一扇大门,让我从只知道传统计算机科学的基础知识,加上有限的编程经验,真正地走向了专业知识的研究工作。进而使我深刻理解了国外为什么能够领先中国很多年,就已经能研发出很多严重状态依赖的实时系统。这也是我平生第一次,从软件系统的结构上,知晓了人类智慧的创造力。
另外,我在这个阶段中也自然而然地接触到当时刚刚开始流行的Java这样相对纯净的面向对象编程语言所设计出来的一些系统。也很自然,工作中面对一个资深设计编程人员所设计出的模块结构和编写出的代码,科学之美的情感油然而生。期间,作为一个中国人,开始经常听到“架构”和“设计”这样两个有些陌生的词汇。最令我难忘的是,有位非常友善的同事,甚至还指导我去阅读一些有关架构和设计方面的知名著作。我也是从这个时刻开始,知道了Gang of Four的设计模式、Frank Buschmann(日后服务于西门子时,我的德国业务领导人)的架构和设计模式、Martin Fowler的著作……遗憾的是,由于当时自己所处工作环境的限制,没有能够更深入地体验出更多的东西,也没有一个合适的场合锻炼一下自己。庆幸的是,我已经比很多中国人早一些读到了一些经典的著作,学到了一些知识。
混混沌沌的我,在2003年年底举家回到了祖国。当时的中国,正处于IT革命所带来的一片欣欣向荣的环境当中。由于是所谓的海归,自然有机会在这样的系统研发浪潮中冲锋在前,把自己一知半解的所谓经验使用到现实的系统研发工作中。着实轰轰烈烈地实践了一轮,却发现自己又一次迷失了:理论学习过了,实践也经历了,我该走向何方?
糊里糊涂地,无意间读到了一篇纪事报告,题目叫《最后的大师》。此文的作者应钱学森先生的邀请,来记录自己的导师、清华大学物理系及清华大学创始人之一的叶企孙先生。叶先生早年在美国留学期间,在物理方面做出过杰出的贡献。虽然大多数后人并不知道叶先生,但是他的学生没有一个会忘记他,这包括三钱、华罗庚、李政道、杨振宁等。可以这样说,你所知道的中国大师,大多都是他的学生。阅读完此文,颇受启发:真可谓“大师培养大师”。我非常欣赏这句话。既然我身边没有大师,就应该认真回味一下自己这些年来的学习和实践,看看是否能将既有的种种知识和经验,上升为智慧。毕竟,智慧是指导我继续工作的原始动力,并指导自己未来的创新工作。因此,我选择了阅读、学习和思考。
自己成长的这段历史,算是翻过去了。再回到张逸先生的这本《软件设计精要与模式》上来,我虽作粗略阅读,但从实践分享的视角来看,书的内容编写得非常认真。作者从自身工作的经历,分享了自己对软件设计的理解,并以设计原则这样的方式,来分享最宏观层面上的要点。总结、思考的分量,可见一斑。本书有些章节很有新意,注意到了利用自身实践过的设计模式,以真实示例的方式来介绍如何灵活使用各种设计模式。此举对读者的实际工作,颇有帮助,愿为推荐。
其实,个人成长的历程,也在一定程度上代表了中国专业从业人员的成长轨迹。中国正面临一次深刻的变革,需要更多优秀的编程人员、优秀的设计人员、优秀的架构人员、优秀的创新人员。毕竟,一个要立足于世界之林的强国,急迫地需要能把事情做得精彩和经典的行动人员。
谨记所感,提供讨论。
李伟
西门子中国中央研究院 首席架构师
2010年02月12日
北 京
“给我一个支点,我就能撬起地球”关键不在于力量有多大,而在于如何合理地利用力量,软件设计同样如此,思想的确立,技巧的把握,将在很大程度上制约软件架构的合理性。本书力图通过大量的项目实践,并与软件设计思想完美结合,充分展示软件设计之美,以及设计“力量”的巧妙运用。
博客园开发者征途
作者:张逸 著
ISBN:978-7-121-10453-4
出版日期:2010年4月出版
定价:55.00元
开本:16开
页码:480页
作者简介
张逸,软件架构师,敏捷教练,微软最有价值专家,InfoQ .NET社区常务编辑, msup资深讲师。目前担任中软国际ETC(重庆)技术总监。主要专注于软件架构、设计模式、领域驱动设计和敏捷开发,以及基于.NET平台的企业级系统应用开发和分布式开发。曾先后为可口可乐、摩托罗拉、HP、京东方、尼桑、摩洛哥电信、盛大、第九城市、CA、携程等企业提供设计、开发、咨询与培训服务。他的著译作包括《软件设计精要与模式》、《WCF服务编程》。可以通过http://www.agiledon.com访问他的个人网站。
内 容 简 介
本书关注的焦点是软件设计,涵盖了大部分与设计有关的基本要素,包括面向对象思想、设计模式、重构、测试驱动开发以及软件体系架构。其中,尤以设计模式为主,深入探讨了软件设计过程中的原则与模式,并结合大量的实例与代码演示了如何合理运用设计模式,改善程序模块的可复用性、可扩展性,实现模块间的松散耦合。全书将软件设计理论与项目实践完美地结合起来,使其告别了纯理论研究的空泛,具有现实的指导意义。本书共分为5篇,包括:设计之要、.NET框架与设计模式、媒体播放器的设计之旅、设计模式应用实践以及.NET体系架构。
本书力求讲解浅显明白。在技术探讨上,尽可能地深入透彻;在每一字的描述上,尽可能地简单易懂。本书适用于所有希望提高软件设计水平的程序员、软件工程师,同时,对于软件设计师与系统架构师也具有一定的参考价值。
本书详细信息:http://www.broadview.com.cn/10453
更多图书信息:www.broadview.com.cn
想即时获取更多图书及活动资讯,赶快加入博文视点读者俱乐部 吧!