作为一名架构师,你可能还没有读过《分析模式:可复用的对象模型》,但一定听说过这本书的作者马丁·福勒。
马丁·福勒(Martin Fowler)是一位世界级软件开发大师,ThoughtWorks首席科学家。他是一位作家、演说者、咨询师和泛软件开发领域的意见领袖。他致力于改善企业级的软件设计,对优秀的设计以及支撑优秀设计的工程实践孜孜以求。他在重构、面向对象分析设计、模式、XP和UML等领域都有卓越贡献,著有《重构:改善既有代码的设计》《分析模式:可复用的对象模型》《领域特定语言》《企业应用架构模式》等经典著作。马丁先生是IT行业中当之无愧的巨擘,其思想深刻地影响了当代软件开发的许多方面。人们亲切地称呼他为马丁大叔。 马丁·福勒曾担任XP 2005和Agile Universe大会的议程主席,是敏捷联盟 (Agile Alliance) 的创建人及《敏捷软件开发宣言》的作者之一。同时还是IEEE Software杂志的设计专栏的作家。 马丁·福勒毕业于伦敦大学,专攻电子工程与计算机科学专业。一直以来,他最大的兴趣就是了解如何设计软件系统,以最大化开发团队可以提供的价值。不仅如此,他还会为改革中的大型公司们提供解决方案,这些大公司包括花旗银行、埃森哲咨询公司 (Accenture) 、Sterling Software 及戴姆勒-克莱斯勒汽车公司等。 作者马丁·福勒(Martin Fowler)推特主页 作为一名对象建模顾问,马丁·福勒需要为客户提供建模指导。然而,将大量建模所积累的经验传达给别人并不能帮助企业的员工掌握到核心技巧。后来他意识到,将以前创建模型的经验汇总的同时,还要改进它们以适应新的需求。在当时,市面上有很多图书会用简化的案例讲述这一抽象的理论,不少开发者阅读后无法真正理解,更难以运用到实际应用中。 典型的方法论固然有价值,但是只是学习的第一步,开发者还需要通过实际开发中创建的产物来进一步学习。 于是,马丁·福勒决定将自己多年的经验汇集于《分析模式:可复用的对象模型》中,他将以往真实项目作为案例背景,然后以“模式”的方式进行归纳,生动形象地把分析模式完整的核心理念传达给读者。马丁·福勒认为,建模人员不应该仅关注过程,即如何建模,还应当关注过程的结果,即所得到的模型本身。 1997年,这本书的英文版刚刚出版就引起了编程领域的轰动,不少开发者被书中深邃的思想所折服,因此它被称为架构师以及分析师必读的经典书目。遗憾的是,这本书在国内一直没有受到重视和普及。 然而,马丁·福勒的编程哲学却影响了很多国内优秀开发者,钟敬就是其中一位。 钟敬在IT界从业20余年,曾在多家中外资大型企业从事研发管理、架构设计工作,为若干家大型金融公司提供了咨询服务,以促进企业的数字化转型。对于拥有系统分析员资质认证的钟敬来说,首次拜读《分析模式:可复用的对象模型》就给了他如获至宝的感觉。 也许是缘分使然,钟敬后来也加入了马丁·福勒所在的ThoughtWorks公司,成为了马丁·福勒的同事。随后又由于机缘巧合,钟敬成了这本书的译者,对于钟敬本人来说,把原著翻译好就成了一件具有责任感和使命感的事情。 那这本书到底讲了什么内容呢? 这本书分为两部分。第一部分介绍分析模式,来自概念业务模型,提供了交易(trading)、测量(measurement)、会计( accounting)和组织关系( organizational relationship)等领域的关键抽象。这些模式是关于概念的,体现了思考业务的方式,而不是系统设计的方式。各章节重点讨论了各种可选的模式及其各自的优缺点。显然,每个模式都可用于所在章节中的领域,其中基础性的模式常常也可用于其他领域。 第二部分重点讲述支持模式,用以支持分析模式的应用。这些支持模式展示了如何将分析模式融入信息系统的架构,如何将概念模型转化为软件的接口和实现,以及如何将某些高级建模概念关联到更简单的结构。 除此之外,为描述清楚书中的模式,本书附录简要介绍了这套表示法以及各个符号的含义。本附录的设计不是为了成为这些技术的教程,而是提供一个便于记忆的纲要。不过,附录中也说明了如何找到详细的教程。 计算机中运行的软件可以看作真实世界的模型。因此,软件开发本质上是一个建模过程。但计算机的“二进制世界”和丰富多彩的真实世界之间存在巨大的鸿沟,要将真实世界的问题映射为软件系统谈何容易。这正是软件开发的本质困难之一。为了跨越这一鸿沟,前人总结了“分步走”的方法,即分析、设计和编程。首先将真实世界(或者说业务领域)映射为“分析模型”,然后将分析模型映射为“设计模型”,再进一步映射为代码,最后经过编译,就成了可运行的程序。这样,软件开发的过程就化整为零,容易掌握了。 这本书就是关于分析模式的,这些模式反映了业务过程中的概念结构,而不是软件实现。这些模式很难按照传统的垂直分类(制造业、金融业、医疗保健等)进行划分,因为它们常常可以用于多个领域。这些模式很重要,因为它们有助于理解人们认知世界的方式。将计算机系统的设计建立在这种认知的基础上,实际上,还要进一步改变这种认知,这样做是非常有价值的。这里说的“改变这种认知”是通过所谓“业务过程两造”(Business Process Reengineering,BPR)来实现的。 然而,概念模式是不能孤立存在的。只有当软件工程师懂得如何实现它们时,概念模型才是有用的。本书还介绍了将概念模型转化为软件的模式,并讨论了这样的软件如何适用于大型系统架构以及模式的具体实现技巧。 那该如何学这本书呢? 马丁·福勒在编写每一章的内容的时候,已经尽量地让每个章节相互独立。这样的好处就是开发者们在阅读本书的时候,可以清楚地知道自己需要了解的那部分知识具体位置,真正地做到事半功倍。 当你拿到这本书的时候,会发现它是一本系统归纳分析模式的手册,所以不需要从头到尾地阅读。书里的每一个模式,都可以用在产生它的领域之外的其他场合,所以即使某些章节你在阅读的时候不感兴趣,也可以去读一读。 比如在介绍分析模式的部分,每章中的模式由相关主题域的思想脉络关联起来。这些思想脉络受到产生它们的项目的影响,因而并不严格。这种组织方式反映了这样一个事实:任何模式都必须来自一个实际场景。每个模式都在自己的章节中进行介绍。作者采用与实际项目中类似的方式来描述模式,并尽量减少抽象。同时给出了一些例子,用于展示该模式如何在产生它的领域中使用,也用于提示在可能的情况下,如何将其用于其他领域。模式的一大难点就在于如何抽象,以用于其他领域。 和书中介绍的模式适用非常广泛一样,本书也适用于多种类型的读者。不过由于大家所在的行业和工作都不同,所以都可以学到各异的知识,也需要做其他不同的准备。 本书最主要的受众是面向对象分析和设计人员,特别是从事分析工作的。他们应该至少用过某种面向对象分析和设计方法。本书没有提供这一主题的任何介绍,所以对于面向对象分析和设计的新手,建议先读一本这方面的书。必须强调,书中的模式本质上是概念性的,因而作者使用了一种非常概念性的方法来建模。这导致本书与某些书籍在写作风格上的差别,因为那些书籍使用了基于实现的方法。 有一部分人数不多但非常重要的受众,由建模项目中的领域专家组成。他们不需要计算机知识,但一定要懂概念建模。作者使用概念模型的一个主要原因,就是为了方便这部分读者。这里说的建模项目,可以是为系统开发或业务过程再造进行分析。 同时,马丁·福勒希望多一些程序员能研读本书,尽管有些人可能因书中缺少代码或偏重概念而不以为然。本书在一些章节里解释了概念模型和结果软件之间的关系。 这是一本讲面向对象的书。毫无疑问,面向对象是一种十分优越的软件开发方法。然而,书中讲述的主要是概念模型,而在传统开发方式中,许多数据建模人员已经长期使用概念(或逻辑)模型了。数据建模人员应该会发现书中的许多模式非常有用,特别是如果他们使用了更高级的语义技术的话。从这些模型的面向对象特性中,可以发现许多与传统方法之间的区别。建议找一本面向对象分析的书与本书一起读,该书应该侧重于概念层面的建模,并阐明面向对象和语义数据建模之间的关系。 管理者会发现可以将本书用作开发活动的起点。从模式开始建模,有助于明确项目的目标。而制订计划时,也可以利用模式所涉及的广泛的领域和模型知识。 当然,作者也希望学生们也能读一下。当初学习分析和设计的时候,马丁·福勒觉得很困难,因为可供学习的优秀实例太少了,这些实例应该来自校园以外的真实项目。正如好的代码可以教会你很多编程技能一样,好的模型也可以教会你很多分析和设计的技能。 《分析模式:可复用的对象模型》 内容简介: 要开发复杂的企业应用,先要为业务领域建立准确而深刻的分析模型,本书不是通过简化的案例讲述抽象的理论,而是直接给出来自真实项目的复杂模型,并以“模式”的方式进行归纳。具有一定经验的架构师、业务分析师以及高级开发人员通过研读本书可以很快将书中的模式和思路应用于实践,有效提高开发水平。