第二部分:XDE中的模式机制
1 概述
在前一期的系列文章中,我们对模式,特别是设计模式在UML中的建模方法作了简要地,理论上的介绍。现在该要进行实践了。现在支持模式建模并能够基于模式进行应用程序开发的工具并不是很多。Rational XDE是其中最为著名的一个,并且确实提供了极为优秀的功能。
XDE的Java版有两种,一种是基于Eclipse内核的独立运行版本(目前只支持Eclipse1.0)。另为一个是集成在WASD中的,作为WASD的一个插件同其以其运行(目前只支持WASD 4.0)。实际上WASD使用的就是Eclipse的内核,所以,这两者在功能上(甚至外观上)都没有多大的区别。现在Rational已经被IBM所合并,所以有足够的理由可以相信,在未来的WSAD中,XDE的功能会被更加完美的整合到其中。
XDE最大的卖点有两个,一个是分析设计同代码编写在是在同一个IDE中完成的,并可以进行正向-逆向工程,完美的实现迭代开发中所需要的模型-代码的映射。另外一个就是这篇文章的主题:模式的定义和应用。你不仅可以使用XDE中预定义好了的23个经典的GoF设计模式,还可以自己定义模式,在开发中应用它们,或者导出供其他人使用。
模式机制是XDE中实现重用的核心技术。你可以通过这个机制来实现模型元素和其它制品的重用。它提供了Model-to-Model和Model-to-Code的变换功能。这使得你能够将一个涉及的模型作为来帮助一个特定的设计。它还是得你能够将一个模式中的元素内容合并到已存的设计模型中。
2 XDE中的模式描述
在XDE中,模式的描述基本上遵循了UML所定义的参数化协作标准。但是,由于UML中定义的只是如何来对模式建模,而对如何定义模式,应用模式,以及具体的代码生成并没有过多涉及。因而,XDE在UML的基础上,作了一些合理的扩展。
首先,我们来看一看Asset的概念。一个Asset是一些软件制品的集合,它们被组织在一起以期能够解决某一个问题。Asset能够通过其定义的可变点(Variability Point)来进行扩展,在进行Asset重用的时候,开发者需要对这些可变点提供具体的内容来充实Asset,以完成Asset的重用。
Rational现在推崇一种Asset Based Development过程方法,来作为其对RUP的一个补充,Asset就是其关键。这儿并不打算对Asset和Asset Based Development作过多地论述,那已经偏离了这篇文章的主题。从模式这个范畴而言,你可以简单的把Asset看作是模式的定义,描述及其具体的实现。
在XDE中, Asset表示为一个构造型为<<Asset>>的包。被申明为<<Asset>>的包可以被导出以利于在不同的开发者,甚至不同的工具中重用,只要它们都遵循Asset的规范Reusable Asset Specification。
模式是一种Asset,但是Asset并不一定是模式。一个模型可以被包装在一个Asset中,而其中并不带有任何的模式描述。XDE能够处理这两种可重用项目。在XDE中,模式表示为包含在一个<<Asset>>包中的,带有模板参数的合作图。有很多种方法可以创建一个<<Asset>>包,但需要注意的是,创建一个UML的包并手工地将其版型设置为<<Asset>>并不会将这个包注册为模式。
在XDE中,<<Asset>>包可以被导出为一个.ras文件。一个.ras文件实际上就是一个zip文件,不过它有着自己的内容结构,这和J2EE中的.war文件很类似。它使用了rasset.xml和resource.xml这两个xml文件来提供对这个压缩文档的描述。RASAsset.xsd文件是RAS的XML Schema,定义rasset.xml和resource.xml这两个文档的内容格式和含义。其它的文件是模型和文档制品。