English

从设计模式到体系结构模式

2003-01-22 来源:中华读书报 王知遇 我有话说
这是1997年来自英国CVu的一句评价:“《设计模式》已是一本广为传阅的经典著作,我认为《面向模式的软件体系结构》也应该成为经典。《设计模式》覆盖了面向对象开发中的一个抽象层,而这本书覆盖了三个层次:高层体系结构模式,设计模式和语言特定的惯用法。”正是这句话引起了我的浓厚兴趣。众所周知,模式近期已引起了国内的广泛关注,文章、研讨班、网站,如雨后春笋,并由此而引发了一轮关切软件工程的热潮,而这一切都源于一本书《设计模式》。模式之所以让人如此心动,是因为软件开发经历了数年的“手工业”发展之后,人们开始认识到应该有一些方法和经验来提高自己的工作效率。《设计模式》的4位专家较早地意识到了这个问题,当时人们对许多重复的设计问题已有了一定的解决方案,这个行业的发展是如此之快,不断涌入后来者和年轻人,于是他们以最容易传播的方式(图书出版)和最良好的书写格式(规范形式)记载了这些解决方案。这种以规范形式记录设计知识可以追溯到Christopher Alexander,此君在建筑学中率先提出模式概念。他的潜在意念是,居住位置的设计不仅在于功能和流行,也在于舒适和安慰。良好设计的建筑能清楚地体现其内在质量,但很难描述和量化。

简而言之,这样的建筑拥有“没有名称的质量”。

模式是什么?《面向模式的软件体系结构》(简写为POSA)的作者提出了一个模式的组成结构图,这个结构图紧紧地抓住了模式得以独立于领域的本质。

作者也同样关注面向对象以外的问题,并在书中融入了对模式描述技术的最新认识。该书的整体目标是,使用模式有助于软件体系结构的大范围语境。于是,这种方式就被称作“面向模式的软件体系结构”。作者的看法是,模式不仅仅被储存在不同种类的容器当中,还应该根据相应的标准进行分类,这就是“模式系统”。GoF通过把模式划分为“创建型”,“结构型”和“行为型”等进行分类,而《面向模式的软件体系结构》则根据已获得的更好的标准(如交互式和适应性系统、工作组织、通信和访问控制等)来对模式分类。

然而需要强调的是,开发“模式风格”理论并不是这本书的主要目标。当1991年作者以一种直截了当的方式记录了第一个模式之后,很快就发现单个模式是不能单独存在的,随着模式系统文档的日益增多,更显示出单个模式的缺陷。作者提到,出版该书的驱动因素之一就是,模式揭示了丰富的相互关系集。无可否认,这是一部比之《设计模式》更为出色、更为成熟的经典作品。在Amazon.com上,读者如此评价《面向模式的软件体系结构》一书“关于模式的一本杰作。该书是《设计模式》(GoF著)的完美伴侣”,“一本适用于每一种软件体系结构的著作……它确实能使我们缩短所需的设计时间”,“这是一本特别的模式专著……因为有人宣称GoF书是20世纪90年代最重要的编程书籍,我则认为,我不得不同意……本书是一本更加深入、更加成熟的著作。”

GoF的著作专注于设计层次模式,而该书的模式跨越几个抽象层次。Amazon.com如此评价“为了从软件工程的更大范围内获得模式潜力的远景……本书指出了模式如何应用于各个层次,从用于特定计算机语言(如C++)的惯用法到设计模式,再到对改善整个软件工程周期都有用的更高层模式”。每位开发人员都会面临的最基本的分类问题——模式种类,书中把它们由高至低分为体系结构模式,设计模式和惯用法三类。

在《面向模式的软件体系结构卷1:模式系统》一书中提到的模式系统,只包括那些在软件开发过程中具有通用特性的模式,并不提供特定领域的模式(该书的第2卷“并发和网络化”则关注那些用于并发和网络化应用程序和中间件的通用的、与领域无关的模式)。作者在书中定义了一个新的问题分类。

所有的GoF设计模式都被分派到已有的问题分类之中,书中随后总结出一个极为精彩的表格,GoF模式用斜体显示。

不得不提的是,这本书的编排使得读者能够选择适合自己的阅读方式。全书分为8章,前4章分别为模式,体系结构模式,设计模式,惯用法;后4章是模式系统,模式和软件体系结构,模式团体,模式将走向何方。第1章“模式”是全书的导引,作者对软件体系结构进行了全面的介绍,系统地介绍了模式的概念并讨论了模式描述的原则。这是每个人都应该仔细阅读并加以体会的一章,从中还可以了解某个特定模式的关键思路。其中,第2章和第3章是全书的重点,引荐了来自不同应用领域的8个体系结构模式。第3章给出了8个设计模式,所有的这些模式都分别针对在定义了软件系统的整体结构之后所遇到的典型问题。

这本书最值得称道的用处是,可以利用它去查找你在当前工程中所遇到的设计问题的解决方案。读者可以把第5章“模式系统”作为研究的指南,然后再去查看那些被确认是潜在解决方案的模式的细节。这一章也是十分重要的,对于弄清楚三种模式之间的关系及其适用范围,尤为重要。该书附录内容也十分完备,包括符号表、常用词汇表、参考文献和模式索引。这是一本帮助软件开发员用一种新的眼光去考虑软件体系结构问题的参考指南,书中提供了一些技术来解决特定的再现设计问题。而把本书用作软件工程课程的教材,则可以给学生形成大型软件设计的完整的新观点。另一方面,这本书可以使读者迅速地学习到软件界多年来积累下来的宝贵经验。这是关于软件体系结构模式的第一本开创性著作,任何一位认真的程序员都应该仔细阅读。

手机光明网

光明网版权所有

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

光明网版权所有