|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
什么时候上述的三种开发工具能和三为一,什么时候java的竞争力才更强,才有机会拉拢更多的程序员投入到对java的开发上,因为到时的开发工具将会比.net的更简单。还有一点也很关键,什么时候java推出的jsf能成为真正意义上的标准。对照
MetaDiff-一个形式对照框架
(翻译草稿,待审校)
译者注:这是来自瑞典斯得哥尔摩年夜学盘算机和体系迷信系的一篇硕士论文,由MarkKofman撰文,导师为ErikPerjons。本文的中文译者为山东年夜学盘算机迷信与手艺学院的本科生周翔。中文译文中省略了原文中的目次部分。
择要
在软件开辟中,开辟形式主要性的日趋进步发生了很多新的存眷和应战。本论文次要会商了在形式驱动开辟的情况中形式对照的成绩。本论文的目标是为了形貌一个名为MetaDiff的形式对照框架的需求剖析,和如何来计划并完成它。这个框架是在现有的元对象工具(MetaObjectFacility,MOF)尺度的基本上创建起来的。作者但愿这个框架可以在形式办理、完成特定的形式对照工具和算法组装等方面下一步的相干实验研讨中派得上用处。
第一章简介
1.1背景
人们对形式驱动办法发生了愈来愈浓郁的研讨乐趣,并在使用中赐与了愈来愈多的撑持。这些形式驱动办法包含形式驱动软件开辟(ModelDrivenSoftwareDevelopment)[6]、对象办理构造的形式驱动构架(OMGModelDrivenArchitecture)[24]、言语驱动开辟(LanguageDrivenDevelopment)[8]等等。一些开源项目,好比EclipseGenerativeModelTransformer(GMT)[13]、NetbeansMetadataRepository(MDR)[22]、EclipseModelingFramework(EMF)[9]、AndroMDA[3]和各类分歧的CASE工具的厂商的事情完成了用于形式驱动开辟的各类分歧的组件。建模能为全部体系的开辟和保护供应的一种更好的基本,然后才是以代码为中央的开辟和保护[19]--这些办法都是以这类设法为基本的。在这些办法的引导下,形式已不再仅仅开辟的从属产品,而是构建软件使用程序的相当主要的构成部分。但是,日趋进步的开辟形式的主要性发生了很多新的存眷和应战。个中的一类成绩与对建模工具的准确办理有亲切干系。
1.2成绩
假如你看一看一般的以代码为中央的开辟情况,你就会发明一些功效特征,这些功效包含情况所集成的版本把持、分歧版本的兼并和对照,以还包含一些使团队开辟更便利的工具。可是这些工具年夜多是面向单一的文本文件的,而且仅仅合用于以惯例的编程言语为基本开辟历程。将这些庞大的功效转换为形式驱开工具开辟是不太简单的,由于在这个中存在着一些成绩必要这一范畴的专家和研讨职员指出。
依据参考文献[17],形式对照在形式驱动开辟的理论中是一个关头性的应战,处置这个成绩时,有上面几个方面必要人人的注重:
l在一些面向对象的言语中,你能够把全部体系依照逻辑上和物理上的请求将其分为一些类。但是,建模言语短少如许在物理大将其分化的尺度办法。这经常招致大批的信息会合存储在一个模块单位中。
l各个模块利用分歧的标记来暗示,这些标记一般是图形化的。可是,在辨别各个模块逻辑上的分歧的时分,这些标记起不到无效的感化。
l视觉效果的分歧在利用形式图表处置成绩时也是一个必要引发器重的要素。如今的基于文本的对照工具一般利用两个窗口分离来显现承受对照的文本。可是利用这类办法来暗示形式的分歧的不实在际的。
l形式的构造并非像文本那样是按次线性的。而是由各个全体构成树型或图型的布局[17]。因而,必需利用其他的手艺来研讨这些形式的分歧。
成绩形貌:为懂得决这些方面的成绩,研讨职员和工程职员必要举行普遍地实验。正因云云,他们必要一个符合的基本构架办理计划。这个基本构架可以使他们可以依据本人的乐趣举行研讨,并察看其他方面是如何影响并参与其他方面的。别的,经由过程未来自各方的组件整合在一同,这个基本构架能够发生新的思绪和了局。
1.3目标和企图
这篇论文的目标是先容如许一个基本构架。这个构架能够用来形貌对一个通用的、半主动化的形式对照办理计划的需求、计划和完成。通用,在某种意义上说就是,它能够用来对照基于各类分歧元形式(meta-model)的形式。半主动化,在某种意义上说就是,对照是由盘算机来操纵的,可是,这个算法必要挪用者供应附加的信息和引导。
为了到达如许的方针,必要完成上面的了局(目标):
l如今的论文其实不努力于办理下面提到的一切的成绩。但是,做为会商的了局,必要将这些了局原型化以成为对这些成绩感乐趣的研讨职员的富有代价的工具。它意味着,对新的无效的对照和兼并算法包含通用和元形式辨认算法的持续研讨是大概的。我们能够就分歧的图表的可视性的成绩做实验,并研讨这个范畴中相干成绩。
l如今的框架在实践的理论过程当中也是合用的。分歧的工具打造商能够在现有框架的基本上完成各自的具有特定功效的对照和兼并工具。在现有的框架的基本上构建的对照和兼并工具能够用于版本把持体系,用来改善对形式的处置。
1.4办法
作者将归结和归纳的办法黑暗包含在这篇论文中。形式对照框架必要上面历程供应的数据:
l对在其他范畴下分歧形式对照手艺的研讨必要完成。对一样平常文本文件、XML文件、XML格局文件的研讨必要完成,而且要为一个形式对照框架提掏出符合的需求呈报。
l由包含ITUniversity的研讨职员在内的形式驱动开辟和格局剖析范畴的专家列入的思想风暴集会。
l形式对照框架的初期原型用于需求优化。
在汇集到的需求的基本上,进一步剖析和计划框架。
接上去,在开辟原型框架的时分,利用Rational一致流程(RationalUnifiedProcess)[15]。建模时利用UML言语[26]。
在研讨的初期阶段,原型被普遍使用于理论,包管了实际观点的可用性。框架原型就是经由过程实际天下的实例来评价的。
因为要对运转了局举行评价,体系框架作为开源项目标一部分公布出来,如许有益于取得较多的用户反应和模子的改善。
1.5范围性
框架原型能够用两套MOF尺度的Java开源体系完成(EclipseEMF[9]和NetBeansMDR[22])。这意味着框架只能为形式资本与这些体系的和谐分歧供应撑持。这个范围性能够靠整合其他的MOF尺度的计划来办理。使用其他面向对象的言语完成原型也能够加强了框架本身的合用性。
因为工夫干系,对框架的开源版本的用户反应评价将不在本论文中会商。
1.6论文布局
本论文布局以下。在第二章我们给出了观点、思绪、和相干研讨功效的先容,而这些内容将在论文接上去的章节中普遍接纳。在第三章,我们界说了开辟框架的需求。在第四章,我们会合会商了框架的计划和完成,而在第5章,我们给出了详细的使用实例。第6章是总结。
本论文布局以下。在第二章我们给出了观点、思绪、和相干研讨功效的先容,而这些内容将在论文接上去的章节中普遍接纳。在第三章,我们界说了开辟框架的需求。在第四章,我们会合会商了框架的计划和完成,而在第5章,我们给出了详细的使用实例。第6章是总结。
本论文布局以下。在第二章我们给出了观点、思绪、和相干研讨功效的先容,而这些内容将在论文接上去的章节中普遍接纳。在第三章,我们界说了开辟框架的需求。在第四章,我们会合会商了框架的计划和完成,而在第5章,我们给出了详细的使用实例。第6章是总结。
第二章观点和相干事情
第二章观点和相干事情
2.1观点和基础界说
在这一节中将扼要先容本文中呈现的基础观点。
2.1.1形式驱动开辟
近年来,发生了很多分歧的形式驱动办法。个中最着名的是对象办理构造的形式驱动构架(ModelDrivenArchitecturefromOMG)[24]、形式驱动软件开辟(ModelDrivenSoftwareDevelopment)[6],和软件工场(SoftwareFactories)[14]。一切的形式驱动开辟实际都夸大模子在开辟过程当中做为基础单位的主要性。在建模过程当中,模子转换是次要的操纵,用于将信息从一种形式直达进另外一种形式。这类软件性命周期的看法被视为一个模子转换链。
2.1.2形式和图表
在界说形式和图表时,本文利用了对象办理构造的一致建模言语(OMG’sUnifiedModelingLanguage)[26]相似的观点。图表是对形式的另外一种意见大概另外一种视角。图表一般经由过程图形标记来暗示。
2.1.2形式和图表
在界说形式和图表时,本文利用了对象办理构造的一致建模言语(OMG’sUnifiedModelingLanguage)[26]相似的观点。图表是对形式的另外一种意见大概另外一种视角。图表一般经由过程图形标记来暗示。
2.1.3元对象工具(Meta-ObjectFacility,MOF)
2.1.3元对象工具(Meta-ObjectFacility,MOF)
元对象工具(MOF)[25]供应了一个形式堆栈用于形式的详细化并能够经由过程其对形式举行办理。MOF能够看作是一种计划和完成新型形式言语的工具。
2.1.4元形式层(Meta-ModelLayer)
2.1.4元形式层(Meta-ModelLayer)
在MOF中,建模的观点次要是分类器(classifier)和实例(Instance),大概类(Class)和对象(Object),另有将实例转到其分类器(元对象,meta-object)的才能。“元形式层”这个主要的观点偶然用来构造建模层,以使之转化为更高的元条理(metalayer)。每种上一级的元条理由其下一级的分类器组成。MOF尺度确保能够依照必要任意界说很多条理。但是在年夜多半情形下仅限于界说4个条理。
传统构架是基于上面的4层布局的:
传统构架是基于上面的4层布局的:
lM0层,包括使用程序数据(比方,由一个面向对象体系运转时发生的实例,大概相干数据库的表中的某些行)。
lM1层包括使用程序;包含面向对象体系的类,相干数据库的表的界说。使用程序可在这一层建模(也被称为范例或形式级别)。
lM2层,包括归纳综合言语的元形式:比方,UML元素,如类,属性,操纵等。工具在这一层发扬感化(也被称作元形式或构架层)。
lM3层,是元形式的元形式层,给出了一切元形式层(M2层)中可以取得的元形式的属性。这一层界说了建模言语,用来供应各类工具互相通讯的体例。
2.2相干事情
2.2相干事情
只管作做的很少,一些作者已入手下手动手本文在这个方面会商的成绩。类似的成绩已在格局表的高低文和数据库综合中被提了出来。依照我的设法,我给出了本论文中最主要的几个成绩,以归纳综合我所做的事情的内容。相干研讨方面的事情是取得形式对照框架的需求标准的次要路子。
2.2.1形式办理
2.2.1形式办理
形式办理的方针是为形式驱动使用程序的开辟者制造一个一致的基本框架,这类形式办理基本框架必需把形式、元形式和映照之间的干系做为主要内容,并供应各类办法操纵它们。
其他的形式办理成绩将在相干的文献[4]中给出:
其他的形式办理成绩将在相干的文献[4]中给出:
l有多种分歧的办法来表征形式和映照:数据库中的相干格局表,迷信界中的属性图,软件工程中的UML模子等,这类对基本布局的过于一致化的界说被以为是形式办理中严峻的成绩。
l在与这些布局相干操纵的界说中也会呈现相似的贫苦。
l相干工具的开辟能够简化形式办理以为并使之主动化。
微软研讨院[5]近几年在通用的形式办理的范畴中已做了一些研讨。他们创建了一个代数运算符的汇合。这些运算符是:
微软研讨院[5]近几年在通用的形式办理的范畴中已做了一些研讨。他们创建了一个代数运算符的汇合。这些运算符是:
l婚配(Match)运算符-将两个形式做为输出并前往二者之间的映照。该映照能够辨认在输出形式中等价或类似的对象的团结体,这取决于内部给该体系的等价或类似的尺度界说。
l复合(Compose)运算符-输出形式A到形式B的映照和形式B到形式C的映照,前往形式A到形式C的映照。
l差(Diff)运算符-输出形式A和从A到形式B的映照,前往A中不介入映照干系的那一部份子集元素。
l形式天生(ModelGen)运算符-输出形式A,前往一个基于A天生的新形式B和一个A和B之间的映照。
l兼并(Merge)运算符-输出形式A和形式B,和它们之间的映照,前往A和B的团结C,和C和A、C和B之间的映照。
本论文会报告使模子办理义务主动化和简化的工具的急切需求,而且如许的工具能够被看作是对下面已会商过的通用形式办理基本构架一小部分的完成。
2.2.2对照算法
在标记序列中对照个中的分歧的成绩已被普遍地研讨(见参考文献[29],[18],[21])。因而,用于文本对照工具的算法息争决计划大批地出现出来。这些功效都使开辟实践的文本形式对照工具(好比GNUDiff和其他的一些工具)成了大概。
跟着研讨的深切,呈现了用于对照布局化对象的对照算法。近几年,良多作者的文章(见参考文献[28],[7])中提到了树的不同剖析成绩。由此发生了一个利用这些算法的实践的使用手艺,这类手艺已开展出很多用于XML和HTML等一些布局化文档的对照算法。
只管树的不同剖析算法使用的并非很普遍,可是使该算法使用于建模工具的研讨已入手下手举行了。在文件[2]中,作者形貌了为基于MOF的形式供应的不同剖析算法,这个算法会表现在本论文完成原型化的成绩中。
参考文献[27]中形貌了一些与婚配手艺相干的算法。分歧的格局婚配办法有所区分:格局级(schema-level)和实例级(instance-level)的婚配、元素级(element-level)和布局级(structure-level)的婚配和基于言语(language-based)和基于束缚(constrained-based)的婚配。本文中所形貌的框架的方针是可以使之办理这些分歧的婚配办法。
2.2.3数据库格局综合
这里会商的相似的成绩已在先容格局表的高低文和数据库综合中的文献(好比[16],[27],[1])中被提了出来。数据库格局综合是将现存的要举行操纵的数据库的格局整合为一体的历程,在此过程当中接纳一致的格局。这在该范畴中是一项浩荡的工程,个中对本论文有主要意义的事情在ITUniversity的DSVdepartment完成[16]。这些事情指出了在团结体系中呈现的格局整合成绩。
2.2.4差别的可视性
形式一般利用图形化的标记来暗示,好比UML图表。参考文献[23]指出了图表差别可视化的主要性,该文章还倡议利用分歧的色彩来标识图表的差别,除语意的不同以外,作者还指出了计划中必要改善的中央,好比将类移出图表。
开辟的框架应当可以为显现差别供应分歧的办法。
2.2.5CASE工具
值得一提的是,一些CASE工具打造商但愿经由过程本论文取得一些元形式的细节形式对照和兼并的办理计划。而这个办理计划将是这个范畴的一个严重停顿,但是,这其实不意味着这篇论文会供应一个完全的办理成绩的计划。
作者起首断定了上面撑持团队开辟的一些工具:
lOmondoEclipseUML
lRationalRoseToolFamily
l
EnterpriseArchitect
因为利用允许的限定,作者对这些工具的评价没法举行。这个清单其实不完全,也不克不及包管供应优秀的办理计划。
第三章需求剖析
这一章以用例的情势对MetaDiff框架的需求剖析举行了形貌。用例形式是形貌体系所需求的功效和每一个功效所体现出的举措(或脚色)的形式。用例形式对体系剖析和计划中的举动来讲是非常需要的。.1为UML用例图。
.1用例图
3.1归纳综合形貌
3.1归纳综合形貌
MetaDiff框架是一个为建模工具计划的可扩大的形式对照办理计划。框架的中心是一整套接口大概称其为可扩大的模版。如许的一个可扩大模版所次要完成的是包管在框架的基本上可以简单地增加新的形式对照算法。这个框架的次要利用者是这一范畴的工具打造商和研讨职员,他们可使用这个框架来开辟他们本人特定的组件。
3.2脚色目次(ActorCatalog)
脚色目次形貌了与框架有关的分歧的脚色,并对框架中每一个脚色的需求举行了扼要的形貌。.2为UML中的脚色。
.2脚色图
个中,框架挪用者(FrameworkCaller)经由过程挪用办法来利用框架功效。被摹拟的体系是一个软件框架,它不供应任何用户接口。这申明框架挪用者并非人所饰演的脚色,只管它利用体系供应API,而它更能够将它看作是一个软件组件或其他的挪用框架办法的工具。框架挪用者在特定的情形下可以自力地事情,好比框架扩大者(FrameworkExtender)不克不及在很年夜水平上改动框架挪用者利用框架的体例。
框架扩大者(FrameworkExtender)是一个可将框架的功效举行扩大并将其使用于本人的情况中的脚色。这是人饰演的脚色,该脚色一般将将形式对照框架作为一个组件用于开辟较年夜范围的体系过程当中。
工具开辟者(ToolDeveloper)属于框架扩大者,他开辟供应形式对照功效的建模工具。工具开辟者一般持有特定的元形式。这个脚色的感化次要是扩大框架功效以使建模工具更合适今后的模块集成事情。
研讨职员(Researcher)是另外一种框架扩大者。他的事情是来实验新的研讨思绪。这一脚色的方针是为下一步相干成绩的研讨对框架举行扩大,这个历程一般是经由过程在框架的顶层创建分歧的原型的办法来完成的。
3.3用例形式
3.3.1用例:婚配形式
能够形式婚配看做是一个函数,它将两个形式作为输出,前往两个形式之间的映照作为输入。在婚配了局中的每个映照元素反响了从一个形式中的特定元素到另外一个形式中的特定元素之间的逻辑对应干系(见参考文献[27])。
此用例产生在框架挪用者欲找出两个形式的映照干系时。起首,框架挪用者指定形式婚配所利用的算法;然后挪用形式婚配函数。框架实行被选中的算法并前往映照了局。这类映照鄙人面第3.3.2节提到的对照形式用例中最有大概用到。但是这类映照操纵也能够在本用例中被框架挪用者自力地实行。
在特定的情形下,形式婚配会成难堪题。在一些情形下,它触及对分歧的人创建的形式的语意了解方面的成绩[16]。因而,一些算法必要挪用者或相干职员供应关头性的匡助才干够完成事情。框架的计划应为这一类婚配算法供应扩大。
3.3.2用例:对照形式
在该用例中,框架挪用者可对两个形式举行对照。起首,框架挪用者指定用于形式对照的算法。然后挪用形式对照函数。你也能够有选择地为框架挪用者指定两个形式之间的映照,该映照可用于对照算法。最初,挪用者能够取得基于选定的算法的运转了局,了局指了然两种形式的分歧的地方。而这个运转了局也可被看做差别偏移量(comparisondelta)。
在一样平常情形下,用来对照的形式必需是在不异元级别(meta-level)上的两个实例。但是,为了不在对照时碰到形式转换的贫苦,对照操纵可感化于分歧元形式(meta-model)的两个实例。框架在这方面不该该有所限定,可是关于对照算法来讲,输出的形式和元形式要切合算法的请求,并能被算法承受。
和婚配算法相似,一些对照算法依附于挪用者和相干职员的匡助。框架计划应当是可扩大的以合用于这类对照算法。
3.3.3用例:完成新的形式婚配算法
框架扩大者应当在可用元形式的基本上为形式婚配完成本人的算法。算法必需合适元形式的特征,并将一特定范例的形式作为输出。算法也应当是通用的,在某种水平下去说,这些算法只使用了MOF层的信息。
3.3.4用例:完成新的形式对照算法
框架扩大者应当可以为形式对照完成本人的算法,假如必要大概便利的话,这些算法是依据元形式、格局化的对照偏移量和婚配算法来机关。算法必需合适元形式的特征,并将一特定范例的形式作为输出。算法也应当是通用的,在某种水平下去说,这些算法只使用了MOF层的信息。
3.3.5用例:创建新的对照偏移量格局
今朝还没有严厉的办法暗示形式对照的了局。林林总总的对照偏移量格局对暗示形式对照了局有主要的感化。因而,框架扩大者应当可以依据必要界说本人的对照偏移量的格局。
3.3.6用例:加载新的元形式
框架扩大者应当可以依据必要加载新的元形式。这个举动在完成MOF尺度时被指定用于加载元形式。必要值得注重的是,对新的元形式举行界说并非全主动的,它必要相干职员编写代码并使代码在框架外部整合。
3.4企图仿单:构建形式对照工具
工具开辟者作为个中的一个脚色是经由过程利用MetaDiff框架来撑持形式驱开工具的开辟。我们无妨创建一个企图仿单来形貌工具开辟者乐成完成义务的历程。.3是这个企图仿单的举动图。
.3:企图仿单:构建形式对照工具的历程
全部历程由上面几个步骤构成:
l评价撑持MOF尺度的完成办法。在一般情形下,最好的选择是利用现有的完成计划。假如没有合适你的目标的计划,你能够完成你本人的MOF办理计划。
l评价现有的元形式。你必需包管框架可以处置你的形式资本。这意味着你所利用的元形式应当提早加载。你也能够利用现有的基于MOF尺度的办理计划来界说新的元形式。
l评价现有的形式婚配和对照算法。你有大概反复利用现有的算法或算法中的一部分。然后完成本人的算法。
l最初,你就能够在形式对照工具中利用这个框架了。
第四章计划和完成
在这一章中,我们提出了MetaDiff形式对照框架的计划计划。
4.1构架
.1:MetaDiff的构架
就像.1暗示的如许,在较高的条理上看,MetaDiff框架可分为三个构成部分:
l扩大模版(ExtensionTemplate)-用于对框架举行各类扩大的接口的汇合;
l基本构架(Infrastructure)-是加载分歧形式资本的功效在MOF尺度和各类元形式界说上的集成化的构架完成;
l扩大(Extensions)-基于MetaDiff框架的散布式的通用和公用扩大汇合。扩大在基本构架的顶层完成,并可以完成扩大模版的接口。
MetaDiff框架是由Java言语完成的,并创建了上面的代码库(packages):
.2JavaPackage之间的依附干系
lorg.metadiff-框架中最基础的代码库。
lorg.metadiff.template-该代码库中包括了框架中的次要接口。
lorg.metadiff.infra-该代码库中包括了与框架的基本构架相干的类和子代码库。
lorg.metadiff.infra.ecore-该代码库中包括了与EclipseEMF的利用相干的类和接口。
lorg.metadiff.infra.mdr-该代码库中包括了与NetBeansMDRMOF体系的利用相干的类和接口。
lorg.metadiff.ext-该代码库中包括了对框架的扩大代码。包含框架中已完成的那一部分。
lorg.metadiff.ext.generic-通用扩大类的汇合。
lorg.metadiff.ext.tucs-在参考文献[2]中会商的对照算法的完成代码。
lorg.metadiff.ext.deltaxml-在贸易化XML对照工具DeltaXML的基本上完成的对照算法。
4.1.1扩大模版计划
扩大模版对增加新的婚配对照算法和对照偏移量供应了便利的路子。扩大模版是由一组接口构成,并供应给框架挪用者利用,扩大模版的这类功效在用例形式中暗示出来。.3为扩大模版的类视图。
.3:扩大模版的类视图
如今的基本构架是以切合MOF尺度的两个用Java完成的办理计划为基本的。个中一个办理计划是EclipseEMF[9],另外一个是NetBeansMDR[22]。二者都同意用户界说他们本人的元形式并供应了反射API(reflectiveAPI)来会见形式数据。这些API可用来完成婚配和对照算法。如今的MetaDiff框架其实不供应通用的形式会见接口,但这恰是其勉力完成的方针之一。
4.1.3扩大
MetaDiff框架供应了由分歧的扩大构成的汇合。作者以为个中最主要的是TucsDiffFinder、DeltaXmlDiffFinder和IdBasedMappingFinder这三者。
lTucsDiffFinder经由过程完成了在参考文献[2]中申明的对照算法扩大了ModelDiffDinfer。该扩大是基于Ecore元形式(译注:Ecore元形式是在UML的类图顶用Ecore标识的元形式)的。
lDeltaXmlDiffFinder是基于贸易化的XML对照工具DeltaXML完成的,它能够对照保留在XML中的形式。
lIdBasedMappingFinder是ModelMappingFinder的扩大类。它利用对象的ID对两个形式举行婚配操纵。这类情势的映照十分合用于一个形式的两个版本之间的差别对照。
我们发明上面的扩大也是很有效的:
l特定的元形式算法利用了元形式顶用于改善算法质量和效力的有关信息,好比UML对照算法。
lModelMapingFinder的分歧扩大。参考文献[27]给出了形式对照算法的具体的分类。
lModelComparisonDelta扩大为一个元素集,个中的元素为形式供应了可增加或删除元素的汇合。
lModelComparisonDelta扩大为一个形式。它将偏移量(delta)看作一个形式,如许可以使用户有大概将形式转换操纵感化在偏移量上。这也必要在对照算法中对这类情形举行特别的处置,以包管偏移量可以成为一个布局优秀(well-formed)的形式[5]。
4.2案例的完成
在这一节中,我会报告扩大模版和各类扩大计划是如何完成在第三章中形貌的需求的。
4.2.1婚配形式
l假定框架挪用者是FrameworkCaller类的一个对象;
lFrameworkCaller经由过程完成ModelMappingFinder接口界说了一个婚配算法;
l假如必要回调(callback),你可使用本人特定的逻辑完成MappingCallback接口;
lFrameworkCaller加载了两个形式的实例,这两个实例利用了MOF完成的特定的加载功效类,好比org.metadiff.infra.ecore.util.ModelLoaderUtil或org.metadiff.infra.mdr.util.ModelLoaderUtil;
lFrameworkCaller挪用ModelMappingFinder类对象中的matchModels办法;
lModelMapping前往了局,了局中包括两个形式之间的映照干系。
4.2.2对照形式
假定框架挪用者是FrameworkCaller类的一个对象;
lFrameworkCaller经由过程完成ModelDiffFinder接口界说了一个对照算法;
l假如算法中利用了映照,则实例化ModelMappingFinder接口;
l假如必要回调(callback),你可使用本人特定的逻辑完成DiffCallback接口;
lFrameworkCaller加载了两个形式的实例,这两个实例利用了MOF完成的特定的加载功效类,好比org.metadiff.infra.ecore.util.ModelLoaderUtil或org.metadiff.infra.mdr.util.ModelLoaderUtil;
lFrameworkCaller挪用ModelDiffFinder类对象中的findDiff办法;
lModelComparisonDelta前往了局,了局中包括两个形式之间的差别。
4.2.3完成新的形式婚配算法
必要值得注重的是,界说新的形式婚配算法是一个框架扩大举动。它不克不及够主动地完成编写代码和将代码与框架集成的事情,而是必要由人来帮忙。使该举动变得更便利和间接是该框架的方针。
l你能够完成ModelMappingFinder接口,大概扩大一个现存的扩大。
l假如必要的话,扩大ModelMapping或它的任何一个扩大。
l创建你的扩大类。
l如今,你就能够利用你前几步创立的扩大来辨认形式间的映照干系了。
4.2.4完成新的形式对照算法
必要值得注重的是,界说新的形式对照算法是一个框架扩大举动。它不克不及够主动地完成编写代码和将代码与框架集成的事情,而是必要由人来帮忙。使该举动变得更便利和间接是该框架的方针。
l你能够完成ModelDiffFinder接口,大概扩大一个现存的扩大。
l假如必要的话,扩大ModelComparisonDelta或它的任何一个扩大。
l创建你的扩大类。
l如今,你就能够利用你前几步创立的扩大来辨认形式间的差别干系了。
4.2.5完成新的形式对照偏移量的格局
必要值得注重的是,界说新的对照偏移量的格局是一个框架扩大举动。它不克不及够主动地完成编写代码和将代码与框架集成的事情,而是必要由人来帮忙。使该举动变得更便利和间接是该框架的方针。
l你能够完成ModelComparisonDelta接口,大概扩大一个现存的扩大。
l创建你的扩大类。
l如今,你就能够利用你前几步创立的扩大来暗示形式间的差别干系了。
4.2.6加载新的元形式
在框架的基本构架的基本上,能够加载新的元形式。这个举动对每一个MOF的办理计划来讲都是特定的。
EclipseEMF的文档[9]中具体形貌了创建Ecore元形式的办法。复杂起见,框架扩大者必要完成上面的举动:
l利用EclipseEMF的功效完成元形式,EMF的文档中会商了这个举动的细节;
l为包管完成你的元形式,你必需供应其所必要的特定的代码库;
l假如你乐意,能够经由过程扩大EcoreResource来利用org.metadiff.infra.ecore.util.ModelLoaderUtil中的匡助类来加载你的形式资本。
l如今,你可使用EcoreResource或你在前几步创建的扩大标识你的基于元形式的资本了。
NetBeansMDR的文档[9]中具体形貌了创建MDR形式的办法。复杂起见,框架扩大者必要完成上面的举动:
l利用撑持XMI导出功效的UML或MOF建模工具创建你的元形式;
l创建合用于JMIJava的接口和类,用于会见元形式实例中的数据;
l在MetaDiff框架中将天生的代码和所必要的代码库整合起来;
l假如你乐意,能够经由过程扩大MdrResource来利用org.metadiff.infra.mdr.util.ModelLoaderUtil中的匡助类来加载你的形式资本;
l如今,你可使用MdrResource或你在前几步创建的扩大标识你的基于元形式的资本了。
第五章实例
我们开辟了MetaDiff框架的两个使用实例。参考文献[20]中有这两个实例完全的源代码。
5.1UML形式婚配工具
假定我们为UML1.4[26]开辟基于命令行的形式婚配工具。该婚配工具的特性是它不克不及主动辨认映照,可是它能够向人扣问每一个形式元素之间的映照干系。
我们依照创建形式对照工具的企图仿单举行开辟,但必要注重的是,我们的工具仅仅具有形式婚配的功效。
l有一个用NetBeansMDR界说的UML1.4元形式供我们利用。
l我们利用CallbackMatchingFnder扩大来供应与人交互的功效。同时我们完成了特定的MappingCallback接口。对每次回调,我们的完成计划会让挪用者利用命令行来选择用于婚配的一个元素。
l我们经由过程Java类库完成了框架挪用者会见MetaDiff的功效。
5.2为Swallow形式创建Diff工具
假定我们为Swallow形式开辟基于命令行的形式婚配工具。Swallow是由EclipseGMT开源项目开辟的复杂元形式,它能够被看作是形式驱动软件开辟[6]办法的一个实例,这个实例在参考文献[10]中有具体先容。你能够在.1中看到这个元形式的EMF类图。
.1:Swallow元形式
我们依照创建形式对照工具的企图仿单举行开辟:
lSwallow元形式是利用EMFEcore界说的,并被如今的框架基本构架所撑持。
l如今,我们经由过程向类目次中增加jar文件的体例加载Swallow元形式。一切必要的代码库都可以从EclipseGMT的项目中取得。
l我们决意利用参考文献[2]中供应的框架来完成我们的算法,以是我们其实不必本人创建新算法。
l我们利用Java类来完成框架挪用者会见MetaDiff的功效。
为了测试这个工具,我们引进了参考文献[10]中讲到的复杂用户仿单使用形式(simpleguestbookapplicationmodel)。在Swallow元形式的基本上,我们界说了用户仿单形式的第一个版本,并对其举行了响应修正以合用于那种形式。在.2中,你能够看到二者形式(译者注:GuestBook形式和对其修正后的形式)的树型暗示,我们对原始的GuestBook形式举行了以下修正:
l将"guestbook"改名为"gb"
l为"GuestBook"类增加了新属性
l在"GuestEntry"类中删除"text"属性
.2:GuestBook使用形式版本
创建起来的工具在运转时会有上面一些分歧的操纵:
l创建Attribute范例的元素
l将新建的Attribute范例的元素的name值由"null"设为"name"
l将Attribute的name值为"text"的由"text"设为"null"
l将Package的name值由"guestbook"改成"gb"
l将名为"GuestEntry"的Class元素到名为"null"的元素之间的链接删除
l在Class元素的名为”GuestBook”的Attribute和名为"name"的Attribute之间拔出一链接
l经由过程将Attribute改成"null"将其删除
第六章总结
6.1到达的了局
本论文的次要奉献是开展了MetaDiff-一个可扩大的形式对照框架。这个框架供应了扩大模版(ExtensionTemplate)-由一些接口组成的汇合,并为这些接口举行扩大供应了优秀的前提。基本构架(Infrastructure)使切合MOF尺度的办理计划、元形式集和扩大集整合在一同,这证实了扩大模版所具有的代价。
我们如今的事情获得了上面无益的功效:
l在MetaDiff框架的基本上,下一步的研讨事情就对照复杂了。下一步的事情只创建原型就能够。经由过程框架扩大举行实验对研讨职员来讲是一个主要的前进。
lMetaDiff扩大模版可以被扩大以供应宽广的形式办理功效,并且可以经由过程它处置加倍笼统的实际成绩。
l创建起来的框架还具有理论代价。范畴特定言语(DomainSpecificLanguage,DSL)的开辟者可使用这个框架在他们各自的范畴中完成形式对照办理计划。并且我们在此经由过程EclipseGMT的Swallow元形式的一个复杂的例子,向人人演示了这个功效。
6.2今后的事情
我们鄙人面列出了与本论文有关的今后要完成的事情。
6.2.1改善扩大模版
不休地完成这个方针长短常主要的。现有的各类分歧的框架扩大为扩大模版的晋级供应了引诱思绪。一些通用的笼统类作为个中的以部分能够增加到扩大模版中,用来促使扩大功效的改善。
6.2.2创建新的框架扩大
跟着分歧的扩大组件的增添,框架会愈来愈具有代价。上面我们以为的对模版最主要的进一步的改善办法:
l不在对象辨认器的基本上对ModelMappingFinder举行扩大,以包管框架能够在更普遍的情形下利用;
l完成盛行的元形式的对照算法;
l为ModelComparisonDelta的扩大创建布局优秀的条理,如许会改善框架使用和对照偏移量视觉效果;
l对ModelDiffFinder和ModelMatchFinder的扩大能够对分歧元形式举行形式对照和婚配。
6.2.3包括其他的形式办理功效
当用户利用该框架时,对框架供应的功效举行扩大是非常主要的。作者以为,能够经由过程完成全体的形式办理功效来扩大框架的功效。
6.2.4对团队开辟成绩的研讨
在形式驱动开辟的过程当中,有一些团队开辟的成绩,作者以为开辟的框架可以匡助标明这些成绩:
l对照偏移量的图形暗示的成绩。出格是思索到产业化的建模言语中的图形标记,分明而且寄义明白的暗示形式差别是一个十分主要的方针。在如今的框架上创建原型能够为研讨供应思绪。
l对框架的可丈量性研讨对形式对照来讲长短常需要的,这一点在实际天下中对年夜型团队项目有大概接纳的年夜型模子出格主要。
参考文献
[1]Alacig,S.,Bernstein,P.A.(2001):AModelTheoryforGenericSchemaManagement,ProcDBPL,SpringerVerlagLNCS.
[2]Alanen,M.andPorres,
I.(2003):Differenceand
UnionofModels.TUCS
TurkuCentreforComputerScience,DepartmentofComputerScience,
|
|