




已阅读5页,还剩52页未读, 继续免费阅读
(计算机应用技术专业论文)基于模式的模型变换方法.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中文摘要 o m g 提出的模型驱动架构( m d a ) 已经逐渐地成为了学术界和软件行业 瞩目地焦点。m d a 定义了一种信息系统规约说明的方法,将系统的业务规约从 系统的针对其具体平台的实现细节中分离出来,并且提供一套以模型表示的构 建规约的指南。为了使m d a 能够达到发挥其全部潜能的目标,具备一个强大的 操作模型和变换模型的能力是关键,最明显的模型变换就是从平台独立模型变 换到平台相关模型。由于认识到了它的重要性,o m g 发表了提议请求( r f p ) , 其目的就是要发现一种合适的模型变换的机制。 文章首先探讨了目前针对o m g 的r f p 标准要求所提出的各种主要解决方 案,并对它们的技术的特点进行了分析与比较。作者在借鉴这些方案的优点的 基础上,提出了一个新的模型变换的框架方案。该方案将变换类型分为了两个 不同的子类型:关系和映射。这个技术使得此方案的变换能够兼容多种不同的 变换类型,这也使得变换在系统生命周期内改变自身的类型成为可能。模式语 言在模型变换中被广泛使用,比如p e r l 和x s l 。我们的解决方案则为关系和映 射定义了一个标准的模式匹配语言,为关系定义了一个模式替代语言,它能够 使得许多规约利用此模式语言来实现可运行性。此外我们定义了一个图形语法 来表达模式。并且我们将变换定义为上层构造和下层构造两部分,分别适用于 最终用户和工具。 我们通过个u m l 模型至o x m l 的模型转换的例子来验证我们方案的可行 性。论文最后指出了模型变换技术的未来发展趋势和有待进一步研究的方向。 关键词:模型驱动架构模型变换模式元模型元对象设施 a b s t r a c t t h e0 m g sm o d e 】d r i v e na r c h i t e c t u r e ( m d h ) i n i t i a t i v eh a sb e e nt h ef o - c u so f m u c ha t t e n t i o ni nb o t ha c a d e m i aa n di n d u s t r y m d ad e f i n e sa na p p r o a c ht oi t s y s t e ms p e c i f i c a t i o nt h a ts e p a r a t e st h es p e c i f i c a t i o no fs y s t e mf u n c t i o n a l i t yf r o mt h e s p e c i f i c a t i o no ft h ei m p l e m e n t a t i o no ft h a tf u n c t i o n a l i t yo nas p e c i f i ct e c h n o l o g y p l a t f o r mb a s e d m d aa l s op r o v i d e sas e to fg u i d e l i n e so fs t r u c t u r i n gs p e c i f i c a t i o n s e x p r e s s e da sm o d e l s t om a x i m i z em d au s a b i l i t y , m a n i p u l a t ea n dt r a n s f o r m m o d e l sf r o mt h ep l a t f o r mi n d e p e n d e n tm o d e l ( p i m ) t ot h ep l a t f o r ms p e c i f i c m o d e l si f , s m ) i st h ek e y o nt h i sr e g a r d ,t h eo m gg e n e r a t e dar e q u e s tf o r p r o p o s a l s ( i 冲p ) l a r g e l y c o n c e m e dw i t h f i n d i n g as u i t a b l em e c h a n i s mf o r t r a n s f o r m i n gt h o s em o d e l s v a r i o u ss c h e m e sp r o p o s e dt os u p p o r t0 m g si 强ph a v eb e e nd i s c u s s e di nt h i s p a p e r t h ec h a r a c t e r i s t i c so ft h o s es c h e m e sa r ea n a l y z e da n dc o m p a r e d 讪t l le a c h o t h e r an e wm o d e lt r a n s f o r m a t i o ns c h e m ei sp r o p o s e d ,w h i c hc o m b i n e ss o l r l eo t h e r s c h e m e s a d v a n t a g ea n ds o m en e wc h a r a c t e r i s t i c s t h et r a n s f o r m a t i o n sh a v et w o d i s t i n c ts u b - t y p e s :r e l m i o n sa n dm a p p i n g s ,s ot h a to n ec a nu s eav a r i e t yo fd i f f e r e n t t r a n s f o r m a t i o ns t y l e s c h a n g es t y l eo f t h et r a n s f o r m a t i o n st h r o u g h o u tt h el i f e t i m eo f as y s t e mi sa l s oa l l o w e d p a t t e ml a n g u a g e sa r ew i d e l yu s e di n r e a lw o r l d t r a n s f o r m a t i o nt e c h n o l o g i e ss u c ha sp e r la n dx s l 1 1 1 es o l u t i o np r o p o s e di n t h i s s t u d yp r o v i d e ss t a n d a r dp a t t e r nm a t c h i n gl a n g u a g e sf o rb o mr e l a t i o n sa n dm a p p i n g s ; ap a t t e mr e p l a c e m e n tp a r e ml a n g u a g ei sa l s od e f i n e df o rr e l a t i o n s ,a l l o w i n gm a n y s p e c i f i c a t i o n su t i l i z i n gt h ep a t t e r nl a n g u a g et ob ee x e c u t a b l e f u r t h e r m o r e ,i ta l s o p r o v i d e sg r a p h i c a ls y n t a x t o e x p r e s sp a t t e r n s t h ed e f i n i t i o no ft r a n s f o r m a t i o n c o m e si nt w od i s t i n c tl a y e r si n f r a s t r u c t u r ea n ds u p e r s t r u c t u r e ,t h e ya r er e s p e c t i v e l y s u i t a b l ef o re n d u s e ra n dm a c h i n et o o l s an o n - t r i v i a le x a m p l et h a tt h eu m lm o d e l sh a v eb e e nt r a n f o r m e di n t ox m l u s i n go u ra p p r o a c hw a sp r e s e n t e d ,f i n a l l yf u t u r ed i r e c t i o no f m o d e tt r a n s f o r m a t i o n s h a sb e e nd i s c u s s e di nt h i ss t u d y k e y w o r d s :m d a ,m o d e lt r a n s f o r m a t i o n s ,p a t t e r n ,m e t a m o d e l ,m o f 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作和取得 的研究成果,除了文中特别加以标注和致谢之处外,论文中不包含其他人已经 发表或撰写过的研究成果,也不包含为获得苤鲞盘生或其他教育机构的学 位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已 在论文中作了明确的说明并表示了谢意。 学位论文作者签名:两扣:豇 签字日期:埘年一z 月 日 学位论文版权使用授权书 本学位论文作者完全了解墨生盘茎有关保留、使用学位论文的规 定。特授权墨叠盘茔可以将学位论文的全部或部分内容编入有关数据库进 行检索,并采用影印、缩印或扫描等复制手段保存、汇编以供查阅和借阅。同 意学校向国家有关部门或机构送交论文的复印件和磁盘。 ( 保密的学位论文在解密后适用本授权说明) 学位论文作者签名:两弘盏 导师签名:碌遭劣( 代) 签字日期:埘年五月 目签字日期:埘年z 月 日 天津大学硕士学位论文 第一章绪论 1 1m d a 介绍 1 1 1m d a 产生背景 第一章绪论 在过去的十二年中,对象管理组织( o b e j e e tm a n a g e m e n tg r o u p ,o m g ) 提 出了对象请求代理( o b j e c tr e q u e s tb r o k e r , o r b ) 以及一套对象服务的标准。 这些工作可以在对象管理架构( o b j e c tm a n a g e m e n ta r c h i t e c t u r e ,o m a ) 【6 】6 中 看到,o m a 使用通用对象请求代理架构( c o m m o no r b a r c h i t e c t u r e ,c o r b a ) 7 】提供一个用于分布式系统的架构。 o m a 和c o r b a 软件架构其目的是引导软件开发采用o m g 提出的技术。 这个架构与o s i 的参考模型和开放分布式处理参考模型( r e f e r e n c em o d e lo f o p e nd i s t r i b u t e dp r o c e s s i n g ,r m o d p o d p ) 1 】有着相同的精神。 1 9 9 5 年o m g 开始非正式地采用行业细节技术规范。同年,m a r yl o o m i s 带领o m g 成员进一步扩大他们的技术视野,以至涵盖了对象建模技术。此举 导致了统一建模语言( u n i f i e dm o d e l i n gl a n g u a g e ,u m l ) 技术的诞生。随后, o m g 成员开始在o m g 采用的技术规范当中使用u m l 技术。 为了保持技术发展的领先,2 0 0 1 年o m g 选定了第二个架构一模型驱动架 构( m o d e ld r i v e na r c h i t e c t u r e ,m d a ) ,m d a 并不像o m a 和c o r b a 一样是 实现分布式系统的架构,而是一个在软件开发过程中使用模型的软件开发方 法。 1 1 2 m d a 概述 m d a 在目前技术的基础上,分离出了两个抽象级别的模型:平台无关模型 ( p l a t f o r mi n d e p e n d e mm o d e l ,p i m ) 和平台相关模型( p l a t f o r ms p e c i a l i z em o d e l , p s m ) ,p i m 是一个纯粹的不考虑实现技术的分析模型,而p s m 可以视为一个 基于特定的实现技术平台的模型,l l 如j 2 e e 的设计模型。工程师们只需要建立 表达业务逻辑的p i m ,剩下的工作都将由m d a i j 擎自动完成。描述业务逻辑的 p i m 将是一成不变的,而针对特定技术平台的p s m 贝j j 可能会随着平台技术的发 展而改变。在m d a 开发过程中,系统设计初期的开发工作的最终成果是p i m , 天津大学硕士学位论文第一章绪论 从p i m 到p s m 的模型变换以及p s m 到代码的生成都是由第三方的工具自动实现 的。 m d a 技术采用的是模型组合和平台独立的思想,如图1 1 所示。为了实现 这个思想,必须发现能够确定模型变化的方法,此方法被称作变换。在图1 1 中,变换t 1 组合了市场和工程两个业务模型成为一个完整的p i m 模型,变换t 2 和t 3 则将p i m 模型变换成不同的p s m 模型。 图1 - 1 m d a 中的变换 由此可见变换是实现m d a 的关键技术。它贯穿在整个m d a 架构中,或是 显式的,如p i m 至i j p s m 模型的变换;或是隐式的,如不同系统视图的组合。 1 1 3m d a 相关标准 为了实现m d a ,o m g 确定了一系列的相关标准: u m l :统一建模语言( u n i f i e dm o d e l i n gl a n g u a g e ,u m l ) 被m d a 用来描 述各种模型。虽然u m l 并不是专门为m d a g - 建的,但它是m d a 的基础,也是 m d a 的强大的工具。 m o f :元对象设施( m e t a - o b j e c t f a c i l i t y ,m o f ) 是比u m l 更高层次的抽 象,它的目的是为了描述u m l 的扩展或者其它未来可能出现的类似u m l 的建 模语言。 x m i :基于x m l 的元数据交换( x m l b a s e dm e t a d a t ai n t e r c h a n g e ,x m i ) , 它通过标准化的x m l 文档格式和d t d ( d o c u m e n tt y p ed e f i n i t i o n ) 为各种模型 定义了一种基于x m l 的数据交换格式。它使模型能够作为最终产品在各种不同 工具中使用。 c w m :公共仓库元模型( c o m m o nw a r e h o u s em e t a r n o d e l ,c w m ) 提供了 天津大学硕士学位论文第一章绪论 从p i m 型j p s m 的模型变换以及p s m 至u 代码的生成都是由第三方的工具自动实现 的。 m d a 技术采用的是模型组合和平台独立的思想,如图1 - 1 所示。为了实现 这个思想,必须发现能够确定模型变化的方法,此方法被称作变换。在图1 - 1 中,变换t 1 组合了市场和工程两个业务模型成为一个完整的p i m 模型,变换t 2 和t 3 则将p i m 模型变换成不同的p s m 模型。 图1 - im d a 中的变换 由此可见变换是实现m d a 的关键技术。它贯穿在整个m d a 架构中,或是 显式的,如p i m 蛰 p s m 模型的变换;或是隐式的,如不同系统视图的组合。 1 1 3m d a 相关标准 为了实现m d a ,o m g 确定了一系列的相关标准: u m l :统一建模语言( u n i f i e d m o d e l i n g l a n g u a g e ,u m l ) 被m d a 用来描 述各种模型。虽然u m l 并不是专门为m d a q 建的,但它是m d a 的基础,也是 m d a 的强大的工具, m o f :元对象设施( m e t a - o b j e c t f a c i l i v ,m o f ) 是比u m i 厦高层次的抽 象,它的目的是为了描述u m l 的扩展或者其它未来可能出现的类i i :以u m l 的建 模语言。 x m i :基于x m l 的元数据交换( x m l - b a s e dm e t a d a t ai n t e r c h a n g e ,x m i ) , 它通过标准化的x m l 文档格式和d t d ( d o c u m e n tt y p ed e f i n i t i o n ) 为各种模型 定义了一种基于x m l 的数据交换格式。它使模型能够作为最终产品在各种不同 工具巾使用。 c w m :公共仓库元模型( c o m m o nw a r e h o u s em e t a m o d e c w m ) 提供了 c w m :公共仓库元模型( c o m m o nw a r e h o u s em e t a m o d e l c w m ) 提供了 天律大学硕士学位论文第一章绪论 一种数据格式变换的手段,在任何抽象级别的模型上都可以使用c w i v i 来描述 两种数据模型之间的映射规则。 o m g 提出的u m l 、m o f 、x m i 、c w m 等一系列标准分别对应m d a 的模 型建立、模型扩展、模型交换、模型变换这几个问题。通过这样一个可扩展的 建模语言环境,厂商可以自由地实现自己的建模语言,以及语言到可执行代码 的映射,然而不管怎么样,都必须处于o m g 的标准化框架之下。 1 2 m o f2 0 q v t 介绍 在m d a 中,自动变换扮演了主要角色。变换能够被尽可能高效地开发是 m d a 的关键。关于变换的标准语法和执行语义对于开放的m d a 工具是一个重 要的能动因素。2 0 0 2 年4 月2 4 日o m g 发布了m o f 2 0 查询、视图和变换( q u e r y v i e wt r a n s f o r m a t i o n ,q v t ) 【7 的建议需求( r e q u e s tf o rp r o p o s a l ,r f p ) ,提出 了m o f 模型处理的主要问题: 1 m o f2 0 模型的查询( q u e r y ) , 2 m o f2 0 元模型的视图( v i e w ) , 3 m o f2 0 模型的变换( t r a n s f o r m a t i o n ) 。 1 。2 1 变换相关术语 q v tr f p 引出了一些专门的术语,下面主要介绍变换相关的术语。 变换是源模型创建目的模型的过程:变换会产生独立的和非独立的模型。 在第一种情况下,目的模型一旦创建完毕,那么目的模型就不再与源模型存在 联系。而在第二种情况下,变换则将源模型与目的模型联系在一起。 变换可以是单向的。在此情况下,附加信息被添加到源模型中。重复地应 用变换并不会重写被引入到目的模型中的信息。变换也可以是双向的。在此情 况下,每一个模型都在变换应用后被修改;变换必须能够在任意方向上传播。 在一些情况下,双方模型都发生改变。如果允许这种情况出现,那么可能会发 生冲突。在这种情况下,变换过程必须能够检测到这些冲突,但是可以不必自 动解决这些冲突。我们采用左手模型和右手模型来表现关系的对称性。双方模 型在变换中既充当源模型又充当目标模型。目标模型取代源模型的变换被称为 更新变换。 r f p 中需要一种变换的说明性的方法,而不是一种指令性的方法。为了区 别于单纯说明性和单纯指令性方法,我们还引入了混合性方法的概念。下面是 天津大学硕士学位论文 第一章绪论 三种方法的定义 4 】。 说明性语言:它是关系语言或函数语言的一个通用术语,与指令性语 言相对。指令性( 或者程序性) 语言显示地确定步骤序列来产生结果,而说明 性语言用函数或者推理规则术语来描述变量之间地关系,而后语言执行器( 解 释器或者编译器) 应用固定地算法于这些关系上来产生结果。最通常地说明性 语言的例子就是逻辑编程语言诸如p r o l o g 和函数语言h a s k e l l 。 指令性语言:任何显示确定计算机系统状态的编程语言被称为指令性 语言,不要与程序语言相混淆。 混合性语言:说明性语言和指令性语言的组合构成的变换定义。典型 的说明性方法用来选择应用的规则,指令性方法用来实现规则的具体内容,规 则并没有完全说明性的表达。 下面是用来定义变换的术语。 规则:规则是变换被用来定义的单元。一个规则负责变换从源模型的 一个特定的选择到对应的目标模型。变换是通过一系列的规则确定的。规则也 可以进行组合定义。一个规则可以包含说明和或实现。纯粹的说明性规则将只 包含个说明,纯粹的指令性规贝将只包含一个实现,混合的规则将会包含两 者。 说明:说明是左手模型和右手模型元素之间关系的一个规约。一个说 明可以包括充分的信息来完全描述单向的由左至右的变换、由右至左的变换、 或者双向变换。另外情况就是,说明仅仅包含左边和右边来决定何时一个关联 的实现被调用。注意在双向变换中,来自右边和左边的元素在说明被计算的过 程中是可用的。 实现:实现是如何从源模型元素创建模型元素的指令性规约。实现显 示地创建目标模型中的元素。实现通常具有定向性,比如它们由左向右操作或 是由右至左操作。双向实现也是可能的并允许的。 匹配:匹配发生在变换的模型元素的检测过程当中,此时检测来自左 手或者右手的元素是否符合规则说明所确定的约束。匹配将触发目标模型中元 素的创建或更新,被说明和或者匹配规则的实现部分所驱动。 增量变换:如果某个源模型的变换仅仅导致那些被匹配和修改过的元 素的规则的执行,那么这个变换被称为增量式变换。 1 2 2 变换场景 下面介绍几个常用的变换场景,变换语言应该基于这些场景来设计。 简单变换:一个简单的变换就是将单个源模型中的元素转变成目标模 天津大学硕士学位论文第一章绪论 型中的元素。比较常见的情况就是源模型和目标模型实质上具有相同的结构。 一个典型的例子就是从u m l 的类、属性和操作变换到j a v a 的类、变量和方法。 这类的变换属于直接的命令式实现,但应该遵从于说明性方法。 表达式:变换通常必需处理源模型和目标模型中的字符串表达式。在 表达式语言的元模型的存在的地方,表达式能够像元模型一样对待,并且不需 任何特殊支持。然而在许多情况下,并不需要完全解析这个表达式,些简单 的文本变换的支持就足够了。 命名:源模型和目标模型具有不同的命名限制时,或者不同的命名习 惯时,也会需要文本处理。比如,u m l 允许名称中有的许多字符在j a v a 中则 不允许。一种方法是使用一种标准方式来改变名称使它们合法化:另种方法 就是将j a v a 的命名限制也可以放置在u m l 模型上。 复杂变换:这种类型的变换构造的目标模型并不是源模型中任何单一 元素的直接对应。变换有可能是基于复杂的算法和推断实现的。 1 2 3m o f2 0q v t 需求概要 q v t 是m d a 成功的关键。下面列举q v t 主要的需求: 提议需要精确和完整,但也需要简化,并且最好重用现存的标准。 提议需要兼容,或者改变和扩展现存的o m g 规范。 提议应该能够独立地实现。 m d a 的技术远景描述了模型之间的关系,而且关系必须处在它们在m o f 中的源模型中所处的同一个抽象级别。假使所有的模型都在m o f 中表示,那 么就可能定义一个适用于所有m o f 模型的变换语言,并且需要在提议中阐述。 映射到非o m g 语言应该是可以通过定义对应的语言的元模型获得的。变换被 定义为映射,并且唯一的变换语言扮演了类似于x s l t 对于x m l 所表现的角 色。查询需要过滤和选择模型中的元素类似于x p a t h 从x m l 模型中选择元 素。视图则是从其他模型衍生出来的模型。虽然r f p 文档最初要求视图建立在 元模型上,但是r f p 文档的后面部分则是讨论如何由具体的模型视图来揭示模 型系统的信息而不是元模型。 除以上主要的需求之外,还有特殊的需求: 提议应该定义一个能够用m o f 说明性的表示的变换定义的语言。语言 必须充分地表示所有自动从源模型创建目标模型需要的数据。 变换应该支持发生在一个模型到另一个模型之间的增量变换的传递。 尽管模型的单元素集合是主要的问题,但多个模型之间的变换问题也是需要解 决的。 天津大学硕士学位论文 第一章绪论 1 2 4 现有方案比较 o m g 官方网站上己经列出了8 种推荐方案: a d a p t i v el t d 、d s t c ( d i s t r i b u t e ds y s t e m st e c h n o l o g yc e n u e ) 1 b m 、s u n m i e r o s y s t e m s ( s u n ) 、a l c a t e l s o f t e a m t n i v a l i o s y s t h a l e s 、k e n n e d yc a r t e r 、t c s 、 c o d a g e nt e c h n o l o g i e sc o r p o r a t i o n 、i n t e r a c t i v eo b j e c t ss o f t w a r eg m b h p r o j e c t t e c h n o l o g y 。 下面对以上8 种方案进行简要地对比分析: 1 自包含:大部分文档都不是真正意义上的自包含。特别是k c 和d s t c 引用了其他语言。虽然其他提议者给出了它们语言的元模型,但是通常疏忽了 语义的细节描述。所举的例子要么是高度抽象化的,要么是现实不存在的。 2 伸缩性:我们通过变换模型的大小和变换的复杂度来衡量伸缩性。假 设一个统一的规则基础的说明性的方案( d s t c 、1 0 ) 的伸缩性比引入一个结 构的变换基础的方案( t c s ) 更加糟糕。k c 的方案使用u m l 行为语义产生了 最好的表达性的解决方案,因为它允许转换到任意的编程语言。i o 、s u n 和 t c s 也提供了类似的代码扩展。相比之下,t h a l e s 、c o d a 和d s t c 推荐的 说明性、可判定的语言则缺乏可表达性。 3 简明性:个变换的定义是否容易理解和书写也依赖于个性参数。假 如一个程序员来书写变换,那么任何使用行为语义的类似编程语言的方案则应 该相当简单。说明性的方案( i o ) 已经在维护和实现大范围的规则集合时出现 了问题,但是对于单一规则不会出现类似的问题。单纯地使用逻辑语言( d s t c ) 对于没有使用过形式方法的人们则是比较困难的。 4 双向映射:在变换定义方面和变换执行方面能够提供双向性。变换的 定义通常给出了一套规则,比如单一的规则是一个可定义和可执行的变换的基 本单元。图1 2 将方案按照两个方面分类:变换规则是命令式、混合式还是说 明式;变换是单向性、双向性还是单双混合性。 图1 - 2 按照变换语言的性质和执行方向的方案分类 :一 天津大学硕士学位论文 第一章绪论 对于是源模型还是目标模型驱动变换,一些提议者主张单边驱动变换,但 是其他提议者仍然坚持驱动方应该随意。对于源模型和目标模型集合的容量的 问题。存在由多个源模型产生一个目标模型、由一个源模型产生多个不同的目 标模型和由多个源模型产生多个目标模型的不同观点。图1 3 给出了我们分类 结果( a d a p t e 和k c 没有对此问题进行说明) 。 1 3 论文工作 斟刖虻 i n 乜嵋k 棚n c , a m q 图卜3按照变换的驱动和输入输出的个数的方案分类 论文的第一部分介绍了课题的相关背景。随后简介了o m g 提出的m o f 2 0q v t 的建议需求。最后列举了目前出现的方案,并根据不同的标准进行比 较,指出了各个方案的优缺点。论文的第二部分则依据o m g m o f2 0 q v t 的 要求提出了一种改进的模型变换方案,并对其框架结构作了概述。论文的第三 部分则是对改进方案的变换定义的核心变换部分进行了详细的介绍,包括上层 构造、下层构造以及两层构造之间的转换。并在随后的章节给出了一个u m l 模型和x m l 模型之间的变换的例子,以此来验证我们方案的可行性。论文的 最后部分则是对模型变换技术的目前技术状况进行了总结和展望。 天津大学硕士学位论文第二章改进方案的框架 第二章改进方案的框架 这一章将要简要介绍关于论文所提出的改进的模型变换方案的几个关键 的技术概念。更加详细的技术细节将在论文的第三章介绍。论文主要是针对 o m g 提出的m o f 2 0q v t 的变换部分的要求而提出了一个改进的全面的模型 变换解决方案。为什么没有提出针对查询和视图的部分要求的解决方案呢,这 主要是因为提出一个实际可行并且技术上相对完善的模型变换定义的方案对 于m d a 技术的实现来说是关键因素。 2 1 变换 f 曲百先介绍与变换关系最为密切的技术概忿,其中包括几个受抉图不。 图2 - 1 给出了在变换定义的语法中使用的比较多的几个元素。请注意虽然图中 所示的变换、关系和映射只是发生在两个域之间的,但是我们提出的变换定义 是允许它们存在在多个域之f n q 的,只是为了在图中表示的简单。 n 一e 崦( e n d e n 如q 一e 图2 】具体语法 其中第一个图示表示域a 和域b 之间的变换;第二个图示表示域a 和域b 之 间的关系;第三个图示表示域a 到域b 的映射;同理,最后一个图示表示域b 到 域a 的映射。映射方向是通过图示的箭头方向来表示的。 2 2 关系和映射 改进的变换定义方案使变换具有更多的灵活性,首先它允许在系统设计时 使用多种不同的变换类型,再有允许变换在设计系统的过程中改变其自身的类 8 天津大学硕士学位论文第二章改进方案的框架 型。这样的灵活性是通过定义两个变换的子类型来实现的。这两个变换的子类 型分别是关系和映射。 下面阐述了关系与映射的区别: 关系是多方向的变换的规约。关系是不能够被执行的,因为它不能够 创建或者改变一个模型,它只是起到说明性的作用:但是可以使用关系来检查 模型之间一致性的问题。举一个比较典型的例子就是,关系被用在系统开发的 规范设计阶段,或者被用在检验映射的合法性上。 映射是变换规约的实现。与关系不同的是,映射是单一方向的并且能 够执行并且具有返回值。映射能够精炼任意数量的关系,在此情况下,要求映 射必须与它所要精炼的关系保持一致性。 m a p p i n g 图2 - 2 映射精炼关系 图2 2 显示了定向的映射是如何精炼关系的。图中所示的关系r 连接了两个 域。映射m 精炼了关系r ,因为映射m 是具有方向性的,根据前面介绍的语法 规定,图示表示映射m 将右侧域中的模型元素变换到了左侧域中。 图2 - 3 变换、关系和映射的联系 图2 3 显示了关系和映射与变换之间的继承关系。由于变换是关系和映射的 父类型,所以当谈到变换时,所指的变换可能是关系也可能是映射,因为此时 的情况并不需要明确地指出到底是哪一个变换类型。但是当单单谈到映射时, 就是指明是映射而且仅仅是映射,同样对于关系也是如此。 正如关系和映射之间的关系一样,变换规约和规约实现之间的区别和分离 孽 i | 甲占 天津大学硕士学位论文 第二章改进方案的框架 的特点赋予了建模者诸多的益处。包括如下所示的几个方面: 在系统开发初期,如果所需的实施细节还没有全部明确,那么先可以 使用关系来讨论变换。这样可以使系统的设计工作不至于停滞不前。 由于变换的规约和实现是分离的,所以可以使用不同的编程语言来实 现精炼同一个关系的不同的映射。 可以通过一个已经存在的映射来创建关系,以便于提取出当初系统设 计的细节,这样可以使人更加容易理解当初的设计方法。 2 3 规约和实现语言 在说明关系和映射的区别的时候,我们并没有指明具体的实现语言。这样 做的好处是在开始的时候以抽象的方式来思考规约和实现的概念,而不用关心 如何确定的实现语言,可以避免陷入比较复杂的思考状态。另外一点就是:虽 然方案提出了一种表达关系和映射的标准语言,但是同样允许先期存在的以任 意方式书写或者已经集成模型中的变换。 2 4 关系和映射语言 改进方案推荐了一种标准语言来表达关系和映射,称作模型变换语言 ( m o d e lt r a n s f o r m a t i o nl a n g u a g e ,m t l ) 。m t l 使用模式匹配原则,这样可以 表达出更加强大和复杂的变换。为关系和映射提供一种单一的语言的最大好处 就是降低了使用变换的难度。m t l 有图形和文本两种表达形式,使用图形方式 比较方便,直观而清楚;而使用文本方式则更加准确。 2 4 1 模式匹配和域 为了使变换更加容易,我们定义了一种功能强大的模式匹配语言,并且在 m t l 中使用。模式匹配方法在变换应用中是已经被证明的方法,l l 女i i x s l t 【1 1 和基于文本的正则表达式语言p e r l 。模式匹配原则的核心思想就是通过简洁的 表达式来表述对于输入数据类型的复杂的约束;而后,与这个模式相匹配的数 据就会被提取出来并返回给提取者。m t l 允许模型碎片与元模型进行匹配并且 在变换中使用。 模式语言的特点就体现在容易的表达性和精炼的可读性两方面的折衷。正 如大多数模式语言一样,方案所推荐的模式语言也不可能始终成为表达特定变 天津大学硕士学位论文第二章改进方案的框架 换的全面的最好的方法。在方案所提出的标准的关系和映射语言中的出现的域 这个概念是由模式和条件组成的。使用条件可以表达比较复杂的表达式,这样 一来就可以增大模式的应用范围。此外,单独的条件能够以自如地将所有的域 联系起来。 关系通常是以下面的文字形式表达的: r e l a t i o n r d o m a i n p a t t e r n lw h e nc o n d i t i o n l ) d o m a i n p a t t e r n ww h e nc o n d i t i o n n w h e n c o n d i t i o n ) ) 最后的条件是一个全局条件,它的作用范围跨越了所有的域。一个关系伴 随着许多变量,变量的数目对应着关系所包含的域的数目。每一个变量是一个 元素,或者它是一个选择。选择就是一个数据集合,它包含零个或者多个对象, 每一个对象都会被检测是否它们中一些候选者的组合能够满足这个变换的要 求一选择要么以无序形式或者按优先次序排列形式出现的。当所有的域被满足 的时候,我们才说这个关系被满足了。这比最初它所呈现的更为复杂,起初只 是存在跨越多个域的约束。这样就出现新的问题,任意个对象可以满足一个 域,但是可能引起另外一个域的匹配失败。而m t l 的语法则确保了所有的域都 能够被满足,这也就是意味着运行时引擎必须遍历所有的组合以确保关系被满 足。 如下所示了一个特殊的包含模式和条件的例子: r e l a t i o ni n e r e a s i n g w i s d o m d o m a i n 口e r s o n ) n a m e = n ,a g e2a ,w i s d o m 2w 1 w h e na + 1 1 9 ) d o m a i n ( p e r s o n ) n a m e = n ,a g e = a + 1 ,w i s d o m = w 2 ) w h e n w 2 w 1 ) ) 这个例子检查了年龄增长是否伴随着智慧的增加,当然情况并不是都是如 此,比如除了在十几岁时。( p e r s o n ) 【n a m e = n ,a g e = a ,w i s d o m = w 1 w h e na 1 8 是一个对象模式的例子,它采用了如下的通用的形式: ( c l a s s ,5 e 矽【l a b e l l = e x p r l ,l a b e l = e x p r n 】 类( c l a s s ) 是对象必须所属的,自身( s e l f ) 是用来引用这个对象的一个 变量,而对象模式包含了零个或者多个这样的条目。对象模式必须匹配所有这 个类的实例对象,同样这些对象的各项也必须匹配对象模式的对应项注意 天津大学硕士学位论文第二章改进方案的框架 对象模式可以指定类定义的所有项的一个子集,虽然类不能够被定义得更多一 些。模式语言包含其他许多结构,比如集合和序列模式,并且模式可以嵌套模 式,这样便带来了极大的灵活性。 i - - 一一- :! e 囱 图2 - 4 l n c r e a s i n g w i s d o m 关系的图示 请注意,在i n c r e a s i n g w i s d o m 关系中变量n 和a 均同时出现在两个域中:我 们推荐的语法规定了,除非它们被指定为局部变量,否则这些具有同一个变量 名的变量在同一个关系的不同域中具有相同的值。 图2 - 4 显示t i n c r e a s i n g w i s d o m 关系的图形表示形式。注意这既不是一个类 图也不是一个对象图,这是一个变换图,它能够显而易见的表现出这两者之间 存在着的某种联系。 2 4 2 映射和关系的区别 标准的关系和映射语言享有相同的语法和语义。但是由于这样一个事实它 们是不同的概念,所以在它们之间还存在着区别。最显著的区别就是关系仅仅 是由许多域和一个全面的约束组成的,而映射则还有一个行为体。 以下所示的就是映射i n c r e a s i n g w i s d o m m a p p i n g 是如何精炼关系 i n c r e a s i n g w i s d o m 。 m a p p i n gi n c r e a s i n g w i s d o m m a p p i n gr e f i n e sl n c r e a s i n g w i s d o m d o m a i n ( p e r s o n ) 【n a r f l e = n ,a g e 2a ,w i s d o m 2 w l 】w h e n a + 1 1 9 ) b o d y ( p = i l e wp e r s o n ( ) p n a l i l e 2 n p a g e = a + 1 p w i s d o m = w l + 5 ) 天津大学硕士学位论文 第二章改进方案的框架 请注意i n c r e a s i n g w i s d o m m a p p i n g 的两个域中的一个域是如何保留在映射 中的:第二个域被映射体显示地替代了。请注意这个相当冗长的 i n c r e a s i n g w i s d :l m a p p i n g 体能够使用e r e a t e u # a t eo b j e c t 符号来书写。它在 语法上与上例中所使用的模式是等价的: b o d y n e w ( p e r s o n ) 碴n a l t i e = n ,p a g e = a + l ,p w i s d o m 2 w l + 5 】 2 5 集成先期存在的变换 正如上所述的,我们推荐了个关系和映射的标准语言;然而,我们也提 出了一个集成在模型中使用非标准方法描写的变换的方法。这使得遗留系统整 合到新模型中成为可能,它同样允许新的变化,但是出于某些原因没有使用标 准语言书写的变换被整合。 2 6 变换重用 实现变换重用的两个主要方法是通过规约机制和通过变换组合。变换规约 与其他模型元素的规约工作方式是相同的。然而变换组合则是有很大区别的。 2 6 1 变换组合 我们提出了不同的变换组合的运算符,这样可以实现通过组合小型简单的 变换模型来构建庞大复杂的变换模型。组合运算符分为一元和二元运算符,包 括a n d 、n o t 并l l o r :运算符。举一个简单的例子,a n d 组合关系需要得到所给的构成 元素的支持,也必须需要构成的变换支持。组合关系通常对它的成分关系施加 限制。 变换组合对回溯也是有影响的。如果组合的部分失败了,那么我们的语法 要求产生回溯。只是因为在变换内部的不同的点,根据路径的前进方向来决定 选择,但是如果任何选择都可能导致后续的变换失败。如果这种情况发生,那 么变换就要回溯到选择点,恢复系统到先前的状态,然后选择一个不同于先前 选择的值,而后继续执行变换。回溯可以发生在任意级,这是对于在尽量减小 用户干预的情况下来自动地选择一个成功的路径一个相当强大的技术。 组合对于关系来说相当有用,因为它们具有无副作用的性质,回溯能够在 无任何困难的情况下在变换内部发生在任何的层次。而映射的回溯则相当困 难,因为此时在某些选择点映射体的副作用将会显现出来,它将会产生一个选 天津大学硕士学位论文第二章改进方案的框架 择点,而在这个选择点上回溯不能够再发生了。然而,尽管回溺在映射中出现 了种种的限制,但是它
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论