English

Martin Fowler:英国口音的软件工程

2003-05-14 来源:中华读书报 刘天北 我有话说

在一些罕见的情况下,大师会被阐释者夺走自己的创见。比如在软件工程界就有这么一句话:“统一建模语言(UML)的发明者Grady Booch本人,都不一定比Martin Fowler更会用UML。”这说的是知名软件工程专家,《UML Distilled》(中译UML精粹,清华大学出版社2002年出版)的作者Martin Fowler。对于今天的软件开发者来说,UML是他们的面包和黄油,但在1997年,大多数人面对刚刚推出的UML 1.0规范,却都因其丰富和复杂而感到无所适从。就在这年,Fowler用那本两百页出头的小书说出了初学者最渴望的内容,恰如其分地抚平了业界焦虑的神经。虽然随后UML的官方机构也编撰了大量文档、论著,但不少朋友告诉我,他们关于UML的主要知识,都来自捧读《UML Distilled》的那个周末——Fowler亲切、流畅的叙述轻快地把他们引出了那个充满抽象的标记、图示的迷宫。

也许这就是官方文献和经典著作之间的区别。一方面是严谨、准确,但又高度抽象化甚至形式化;一方面则是生动、直观,不求面面俱到,但能让人很快就对概念大厦的全貌一目了然。的确,对于UML中几种最关键的视图之间的关系,很难有其他作者能给出如此简洁的解释。但别误解我的意思:这决非什么通俗读物或是缩写本,你在每一页上都能收获关于软件开发的真知灼见。而且Fowler的野心并不限于介绍作为一种工具的UML。比如对于被RUP长篇累牍、一口官腔的文档吓退的朋友们,该书的第二章就是介绍统一软件开发过程的最佳导引。

也许本文开头的说法还不确切。Martin Fowler远不止是一个简单的“掠夺者”,事实上他本人就是一位大师。当然,与创立UML的“三位老友(the three amigos)”或是合写《设计模式》的“四人帮(GoF)”相比,Fowler肯定是个晚辈。但是从1986年在故乡英国拿到电子工程学位,到参与开发建模软件Ptech,再到成为独立开发顾问,参与国家保健服务系统的开发,再到移居美国,加入著名的克莱斯勒C3项目,到成为软件顾问公司ThoughtWorks的首席科学家,Fowler以惊人的加速度获得了业界的认同和仰视。如今,虽说还是比那些业界元勋年轻得多,但他的言论已经是开发领域最重要的声音之一,他在各地的演讲、他对大量项目的实际咨询,都直接引领着软件开发科学的发展,指导着各国开发者的工作实践。

当然,对大多数读者而言,Fowler更多地还是意味着一部部经典著作。虽然《UML Distilled》是很多普通开发者的恩物,但是在Fowler本人那里,它却不是个宠儿——毕竟这只是关于特定工具、特定开发过程的导论。他似乎更看重自己的第一部著作《分析模式》,最近还在张罗该书的修订。对于最近流行的极限编程思想,Fowler的两部著作《重构》(中国电力出版社即出中译)、《规划极限编程》(人民邮电出版社2002年出版中译)处于理论的核心,前一部更被权威网站JavaWorld视作Java开发人员的圣经之一。而在日前评出的2002年度软件开发“震撼(Jolts)”大奖中,他的新作《企业应用构架模式》获得了效率大奖。

“编辑大人残酷地扼杀了我的英国口音”,Fowler在《分析模式》的前言里这么抱怨。他是说美国编辑们改掉了所有的英国单词拼法。我却总觉得自己能从他每一部著作的行文、理念中听出独有的英国口音。这里,英美文化差异扮演了微妙的角色:两相比较,美国人天真、率直,而英国人则更加矜持、老练,注重距离和分寸;我个人体会,这也是Fowler与其他美国专家之间最大的差别:那些专家对自己要介绍的内容总有一种天真的狂热,好像是在揭示什么世界终极奥秘,而Fowler则更谦卑、随和,乐意与所谈的内容保持某种讥讽的亲和性。文如其人,另一位大师Kent Beck曾经描述两人初遇的情景。那是一次学术会议,Fowler对Beck这么做的自我介绍:“I'm the only person here. I've never heard of——这么多人里我就没听过自己的名字。”这种亲切,这种包含自省的醇厚,一经与过人的洞察力遇合,就形成了作品中难以错认的优美和可读性。

也不仅是可读性的问题。我认为这更牵涉到关于软件工程、关于“方法论”的理念。软件工程界盛行各种大写的方法论。作者们急于用刻板的语言推销自己心目中的“最佳实践”。在他们眼里,方法论是数学意义上的严格科学,软件开发中的操作非对即错、泾渭分明。虽然Fowler的著作覆盖了软件项目的生命周期的大多数方面,并几乎为开发实践的每一个环节都画出了崭新的地图,但他的工作还属于一般认为的“方法论领域”。Fowler本人却不会太乐意接受“方法论学家?这个称号。毕竟,英国口音包含的距离感,与一般方法论者的一厢情愿很难兼容。在这个意义上,Fowler和他研究敏捷开发的朋友们算得上是软件工程界的异数,他们似乎站在方法论的阵营中,却又不时地质疑所有被奉为万应良药的方法论的意义。方法论的效用是不容忽视、但却是有限的。实际的软件开发是一系列权衡、妥协的结果,其中抽象的方法论思考可能帮助、但无法取代这个困难的过程。

也许英国盛产的经验论是Fowler的另一个秘诀。作为一位独立顾问,他曾审视过成百上千个案例。对这些项目的成败、构架设计的优劣的反思,有效地构成了洞察力的核心来源。阅读Fowler著作,我总能体会到一种来自实际问题的切实感。与此相比,方法论学家们钟爱的“形式化”变成了名副其实的paperwork(纸上谈兵)。

由此我想到,大师的产生需要特定的生态环境。软件业是该看重经验还是打字速度,什么才是合理的开发者的年龄结构,软件咨询、培训公司应该扮演何种角色……对这些问题的回答是这个环境的一部分。我还想到,之所以介绍Martin Fowler这位大师(这是我个人的荣幸),也许不仅是为了推动对经典的阅读,更包含了我对产生大师的环境的期待,和对中国自己的大师的期待。

手机光明网

光明网版权所有

光明日报社概况 | 关于光明网 | 报网动态 | 联系我们 | 法律声明 | 光明网邮箱 | 网站地图

光明网版权所有