所谓模式的描述,我的定义是如何表达人们的设计经验。好的描述和表达,可以让人家更容易理解你的设计思想。通常我们阅读的一些模式书籍或文章对某一模式的描述都是有如下几部分:
应用这一模式的‘语境’;
这一模式可解决的‘问题’;
模式解决问题的‘解决方案’;
然后,给该模式起个好听的‘名称’。
模式(名称,语境,问题,解决方案),这似乎是基本要素。除了以上的要素之外,可能还有别名,动态特性,变体,使用例子,使用后的效果等。对于模式的描述,有过于复杂和过于简单两个极端。如何做到对模式描述得足够清楚便于人们学习理解,又不用描述得太繁琐复杂?我们是不是可以讨论讨论呢?
对于体系结构模式,很多学者在研究一些形式化的描述语言,叫体系结构描述语言(ADL, Architecture Description Language)。他们提出了若干适用于特定领域的ADL。典型的有: C2 是一种基于构件和消息的ADL,适用于大型频繁交互的层次型图形用户界面的软件的体系结构描述; Darwin和 Wright分别将π演算和 CSP 作为其数学基础,适用于分布、并发类型的体系结构描述; ACME 是一种体系结构互换语言,支持从一种 ADL 向另一种 ADL 规格说明转换。其他比较有影响的 ADL,如 Aesop,Unicon,Rapide,SADL,MetaH,Weaves 等。
按照一定的描述方法,用体系结构描述语言对体系结构进行说明的结果则称为体系结构的表示,而将描述体系结构的过程称为体系结构构造。在体系结构描述方面, Kruchten 提出的“4+1”模型是当前软件体系结构描述的一个经典范例,该模型由逻辑视图、开发视图、过程视图和物理视图组成,并通过场景将这 4 个视图有机地结合起来,比较细致地描述了需求和体系结构之间的关系。
以上似乎表明,体系结构描述的研究欣欣向荣,形式一片大好。但我们可千万别乐观,事实上的情况是ADL 繁多,缺乏统一的 ADL 的支持。尽管 Shaw 等人提出了体系结构互换语言 ACME,但没有统一的体系结构描述语言框架与定义,不同体系结构描述语言所描述的体系结构规格说明难以互换。既然说没有统一的ADL,那么有人说采用业界普遍已认同的UML来描述吧。但我想毕竟UML并不是专门用于描述体系结构模式的,需要做很多扩展,用stereotype,这个过程中,势必又需要做许多标准化工作。
总之,在模式描述的路上,我们还有很长的路要走。同学们,我们赶紧起程吧,呵呵。
参考资料:
Frank Buschmann等,面向模式的软件体系结构 卷1:模式系统,译[M],机械工业出版社,2003,211~214.
孙昌爱, 金茂忠, 刘超,软件体系结构研究综述,软件学报,2002,13(7):1228~1237.