(计算机软件与理论专业论文)mda中pim到psmsql模型转换研究与实现.pdf_第1页
(计算机软件与理论专业论文)mda中pim到psmsql模型转换研究与实现.pdf_第2页
(计算机软件与理论专业论文)mda中pim到psmsql模型转换研究与实现.pdf_第3页
(计算机软件与理论专业论文)mda中pim到psmsql模型转换研究与实现.pdf_第4页
(计算机软件与理论专业论文)mda中pim到psmsql模型转换研究与实现.pdf_第5页
已阅读5页,还剩76页未读 继续免费阅读

(计算机软件与理论专业论文)mda中pim到psmsql模型转换研究与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

m d a 中p 1 m 到p s m s q l 模型转换研究与实现 论文题目: 专业: 硕( 博) 士生: 指导教师: m d a 中p i m 到p 跏s q l 模型转换研究与实现 软件与理论 刘海伟 李师贤教授 摘要 模型驱动架构( 姗a ) 是对象管理组织( o m g ) 于2 0 0 1 年提出的一种软件开发方法 学,其目标是实现软件的工厂化生产。模型是m d a 中重要组成部分,从平台无关模 型( p i m ) 到平台相关模型( p s m ) 的模型转换技术是实现m d a 的关键。 本文探讨了m d a 中p i m 到基于s q l 的p s m 的模型转换技术。定义了u m l 类到s q l 表的模型转换关系,给出了u 肌类源元模型、s q l 目标元模型以及它们之间的转换 规则,包括类名到表名的映射、类的属性到列的映射、生成主键的映射和生成外键 的映射等。在设计过程中首先将建立的元模型以x m ! 格式存储,然后根据转换规则 进行模型转换。使用a t l 模型转换语言中的声明式模型转换方式实现了其模型转换 代码。给出了一个模型验证工具,通过调用s a x 引擎的解析器来读取生成的目标模 型元素,通过捕捉异常来验证生成的目标模型是否符合模式。最后给出了工具的应 用实例,通过一个具体的例子演示了u m l 类到s q l 表的模型转换过程,并利用模型 验证工具验证生成的p s m 模型是否符合模式的规定等。 关键词:模型驱动架构平台无关模型平台相关模型模型转换a t l 中山大学硕士学位论文 t i t i e : m a j o r : n a n 圮: r e s e a r c ha n d i m p l e m e n t a t i o n o f p i m t o p s m s q l m o d e l t r a a s f o r m a t i o n i n m d a c o m p u t e rs c i e n c e l i ui - l a i w e i p r o f e s s o r l is h i m a b s t r a c t m o d e ld r i v e na r c h i t e c t u r ei san e ws o f t w a r ed e v e l o p m e n tm e t h o d o l o g yp r o p o s e d b yo b j e c tm a n a g e m e n tg r o u pi n2 0 0 1 ,w h o s eg o a li st or e a l i z ef a c t o r y - p r o d u c t i o no f s o f t w a r e m o d e li sa l li m p o r tc o m p o n e n ti nm d a t h et r a n s f o r m a t i o nt e c h n o l o g yf r o m p i mt op s mi st h ek e yt ot h ei m p l e m e n t a t i o no f m d a t h i sd i s s e r t a t i o nd i s c u s s e st h et r a n s f o r m a t i o nt e c h n o l o g yf r o mp i mt op s mb a s eo n s q l i td e f m e dt h em o d e lt r a n s f o r m a t i o nr e l a t i o nf r o mu m lc l a s st os q lt a b l e ; p r e s e n t e dt h es o u l c em e t a m o d e lo fu m lc l a s s ,t 筮g e tm e l m n o d e lo fs q lt a b l ea n d b e t w e e nt h et r a n s f o r m a t i o nm l e i n c l u d i n gc l a s sl l a m et ot a b l el l a l n em a p p i n g , c l a s s a t t r i b u t e st oc o l u m n sm a p p i n g , g e n e r a t i o no fp r i m a r yk e ym a p p h a ga n df o r e i g nk e y m a p p i n g i nt h ed e s i g np r o c e s s , f i r s tt h em e t m o d e ie s t a b l i s h e dw i l l b es t o r e di nx m i f o r m a t ,a n dt h e nt r a n s f o r m e da c c o r d i n gt ot h ew a n s f o r m a t i o nr u l e s i t st r a n s f o r m a t i o n c o d ei s i m p l e m e n t e du s i n gt h ed e c l a r a t i v es t y l ei na t lt n m s f o r m a t i o nl a n g u a g e p r o v i d e dam o d e lv e r i f i c a t i o nt o o lw h i c hi n v o k e st h ep a r s e ro fs a x e n g i n et or e a dt h e t a r g e tm o d e le l e m e n t s ,a n dv a l i d a t e st h ec o n f o r m i t yb e t w e e nt h ec r e a t e dt a r g e tm o d e la n d t h ep a t t e r nb yc a t c h i n gt h e 既c e p d s f i n a l l y , i tp r o v i d e d 趾e x a m p l e 勰t h ea p p l i c a t i o n o ft h et 0 0 1 w i t hac o n c r e t ee x a m p l e , i tn o to n l yd e m o n s t r a t e dt h et r a n s f o r m a t i o nf r o m u m lc l a s sm o d e lt os q lt a b l em o d e l ,b u ta l s ov a l i d a t e dt h ep s mm o d e lg e n e r a t e db y m e a n so f t h ev e r i f i c a t i o nt o o l so nw h e t h e ri tc o n f o r m st ot h eg i v e np a t t e r no rn o t k e y w o r d s :m d ap i mp s mm o d a lt r a n s f o r m a t i o n a t l m d a 中p i m 到p s m s q l 模型转换研究与实现 第一章绪论 1 1问题提出 对象管理组织0 m g 于2 0 0 1 年提出了1 1 5 ) a 软件开发方法。i v l l ) a 是m o d e ld r i v e n a r c h i t e c t u r e ( 模型驱动架构) 的简称,它定义了基于模型的软件开发方式,以及 自动将模型映射到代码自动实现的过程。提供了一种使用模型来指导系统的理 解、设计、构造、开发、操作、维护和修改的方法m d a 主要解决的是改变以代 码为中心的软件开发方法,解决不同平台,不同技术路线之间的集成和互操作问 题,以便适应将来出现的新技术和新平台的各种需要【l 】。 m d a 2 d t :l 定义了平台无关模型p i m ( p l a t f o mi n d e p e n d e n tm o d e l ) 和平台相关 模型p s m ( p l a t f o r ms p e c i f i cm o d e l ) ,其中p i m 描述了与业务逻辑相关的元素和 相互关系,与具体的实现细节无关,p s m 描述了具体的实现细节,是与平台相关 的模型,可以将p i n 模型映射到j a v a 平台、n e t 平台等。m d a 支持以下类型的 模型转换【3 】: 1 p i n 到p i n 的模型转换,该转换被用于p i m 的精化和改进。 2 p i n 到p s m 的模型转换,该转换可以把p i w 转换到某个具体的技术平台 之上。 3 p s m 到p s m 的模型转换,该转换被用于p s m 的精化和改进。 4 p s m 到p i n 的模型转换,该转换用于从已有的实现中去掉平台相关的技 术细节,从而得到相应的p i n ,它是p i n 到p s m 的逆变换。 在w d a 中,p i m 到p s m 的模型转换是最重要的部分,w d a 的核心思想是分离业 务功能分析与设计和具体的实现技术之间耦合的关系,从而将技术与平台变化对 系统的影响降低到最小程度。w d a 将p i n 抽象出来,针对不同实现技术与平台制 定多个映射规则,然后通过映射规则及辅助工具将p i n 转换成p s m ,再将p s m 不 断求精到最终形成代码。在这个过程中只有圆满地解决了p i n 到p s m 模型转换的 问题,才能够更加便利地实现代码的自动生成,才能够解决不同平台,不同技术 路线的集成和互操作问题,才能适应不断涌现出的各种新技术和新平台,因此 p i m 到p s m 的模型转换成为一个重要研究课题。 中山大学硕t 学位论文 1 2 研究现状综述 自从m d a 概念提出以后,很多大公司加入了支撑m d a 开发工具的研究队伍, 国外已经有很多支撑m d a 的工具投入商业应用,国内的研究则相对比较缓慢。随 着对象管理组织0 m g 的各项标准的不断完善,以后还会有更多更好的m d a 支撑工 具的出现。下面介绍一些国内外比较常用的m d a 开发工具 1 2 1 国外研究现状 o p t i m a l j o p t i m a l j 4 1 是c o m p u w a r e 公司开发的彻a 支撑工具,支持u m l 建模,模型映 射和最终代码生成。开发o p t i m a l j 应用程序需要用到以下模型: 1 ) 领域模型( d o m a i nm o d e l ) 通过它可以建立平台无关的p i m 模型,领域模 型由领域类模型和领域服务模型组成,其中领域类模型是一些图表组成的 类图,领域服务模型用于捕获行为信息。 2 ) 应用模型( a p p l i c a t i o n m o d e l ) 描述了底层的设计模型,但它又独立于 代码模型,因此它是p s m 模型。应用模型包括d b m s 模型,e j b 模型,w e b 模型。 3 ) 集成模型( i n t e g r a t i o n m o d e l ) 为外部程序提供了接口,它包含一些连 接器,通过这些连接器就可以导入和定义c i c s c o b o l 程序,c o r b a i d l s ,w s d l 等。 4 ) 代码模型( c o d em o d e l ) 根据应用模型描述产生了可以执行的代码。 o p t i m a l j 包含一个基于源代码开发的集成开发环境,软件开发人员可以在 0 p t i m l j 中定制代码。从领域模型产生应用模型,o p t i m a l j 自动用实现模式转 换应用模型到实际代码。商业逻辑( e j b ) 、数据库( d b m s ) 和展示( w e b ) 模型的代 码可以分别生成或一次全部产生。当这些模型创建或更新时,它们继承了域模型 的所有相关定义。一旦所有的应用模型存在,o p t i m a l j 会产生实际的代码完成 各自模型的组件。自动产生的过程确保了和领域模型的一致性,节省了大量的时 间并减少了潜在的编程带来的错误。w e b 模型依赖商业逻辑模型,而商业逻辑模 m d a 中p i m 到p s m s q l 模型转换研究与实现 型依赖数据库模型。o p t i m a l j 维护了模型之间的相互依赖性。o p t i m a l j 用它的 动态同步工具确保模型和代码一直保持同步。o p t i m a l j 生成的代码由j a v a ,j s p 和g t l 文件、实体b e a n s 、会话b e a n s 和s o l 脚本组成【4 1 。 o r i t i m a l j 产生的全部代码放置在保护块( g u a r d e db l o c k s ) 中。产生的代码是 被保护的,开发人员不能修改,但是o r ,t i n m l j 提供了自由块使开发人员能够增加 对生成代码的扩展内容。当应用系统被重新生成时,o r ,t i m a l j 保留在自由块中 的定制代码。同时0 p t i m a l j 扩展了对b o r l a n dj b u i l d e r 、i b mw e b s h p e r e a p p l i c a t i ns t u d i od e v e l o p e r ( w s a d ) 和s u ns u n o n es t u d i o 的支持。此扩展支 持帮助开发人员区分由o r i t i m a l j 自动生成代码的保护块和开发对生成代码的增 加子集扩展的自由块。 o r ) t i m a l j 基于m d a j 2 e e 的模型驱动开发和集成环境为商业建模和软件开发 间的鸿沟搭建了桥梁,通过构建正确的商业模型驱动应用程序开发。o p t i m a l j 在不同的抽象层次上提供了实质潜在的重用,它使得为了商业的需要使用变化而 重新建模系统更为容易。通过分离商业模型和架构模型,分离架构模型和实现语 言,o r ,t i m a l j 也提升了系统性能的质量、稳定性和可维护性。 a r c s t y l e r a r c s t y l e r 5 1 是德国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 公司开发的m d a 支撑软件,它遵循o m g 的m d a 规范,纯j a v a 开发,跨平台。支持j 2 e e 和n e t 平台,支持桥接器的动态加载。 a r c s t y l e r 支持将一种模型映射到其它模型、源代码、脚本。模型转换规则 被捆绑在一个被称为m d a - c a r t r i d g e s 中,它是a r c s t y l e r 的核心特性之一。 m c s t y l e r 支持定义和管理功能强大的模型转换规则,能够为多种平台技术定义 和维护m d a - c a r t r i d g e s ,具备完备的开发、部署和测试功能。a r c s t y l e r 通过使 用j m i ( j a v am e t a d a t ai n t e r f a c e ) 使得存储模型的仓库能够被m i ) a - c a r t r i d g e s 访问并转换为代码嘲。 a r c s t y l e r 选择了通过标注的方式来体现p s m 的思想。a r c s t y l e r 的p i m 到 p s m 的转换技术就是使用样式和标记( m a r k s ) 。样式可以用来定义模型转换,这 中山人学硕t 学位论文 种转换包含了样式和一些标记,它们对应于样式中的元素。在进行转换时,先标 记p i n ,然后将p i n 中标记的元素根据样式来生成p s m 。在具体的技术实现上, 客户端采用a c c e s s o r 框架,对于相同的的业务逻辑模型可以采用不同的桥接器 技术实现到不同平台的映射。a c c e s s o r 框架的核心思想是建立a c c e s s o r 类和 r e p r e s e n t e r 类以此将业务逻辑和表示层分离开。a c c e s s o r 类实现了业务逻 辑,它主要用来描述网络访问,它与数据层进行通信,可以控制r e p r e s e n t e r 类 的状态变化。r e p r e s e n t e r 类描述了客户端的表示逻辑,可以显示网页的内容以 及类的属性关联等【们。 标记是轻量级的注解,可以包含平台相关的一些信息并被输入到 w d a - c a r t r i d g e s 中去。由于标记可以很容易地被添加到模型中,也能很容易地 从模型中删除,因此他们不会对模型造成污染。同一模型的不同标记的集合可以 同时存在,对应不同的平台。当要映射到多个平台的时候,不需要更改p i m 模型, 只需要针对这个平台编制一个标记集合就可以了。文献 6 3 给出了一个用 a r c s t y l e r 开发出来的w e b 应用程序的实例。 a n d r o 如a a n 打o m d a f 刀是开源w i ) a 框架它可以接受各种由c a s e 工具生成的并以x m i 格式 保存的u m l 模型,它可以结合各种a n d r o m d a 插件生成各种自定义组件,使用模 板来生成输出代码 a n d r o m d a 包括5 个核心部件,分别为【_ 7 l : t e m p l a t ee n g i n e s 它是模型生成的主要组件,可选用的模板技术有 v e l o c i t y 、x d o c l e t 和f r e e m a r k e r 。t e m p l a t ee n g i n e s 可以将以上技术进行 封装,根据m e t a f a c a d e 对象产生的规则最终生成特定于某种技术平台的模 型制品。 m e t a f a c a d e 提供一个高层的m e t a d a t a 访问a p i ,m e t a f a c a d e 是c a r t r i d g e 中的重要组件,主要通过它来完成模型转换的工作。它采用f a c a d e 设计模 式设计的,每一个w e t a f a c a d e 对象负责一类模型元素的访问。 r e p o s i t o r y 支持从x m i 文件中读取m o fm o d e l ,支持其他格式的扩展, r e s p o s i t o r y 是负责存储p i w 的主要组件,其内核是w d r 。r e s p o s i t o r y 不 仅用于存储p i m 信息,而且还负责对m d r 提供的访问p i n 的操作进行代理。 4 m d a 中p i m 到p s m s q l 模型转换研究与实现 c a r t r i d g ea n d r o m d a 中负责模型转换的组件是c a r t r i d g e 该组件包括了用 于模型转换的转换规则信息和对应的p s m 所属平台使用的u 札扩展机制信息 等,每个c a r t r i d g e 组件对应于一种技术框架,如s p r i n g ,h i b e r n a t e ,s t r u t s 等。c a r t r i d g e 是可以定制使用的,用户可以在其配置文件中对其转换过程 进行定制。 t r a n s l a t i o n - l i b r a r i e s 主要负责p i m 模型中有关约束内容的转换工作,可 以运用o c l 查询语句将p i m 中的一些平台无关内容转换成为平台相关的内 容。 a n d r o j d i ) a 的处理流程分为以下几步: 1 ) 建立所需要的p i m 模型,该模型的信息被存储在x m i 文件中,然后a n d r o m o a 读取x m i 中的信息并以d o m 树的形式表现出来。 2 ) a n d r o m d a 对实例化后的p i m 信息进行解析,如果发现某些p i m 信息使用的 u 札扩展元素的已经注册过了,那么a n d r o m d a 会自动生成对应的m e t a f a c a d e 对象来协助p i m 的访问。 3 ) 最后通过使用m e t a f a c a d e 对象将平台无关模型p i m 生成与之对应的平台相 关模型p s 地并使用模板引擎将p s m 中的内容自动生成代码。 目前a n d r o m d a 的最新版本为a n d r o m d a3 2 ,它支持u 扎2 0 规范,集成了 瓶a v e n2 ,支持由代码生成p s 磕模型的逆向变换,拥有功能强大的框架生成器等 1 2 2 国内研究现状 国内目前在模型转换方面做的工作比较少,要落后于国外的研究。国内比较 出名的m d a 支撑工具主要有t r u f u nk a n t 和金蝶b o s 。由于金蝶b o s 是商业项目, 没有透漏具体的实现细节,下面对开源的t r u n f u nk a n t 作简要的介绍。 t r u f u nk a n t 8 1 是楚凡科技公司发布的一种m d a1 - 具。t r u f u nk a n t 基于p l a t o 开放式平台,通过将各种主流i d e 平台集成,实现u m l 工具和源码的同步。同时 t r u f u nk a n t 对o c l2 0 提供支持,使得用户可以对软件系统精确建模,它提供 0 c l 的编辑器和解析器。 t r u f a nk a n t 的模型转换采用u m lp r o f i l e 扩展方式,通过添加一个标记来 定义每个操作的操作体。在t r u f u nk a n t 的j a v a 操作规格定义对话框,提供了 对此标记的编辑框。如果用户定义了这个标记,那么在生成代码时,就会将此代 5 中山大学硕t 学位论文 码体填充到生产的源码中。提供了通用m d a 代码生成框架。该框架基于类j s p 脚 本,可以使开发人员轻松上手。同时也提供了大量的a p t ,可以非常灵活使用。 当模型改变时,代码会立刻同步改变;而代码被用户修改后,模型也同样会使之 同步改变,实现了代码到p s m 的逆向变换【8 】。 此外k c 0 m 【9 1 也是国内比较早提出支持m d a 的企业之一,他们的”k c 0 m 商业 工程”是一个基于m d a 的、采用“业务模型驱动的全自动化软件工厂”开发模式 的企业应用平台。“k c o m 商业工程“采用标准的x m l 作为数据交换格式,支持标 准的数据模型定义,支持标准的u i i l 图设计,以及支持霄f 毗定义的标准的工作 流模型和标准的c o m 组件模型等。 1 2 3 比较分析 通过对上述模型转换工具的分析,我们可以看出,在m d a 模型存储方面主要 是以煳i 的格式,因为o m g 定义了】( m i 为数据交换的标准,只要模型满足) ( m i 格 式就可以实现方便的读取等操作,并且各个m d a 工具之间也可以实现信息共享。 对于模型转换技术方面,各个m d a 支撑工具不尽相同,有的使用模板技术,有的 使用标记方法,也可以调用相关的a p t 来实现。不过上述模型转换工具也存在这 一些问题,比如在模型转换过程中缺少一些模型完整性检验,模型转换还不能达 到可以直接生成可执行代码的精确程度等随着m d a 相关标准的不断完善,相信 这会在以后的m d a 开发工具中不断的改进和完善。 1 3研究意义 在传统的软件开发过程中,模型到模型的变换和模型到代码的变换主要是靠 手工完成的。而在m d a 软件开发过程中这一切都是靠模型转换工具自动完成的, 首先抽象出p i m 模型,然后将p i m 模型转换到特定的技术平台p s m 上去,最后将 p s m 变换成为代码。m d a 把系统的功能定义和功能实现分离开来对待,用p i m 来 定义系统的功能部分,用p s m 定义系统的具体实现部分。在目前代码生成技术相 对成熟的条件下,从p s m 到代码的转换比较容易实现。为了使软件开发人员从琐 碎的代码编写中摆脱出来,使开发出来的软件能够适应各种新技术和新平台,我 们需要将更多的精力投入到p i m 到p s m 模型转换的研究中去。 6 m d a 中p 1 m 到p s m s q l 模型转换研究弓实现 本文的研究旨在通过通过使用a t l 模型转换语言定义了u m l 类到s q l 表的模 型转换,方便的实现了u m l 类的属性、关联等信息到s q l 表的存储。同时给出了 一个有效的模型检验工具,以检验生成的模型是否符合模式,保证了生成模型的 完整性。希望通过此研究能够在一定程度上促进m d a 技术的发展。 1 4 本文所做主要工作 本论文的主要工作包括以下几个部分: 1 ) 介绍了m d a 相关基础知识 包括m d a 体系结构、m d a 相关的标准和m d a 开发生命周期等。 2 ) 介绍了模型转换的相关技术 包括模型转换方法定义、转换规则的分类以及目前主要用到的模型转换方 法,详细介绍了a t l 模型转换的原理、模块结构、数据类型、转换规则等, 简要介绍了模型验证相关内容。 3 ) 设计实现了基于a t l 模型转换语言的u 札类到s q l 表模型转换方法 本部分是论文设计的重点,本部分可以分为两大部分:模型转换部分和模 型验证部分。其中模型转换部分详细介绍了元模型的建立、目标模型的建 立、转换规则的制定以及转换代码实现等。模型验证部分主要给出了模型 验证工具的设计及代码实现等。 4 ) 给出了转换实例 通过一个具体的例子演示了u m l 类到s q l 表的模型转换过程,并利用模型 验证工具验证生成的p s m 模型是否符合模式的规定等。 7 中山人学硕 学位论文 1 5 论文组织结构 本论文共分为5 章,各章内容如下: 第l 章绪论 介绍了问题的提出,详细介绍了国内外研究现状,给出了本课题的研究 意义,最后给出了论文所做的主要工作和论文组织结构。 第2 章模型驱动架构介绍 介绍了m d a 结构框架、m d a 相关的技术标准以及m d a 开发周期等。 第3 章模型转换的相关技术 介绍了模型转换的分类以及目前主要的模型转换方法,并详细介绍了a t l 模型转换的相关知识。 第4 章p i m 到p s m s q l 模型转换的设计与实现 详细介绍了u m l 类到s q l 表的转换规则的设计与实现,并介绍了模型验 证工具的设计与实现,最后给出了一个实例。 第5 章结语 总结全文,并展望m d a 未来的发展。 m d a 中p i m 到p s m s q l 横型转换研究与实现 第二章模型驱动架构介绍 2 1体系结构 m d a 的体系结构中可以分为三个层次,分别为核心技术层,中阃件技术层, 公共服务层【3 1 ,如图2 一l 所示。 f 翻n 0 融。 图2 1m d a 体系结构图 核心技术层包括统一建模语言u m l 、元对象设旌m o f 、公共仓库元模型c 咖、 基于x m l 的元数据交换瑚i 等,它们都是m d a 体系结构中的核心标准,在下一节 将会对这些标准进行详细的介绍。 中间件技术层包括c o r b a ,w e bs e r v i c e s ,j a v a ,n e t ,) 碍也删i 等。通过 相应的模型转换工具,根据一定的转换规则,就可以把用m d a 核心技术表示的系 统体系结构模型直接映射成与各个中间件技术相关的代码,这些代码是自动生成 的,这就大大提高了软件开发的效率。 公共服务层包括安全服务,目录服务,事务服务等,这些都是o m g 从众多业 务系统中提取出来的公共服务。利用这些服务可以方便地将中间层的代码等集成 到最终的应用系统中,如制造业系统、医疗保健系统,电子商务,运输系统等。 9 中山大学硕: 学位论文 2 2如a 相关标准 m d a 是由一系列的标准构成的,包括元对象设施、统一建模语言、) ( m l 元数 据交换、公共仓库元模型、对象约束语言以及q v t 等组成。下面对这些标准做详 细的介绍。 2 2 1 元对象设施( m o f ) m o f ( m e t a - o b j e c tf a c i l i t y ) 【1 0 1 是o m g 组织于1 9 9 7 年提出的一个标准,它采 用了定义元数据的技术和利用c o r b a 对象表达元数据的方法,这里的元数据是指 用来描述数据的数据。h o f 标准提供了: 抽象模型:定义m o f 对象和他们之间的关联 规则的集合:将基于m o f 的元模型映射到语言无关的接口( 使用c o r b ai d l 来定义) 。对这些接口的实现可以被用来访问和修改任何基于这个元模型的 模型。 定义元模型元素的生命周期、复合、和关闭语义的规则。 层级的反射接口( r e f l e c t i v ei n t e r f a c e s ) :定义了通用的操作,用于发现 和操纵基于m o f 元模型的模型,但是对于映射后的接口的属主是未知的 模型是以精确定义的语言对系统作出的描述,在m o f 中模型是元数据的任意 集合,由于元数据本身就是一种信息,它可以被其他元数据描述,也可以被它自 己用来进行自我描述,这就是元元数据,包含元元数据的模型就叫做元模型 在m o f 中起着重要作用的就是m o f 元模型,它定义了应用m o f 表达的模型中 元数据的抽象语法,n i o f 元模型被称为元元模型。用于定义m o f 模型语言的就是 m o f 模型本身,这样做有助于对m o f 为元模型建模的能力进行验证,可以通过将 m o f - i d l 映射应用到m o f 模型的方式对m o f 的接口和行为进行定义,使模型和元 模型的计算模式统一起来n 】。在m o f 的架构中将建模分为四个层次,如图2 2 所示。 其中m o 层表示的是系统中的实体,它是m 1 层的实例,m 1 层是系统的模型, 它是m 2 层的实例,m 2 层是元模型,包含u m l 语言定义、j a v a 语言定义等内容, 它是m 3 层的实例,m 3 层是元一元模型,是用来定义如u k t l 语言、j a v a 语言用的 模型,m 3 层是自描述的。在本质上元模型并不限于四层,重要的是每层之间的 实例化关系,以及m 3 层的自描述能力。从m o f 的四层结构我们可以看出,对于 一些模型,如果其定义该模型的元模型能够符合m o f 标准,最终都可以通过一个 1 0 m d a 中p i m 到p s m s q l 模型转换研究与实现 对m o f 的实现框架来对模型进行读取和访问。 n d a n t 图2 - 2m o f 的四层结构 m o f 映射是在给定实现技术的环境中将m o f 的语义用另一种实际的技术再实 现的过程。通过映射能将m o f 描述的模型用具体技术重建出来。映射中最重要的 是抽象映射( a b s t r a c tm a p p i n g ) ,它描述如何将m o f 元模型充实为一个抽象 的信息模型( i n f o r m a t i o nm o d e l ) ;即如何使用元模型的构造拼写出元模型的 逻辑结构。抽象映射给出了映射的语义和规则,是所有m o f 具体映射的参照和准 绳;任何具体映射( c o n c r e t em a p p i n g ) 如果有违抽象映射规则,那么将和其它 模型不具完全的互操作性,比如和c o r b ai d l 映射的模型之间。即不合法映射产 生的模型和正确映射产生的模型之间不能完全互操作【1 2 】。 中山大学硕士学位论文 l e v e l m l b 融 图2 3m o f 映射l l o 】 在m o f 规范中给出了图2 3 的m o f 映射,该m o f 映射包括一个抽象映射和 两个具体映射( i d l 映射、x m i x m l 映射) 。其中抽象映射定义了应用程序位于 m 2 层的元模型到它的抽象信息模型m 1 层的拼写规则,这些映射都是抽象的,包 括语法和语义上的映射。i d l 映射从元模型的抽象语法生成基于c o r b i d l 接口 的语法以及操作的语义。x m i x m l 映射从元模型的抽象语法生成了d t d ,映射成为 x m i 标斛1 0 1 。 通过映射将m o f 和具体建模技术结合起来了实现了模型间的互访。有了这样 的平台,通过m o f 模型与模型之间就可以建立大使级外交关系了,只要遵循m o f 规范就能互访。m o f 是建立在c o r b a 之上,实现了跨语言和跨平台。 2 2 2 统一建模语言( u 虬) u m l ( u m f i e dm o d e l i n gl a n g u a g e ) 1 3 】是由c , r a d ya u m b a u g h 、i v a rj a o o b s o n 和 j i mb o o t h 一起合作创立的,它融合了b o o c h 、o m t 和o o s e 等方法的基本 概念,明确定义了一套公共的内部概念。它的最初版本在1 9 9 7 年被o m g 采纳, 后经过一系列的改进,目前u m l 2 0 版本已经公布。 u m l 是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、 构造和建立软件系统制品的文档。它记录了对必须构造的系统的决定和理解,可 用于对系统的理解、设计、浏览、配置、维护和信息控制。u m l 适用于各种软 件开发方法、软件生命周期的各个阶段、各种应用领域以及各种开发工具,u m l m d a 中p i m 列p s m $ q l 模型转换研究与实现 是一种总结了以往建模技术的经验并吸收当今优秀成果的标准建模方法。u m l 包括概念的语义,表示法和说明,提供了静态、动态、系统环境及组织结构的模 型。它可被交互的可视化建模工具所支持,这些工具提供了代码生成器和报表生 成器。u m l 标准并没有定义一种标准的开发过程,但它适用于迭代式的开发过 程。它是为支持大部分现存的面向对象开发过程而设计的。 u m l 描述了一个系统的静态结构和动态行为。u m l 将系统描述为一些离散 的相互作用的对象并最终为外部用户提供一定的功能的模型结构。静态结构定义 了系统中的重要对象的属性和操作以及这些对象之间的相互关系。动态行为定义 了对象的时问特性和对象为完成目标而相互进行通信的机制。从不同但相互联系 的角度对系统建立的模型可用于不同的目的【”】。 u m l 还包括可将模型分解成包的结构组件,以便于软件小组将大的系统分 解成易于处理的块结构,并理解和控制各个包之间的依赖关系,在复杂的开发环 境中管理模型单元。它还包括用于显示系统实现和组织运行的组件。u m l 如今 已经在现代的软件开发过程当中扮演着重要的角色。在m d a 的开发体系结构中, u m l 是一种元模型。由于o m g 将u m l 技术标准化以后,u m l 模型就可以方 便的被其它工具支持。m d a 技术创建的所有应用程序都是基于标准化的u m l 模型,通过这一通用的标准化的建模标准作为支撑,m d a 开发人员就可以轻松 的创建各种模型。 图2 - 4 给出了u 札的元模型:从该图可以看出e l e m e n t 抽象类位于元模型体 系结构中的最上层,凡是继承自它的都是模型的一个原子要素;m o d e l e l e m e n t 是所有名字的建模元类的基类,具有属性n a m e ;e l e m e n t o w n e r s h i p 定义了一个 处于n a m e s p a c e 中的m o d e l e l e m e n t 的可见性,具有属性v i s i b l i t i y 和 i s s p e c i f i c a t i o n ,其中v i s i b l i t i y 是一个可枚举类型,具有p u b l i c 、p r o t e c t 、 p r i v a t e 和p a c k a g e 等值;f e a t u r e 抽象类包含在c l a s s i f i e r 中,具有属性 o w n s c o p e 和v i s i b i l i t y ,其中o w n s c o p e 是一个枚举类型,具有c l a s s i f i e r 和 i n s t a n c e 等值,f e a t u r e 抽象类定义了一个c l a s s i f i e r 类的一个子类,也有可 能是c l a s s i f i e r 本身的一个结构特征n a m e s p a c e 继承了m o d e l e l e m e n t ,它也 可以包含其他的m o d e l e l e m e n t ;g e n e r i z a b l e e l e m e n t 集成了m o d e l e l e m e n t ,用 它表示的子类都是可以泛化的,具有属性i s r o o t 、i s l e a f 和i s a b s t r a c t ,其中 中山大学硕学位论文 i s r o o t 表示元素在泛化关系中是否是根,i s l e a f 表示元素在泛化关系中是否为 叶子。i s a b s t r a c t 表示该元类是否允许实例化;p a r a m e t e r 是一个参数元类,主 要用于o p e r a t i o n 中;c o n s t r a i n t 是一个约束表达式,通过使用b o d y 属性便可 以实现约束;c l a s s i f i e r 是个具有结构特征或者行为特征的元类,是c l a s s 类的父类;s t r u c t u r a l f e a t u r e 描述了一个类元实例结构上的特性;a t t r i b u t e 继承了s t r u c t u r a l f e a t u r e 的结构特性,i n i t i a l v a l u e 表示属性的初始值; b e h a v i o r a l f e a t u r e 描述了一个类元行为上的特性;o p e r a t i o n 继承了 b e h a v i o r a l f e a t u r e 的行为特性,具有属性i s a b s t r a c t i o n 、i s l e a f 和i s r o o t 。 分别表示是否抽象操作、是否可以被子类改写和是否可以继承一个根类操作; m e t h o d 是方法的具体实现,可以通过b o d y 属性来指定需要的方法体。 图2 - 4 u m l 元模型【l l 1 4 m d a 中p i m 到p s m s q l 模型转换研究与实现 u m l 对于支持m d a 具有以下优点【l l 】: 1 ) 分离抽象语法和具体语法。u m l 早期的版本把注意力主要集中在图形表示 上面,规定了不同图形和线条的语义。现在的u m l 已经包含了自身语义的 形式化模型,u m l 一个重要优点是它将抽象语法和具体语法的关注点能够 清楚的分离。这就意味着特定具体语法编码的u m l 模型固定的绑定到该具 体语法上。在u m l 中可以用图形或者文本方式表达模型,有助于开发人员 的理解和维护。 u m l 的另一个优点是它的可扩展性。该机制允许建立特定的基于u m l 的语 言,被称为u m lp r o f i l e 。u m lp r o f i l e 是一系列构造型和标记值的定义,这 些构造型和标记值扩展了u m l 元模型元素。它可以和o c l 有效的结合,在 模型约束方面有着较强的功能,可以减少在建模过程中的信息失真。 3 1u m l 对独立与平台的建模支持。u m l 规约十分形式化和作构的精确,它的 本身的特点决定了对建立平台无关模型的支持。u m l 支持形式化独立与平 台的建模的一个有效手段是允许语义规约和实现规约的分离。对于平台相关 模型,u m l 可以通过其内部扩展机制来描述平台相关语义。同时u m l 还可 以描述独立与平台的先验条件和后验条件以及不变式。 4 1u m l 是由标准的组织来维护的,作为一项技术标准,它允许互补的工具存 在第三方开发的p r o f i l e 可以放入u m l p r o f i l e 机制中去。u m l 使可插入的 建模框架成为现实。 但是u m l 2 0 之前版本也存在着诸多的问题,比如u m l 元模型太大,关注 点没有很好的分离,对视点支持不佳,对关系的含糊以及对p r o f i l e 扩展机制的 限制。u m l 2 0 的出台对m d a 的支持程度又有了显著的提高。 u m l 2 0 主要在以下方面进行了改进: 1 1u m l 2 0 提供了两种扩展机制,一种是一阶扩展机$ 1 j ( f i r s - - c l a s se x t e n s i o n m e c h a n i s m ) ( 基于元模型的扩展机制) ,一种是轻量级的扩展机制( 基于外廓 ( p r o f i l e ) 扩展机制) u m l 2 0 引入元模型扩展机制,使得u m l 的扩展能力有了 很大的提高。元模型扩展机制允许用户任意修改添加删除元模型构造物。外 廓扩展机制不允许随意修改已经存在的模型,引入外廓的目的是给出一种调 整已经存在的元模型的简单机制,使

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论