MDA之路

MDA,UML,XML,Eclipse及Java相关的Blog
posts - 53, comments - 494, trackbacks - 0, articles - 2
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

一篇关于模型编织的文章及其他

Posted on 2005-12-11 21:43 wxb_nudt 阅读(2139) 评论(2)  编辑  收藏 所属分类: 技术杂谈

一篇关于模型编织的文章及其他

标题:

Model Transformation and Weaving in the AMMA Platform

地址:

http://www.sciences.univ-nantes.fr/lina/atl/www/papers/CR_2005_GTTSE_transfo_weaving.pdf

时间:

2005

阅读时间:

2005.12.10

 

摘要:

Model transformation creates a set of target models from a set of source models. This operation is central in current MDE approaches. However, we highlight in this paper some of its limitations. Model weaving is another operation on models, which specifies typed links between model elements. Model weaving can thus be used to specify abstract model transformations assets of links between source and target metamodel types. Therefore, we propose to combine model transformation and model weaving in order to overcome some of current model transformation limitations. This paper presents how we experimented this with ATLAS Transformation Language (ATL) and AMW (ATLAS Model Weaver) on an example.

模型转换从一组源模型创建出一组目标模型。这种操作是目前MDE方法的主流。然而,在本文中我们指出了它的一些局限。模型编织是另外一种模型操作的方法,它定义了模型元素之间的有类型的连接。因此模型编织能够被用于将抽象的模型转换定义为一组源和目标元模型类型的连接。因此,我们建议将模型转换和模型编织组合起来去克服一些当前的模型转换的局限。本文给出了一个在ATLAS模型转换语言和AMWATLAS模型编织器)上实践本方法

的例子。

 

大意:

本文分为六个大的部分:

1 Introduction

当前的模型驱动工程学(MDD)中,例如微软的软件工厂,OMGMDA等,模型转换都是一个核心的技术。目前已经发展出很多模型转换的方法,但是模型转换的标准QVT一直没有能够制订。模型编织是另外一种操作模型的方法,它通过建立模型元素之间的连接来编织模型。模型编织与模型转换存在一些不同之处。它克服了模型转换的三个主要局限。

2 Transforming Relational Tuples into an XML Document

本节介绍了一个应用场景,在一个图书馆信息系统中,将RDBMS的数据转换到XML文档中。其各自的元模型如下:

image002.gif
在这个场景中,使用
ATL语言定义了一个模型转换程序,如下:

module RDBMS2XML;

create Target : XML from Source : RDBMS;

rule Books {

from

db : RDBMS!BookRcd

to

xml : XML!Book (

Title <- db.Title, Author <- db.Author,

ISBN <- db.ISBN,

subjects <- RDBMS!SubjectRcd.

allInstances()->select (e | e.SID = db.SID)

)

}

rule Subjects {

from

db : RDBMS!SubjectRcd (RDBMS!BookRCD.

allInstances()->exists(e | e.SID = db.SID))

to

xml : XML!Subject (

SubjectID <- db.SID,

Descr <- db.Name

)

}

这个程序定义了如何将RDBMS的模型转换为XML模型。

 

3 Limitations of Direct Transformations

本节详细说明了上面模型转换方法的三个缺点:1)方向性,只能从左到右转换,如果要反向转换则必须再写一个模型转换程序;2)模式重用,对于稍微复杂的转换,要写大量雷同的代码,很多代码具有相同的模式,但是不能直接重用。3)变更的传播性,源和目标模型有小的改变则必须改变程序中的多处代码,很容易出错。

 

4 Introducing Model Weaving

本节以上面的实例作为例子介绍了模型编织的概念。下图很能说明模型编织的概念:

image004.gif
从上图可以看出,上面的模型编织使用了三种类型的连接,分别是
EqualsFKNested。其含义显而易见。

另外,文中给出了模型编织的元模型。因为模型编织的实例也是一个模型,因此它需要元模型予以规范。所以,文中给出了这个元模型关系图:

image006.gif
文中还讨论了
WMM所应该具有的扩展性等特点,但是没有给出具体的元模型描述。

5 Combining Weaving and Transformation

本节简要介绍了如何将模型编织和模型转换组合起来来解决目前的模型转换中存在的问题。其主要思想是:首先建立一个模型编织的模型,然后利用这个模型来创建一个模型转换的程序,然后利用模型转换程序来具体进行模型转换的执行。

通过模型编织的方法,克服了以前模型转换的三个缺点。

6 Related Work

介绍一些相关工作,主要是模型转换的一些方法。

7 Conclusion

结论也是老生常谈,再把上面的工作和优点都复述一遍,最后还说明了模型编织还可用于更加复杂的场景:在UML ProfileDSL之间作桥接。

 

感想:

模型编织

Model Weaving这个概念我是第一次见到。本文正好是一篇Model Weaving的入门文章,极大的满足了我的好奇心。Model Weaving的中文译名还不知道有没有正式确定,和MDA群里面的人讨论了一下,原来大家都翻译为模型编织,看来我还是误打误中了。

新生的事物总是缺点与优点同样突出的,模型转换方法发展好几年了,但是其最显著的缺点还是没有大的进步。本文指出了三个缺点:双向的模型转换方法很少而且难以实现;模型转换程序的代码难以重用;变更传播。

很多研究者希望通过制订新的模型转换语言或者增加其语义来解决这些问题。但是本文的作者境界更高一点,他提出的模型编织是从一个更高的层次来解决问题,即提出一个模型转换程序生成器,来生成已有的模型转换程序,来降低模型转换程序的编写复杂性。所谓的模型编织即用一个二元连接来连接两个模型元素,并对这些连接制订类型和约束,最后根据这些连接类型来生成简单的模型转换代码程序块。这样一举解决了上面的三个问题。其思想含义等同于C编译器将C程序编译为汇编代码。

作者使用的模型转换语言是ATL,使用的模型编织器是AMW,他们统一集成在一个AMMA平台中,这个平台目前是一个开源的Eclipse插件。由于我还缺乏足够的资料,目前不能确定作者是否就是这个AMMA平台的开发者。

模型转换语言

模型转换是MDA的热点所在,目前模型转换方法提出了很多,但是具体的模型转换语言我也只接触了三种(精力所限啊):

MTF,模型转换框架,IBM定义的模型转换语言,Eclipse插件,规则型的模型转换语言,用来转换基于Eclipse的模型插件定义的模型很方便;

ATL,本文介绍的模型转换语言,我还没有具体使用过,从本文的例子程序来看,也是规则型的模型转换语言。同MTF相比,ATL详细定义了什么是源模型,怎样创建目标模型,这样可执行的程度更强,但是就只能单向执行,并且也相对复杂一些;

OCLOCL用来定义模型转换其实是水到渠成的一件事情,但是目前还不确定是否有可以运行的基于OCL的模型转换语言。ATL中就使用了部分的OCL

问题解决了么

当年在高中我学完经典力学时,认为所有问题都解决了,因为它是如此完美,上帝规定了所有的定律并创造了整个世界,然后用手轻轻一拨,世界便沿着宿命的轨迹运行到毁灭为止。后来才知道,有一种思想就叫宿命论。例如,我今晚选择写blog而不是去看网络小说,是因为我的某些脑细胞收到了某些脑电流刺激,而这些都是一些物理定律决定的,因此当世界开始的时候,就注定了我今晚要写blogHoho!后来才知道有什么概率问题,测不准原理等等上帝掷骰子的动作。

事实上,所有问题都没有解决的一天,直到这个问题不再成为一个问题,没有人再关注它是否解决为止。

模型编织是否能够解决模型转换中存在的问题呢?当然不能,它只是在某个方向上作了很好的探索而已,事实上,它并没有触及到模型转换问题的本质所在。如我所言,模型编织事实上是一种模型转换程序产生器,无论多么优秀,但是模型转换程序本身不能解决的问题,它一样不能解决。充其量它减少了一部分复杂性,多了一些可用性而已。

模型转换是为了解决模型之间的自动转换问题,或者说是为了自动生成软件模型;软件模型是为了解决高级语言代码的自动生成问题;高级语言是为了自动生成汇编语言。。。现在我们可以在模型转换上面再加一层了,可否就称之为模型编织层?记不得在哪篇文章中看见过:当某个问题无法解决时,我们就在软件中再加一层来折衷。我们到底是在写软件还是在做千层饼?

方法多了一种,路多了一条,但是问题依然存在。

题外话

我的blog又是两个多月没有更新了,这是有原因的(废话!不算)。前一个月我在努力写一篇论文,期间又去南京参加了一个会议。后一个月在家陪老婆生娃娃,努力喂奶换尿布做好爸爸,以至于累出胃病。不过成果是喜人的,特贴出小宝宝9天照,以资鼓励:

image008.jpg


评论

# re: 一篇关于模型编织的文章及其他  回复  更多评论   

2005-12-11 22:44 by MicroSparrow
恭喜学兵学长,您的小宝宝真可爱!!!
上帝掷骰子,你可没说宝宝是才子还是千金呀。
也好,先让大家伙猜一猜吧,我想,看上去蛮文静的,是千金吗?!

学长给我上过课,感觉挺好的。不过到学长的blog上一看,才知道学长的
文笔也是一流的,就是更新的太慢了。有机会不知能不能点拨点拨在下?

# re: 一篇关于模型编织的文章及其他  回复  更多评论   

2012-08-30 09:28 by shiweijun
请问英文原文您有吗?方便的话传给我一份……shiweijun47@163.com

只有注册用户登录后才能发表评论。


网站导航: