




已阅读5页,还剩52页未读, 继续免费阅读
(计算机软件与理论专业论文)mda的平台相关模型到代码模型变换的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
m d a 的平行相关模型到代码模型变换的研究与实现 m d a 的平台相关模型到代码模型变换的研 究与实现 专业:计算机软件与理论 硕士生:陈晓君 指导教师:李师贤教授 摘要 模型驱动体系架构( m d a ) 把软件开发抽象层次从代码提升到了模型,而不 同类模型间的转换则成为了技术热点。其中,最具有实践意义的一类模型转换技 术就是平台相关模型( p s m 模型) 到代码模型的转换,本文在此类转换技术上进 行了研究和实现。 本文重点讨论了u m l 2 0 和x m l 2 0 标准对m 1 ) a 的支持、x m i 对模型信息的表 示机制、基于x s l t 处理器的模型转换方法、基于模板的模型转换方法,设计与 实现了一个平台相关模型到代码模型的转换工具,所采用的平台相关模型是j a v a 平台的模型,代码模型则是实际的j a v a 源代码。该工具分为五个模块:模型库、 解析器、模板库、生成器、编译器u i 。实验结果表明,该工具完整地实现了平 台相关的静态模型信息到代码信息的转换,并且对比同类工具有低复杂性、高扩 展性、高易用性的特点。 关键词:m d a ,u m l ,x m i ,p s m ,代码生成,v e l o c i t y m d a 的、f 台相关模型到代码模型变换的研究与实现 r e s e a r c ha n di m p l e m e n t a t i o no fp l a t f o r ms p e c i f i cm o d e lt o c o d et r a n s f o r m a t i o ni nm d a c o m p u t 盯s o f t w a r ea n dt h e o r i e s n a m e :c h e r tx i a o j u n s u p e r v i s o r :l is h i x i a np r o f c s s o r a b s t r a c t m d a ( m o d e lo r i y e na r c h i t e c t u r e ) r a i s e st h el e v e lo fa b s t r a c t i o nf r o m c o d et om o d e l m o d e lt r a n s f o r m a t i o ni st h ek e yt e c h n o l o g yf o rm d a ,i nw h i c h p s mt oc o d et r a n s f o r m a t i o ni sav e r yi m p o r t a n ts t e p t h i sp a p e rf o c u s e so nt h er e s e a r c ho fp l a t f o r ms p e c i f i cm o d e l ( p s 吣 t oc o d et r a n s f o r m a t i o n ,w h i c hi sb a s e do nu m l 2 0a n dx m l 2 0s t a n d a r d s i ts h o w s3c r i t i c a lt e c h n o l o g i e s :r e p r e s e n t i n gp s mm o d e li n f o r m a t i o nb y x m id o c u m e n t :t h ex s l t b a s e dt r a n s f o r m a t i o nt e c h n o l o g y ;t h et e m p l a t e b a s e dt r a n s f o r m a t i o nt e c h n o l o g y b a s e do nt h er e s e a r c ho ft r a n s f o r m a t i o nt e c h n o l o g i e s ,t h i sp a p e r d e s i g n sa n di m p l e m e n t sat r a n s f o r m a t i o nt o o ln a m e ds y s u m d a i t t r a n s f e r r e dj a v ap l a t f o r ms p e c i f i cm o d e li n t oj a v as o u r c ec o d e s y s i j m d a i sm a d eu po f5m o d u l e s :m o d e l sl i b ,p a r s e r s ,t e m p l a t e s ,g e n e r a t o r , c o m p i l e ru s e ri n t e r f a c e t h ee x p e r i m e n ts h o w st h a ts y s u m d ai saq u a l i f i e d t o o lf o rp s mt oc o d et r a n s f o r m a t i o n a n de v e nam o r ee x t e n s i b l et o o lt h a n a n yo t h e rm d at 0 0 1 k e yw o r d s :m d a , 删l ,x m i ,p 1 a t f o r ms p e c i f i cm o d e l ,c o d eg e n e r a t i o n , v e l o c i t y n m d a 的严台相关模型到代码模型变换的研究与实现 1 1 研究背景 第1 章绪论 随着市场对软件需求的加大,软件的重要性日益提高。但目前软件产业面临 着来自各方面的压力【1 】:生产成本的压力复杂的需求和日新月异的软件技术 对人力成本和维护成本都产生了巨大的压力;质量的压力软件的复杂性和生 产时间的紧迫性之间的冲突导致了许多“豆腐渣工程”。产生这些压力的根本原 因,一方面与软件生产本身的特点有关;另一方面主要是缺乏有效的高层软件开 发和维护方法。 为了建立一套有效的高层软件开发和维护方法,对象管理组织( o b j e c t m a n a g e m e n tg r o u p ) 于2 0 0 2 年初提出了解决方案:模型驱动架构( m o d e l d r i v e n a r c h i t e c t u r e ,m d a ) 【2 】,并把它作为o m g 的战略方向。 我们今天所说的软件开发过程常常是由需求、分析、设计、编码、测试和部 署这几个阶段组成。图1 - 1 分别描述了传统和m d a 的生命开发周期。 图1 - 1 传统和帅a 生命开发周期比较啪 m d a 的甲台相关模型到代码模型变换的研究与实现 传统的软件开发过程中,在前三个阶段产生的工件是文本和图。编码和测试 阶段的工件是代码。在传统的软件开发过程中,程序员很容易就进入一个误区: 为了追求效率,往往喜欢尽可能早地开始编程。这样的迭代过程并不是从需求开 始,而是从编码开始的捷径,在分析不完善的情况下贸然进行编码工作,导致编 写的代码不符合需求甚至最终开发出来的产品与用户需求不符,这样反而降低了 生产效率。另外,一旦编码阶段开始,前面阶段建立的文本和图表就会逐渐失去 意义,随着编码阶段的进展,图表和代码之间的联系会逐渐减少,为了保持代码 和图表的同步,则需要额外的花费。 m d a 与传统的开发方式相比,主要有两个区别: 1 模型驱动开发的整个开发过程是由对系统的建模行为驱动的,其生命周 期的分析和设计阶段产生的工件是能够被计算机理解的形式化模型。图 卜1 中的p i m ( p l a t f o r mi n d e p e n d e n tm o d e l ,平台无关模型) 【2 】、 p s m ( p l a t f o r ms p e c i f i cm o d e l ,平台相关模型) 2 1 指的就是描述系统需 求的模型。 2 正因为m d a 开发中的模型是计算机所能理解的,所以可以被计算机自动 转换、自动维护更新,而无须过多人力的投入。事实上,从生成p i m 模 型以后的开发过程都有相应的自动生成方法,可以实现由p i m 自动生成 p s m ,再由p s m 自动生成代码。从而使程序员从繁琐的编码任务中解脱 出来,把更多的精力放在p i m 模型的创建,也即系统分析阶段。 m d a 的重要目标是加强模型在开发中的作用,即实现模型可执行。这实际上 也是软件行业发展的梦想。从机器语言、汇编语言发展到现在的高级语言,软件 开发的抽象层次越来越高。这意味着开发人员越来越多地关注问题的实质。 m d a 将抽象层次提高到模型的高度,其理想情况是:开发人员只需要考虑和 业务模型相关的模型设计,模型到应用的实现是和业务无关的、可重复的、低层 次的工作,交由机器来实现。目前,m d a 要做的是将业务逻辑从不同的中间件平 台( c o r b a ,j 2 e e 等) 中剥离出来,开发人员只需考虑业务逻辑的建模,得到的是 和具体中间件的技术细节无关的平台无关模型p i m ,在m d a 的支持下,将p i m 转 换为加入了技术细节的不同平台的平台相关模型p s m ,最后能够生成一系列不同 2 m d a 的平台相关模型到代码模型变换的研究实现 平台下的应用,如图1 - 2 所示。 图卜2 一个p i m 模型可对应多个平台实现【4 】 1 2 本文的研究内容及主要贡献 m d a 目前尚处于发展的阶段,距离最终的成熟和广泛应用还有一定的距离。 但近年来,i b m ,o r a c l e 等公司都宣称在自己的企业级软件解决方案中融入了m d a 思想,b o r l a n d 公司推出的t o g e t h e r2 0 0 6 也在产品中加入了对m d a 的支持,m d a 似乎正在走向市场。那么m d a 是否真正具有优越性? m d a 与c a s e 工具又有什么 区别? 我们将于第二章中对这个问题进行讨论。 模型可执行是m d a 的终极目的。为了实现这个目的,o m g 制定了模型的精确 形式化表示、模型存储以及模型交换方面的各种标准,如u m l ( u n i f i e dm o d e l i n g l a n g u a g e ,统一建模语言) 嘲,m o f ( m e t a - o b j e c tf a c i l i t y ,元对象设施) 【6 】,x m i ( x m lm e t a d a t ai n t e r c h a n g e ,x m l 元数据交互) 【砷等。本文在第三章中将主要 研究嘶l 2 0 和x m l 2 0 这两种标准对m d a 的支持。 在m d a 中,以模型为中心来开发软件,允许一个p i m 对应多个p s m ,那p i m 3 m d a 的平台相关模型到代码模型变换的研究与实现 与不同的p s m 之问如何进行转换? p s m 又是如何自动变换成代码的? 这些问题都 涉及到了模型转换技术( m o d e lt r a n s f o r m a t i o n ) 。只有解决了p i m 模型、p s m 模 型问的转换的技术,才能够解决不同平台,不同技术路线之间的集成和互操作问 题,才能不断适应涌现出的新技术和新平台;只有解决p s m 模型到代码模型的转 换,才能真正发挥模型的生产力,兑现m d a 的承诺。本文的第四章将重点介绍 m d a 中的p s m 模型到代码模型变换的关键技术,其中重点讨论了如何用x m i 文件 格式存储平台相关模型信息,并介绍了两种具体的转换技术。 在第四章的基础上,本文设计实现了一个平台相关模型到代码模型的转换工 具。这里所采用的平台相关模型是j a v a 平台的模型,代码模型则是实际的j a v a 源代码。本工具主要设计实现了五个模块:模型库、解析器、模板库、生成器、 编译器u i 。重点分析了如何把y $ 1 i 数据读入内存,以及如何增强工具的适用范 围。 本文最主要的贡献在于以下二点: 1 详细介绍了p s m 模型到代码模型变换所涉及的关键技术细节,分析比 较了各种技术间优劣,并在所设计的工具中保留了对各种不同技术的扩 展支持,这使本文的研究工作不局限于某项具体技术,具有通用的理论 指导意义。 2 本文设计的工具可以做为此类转换工具的一种通用框架,通过简单地扩 充模型库、模板库,就可以实现不同类p s m 模型到代码模型的转换, 真正实现任何平台任意选择。因此本工具作为一种可扩展性强的m d a 实现工具,也具有一定的实践意义。 1 3 本文的结构 本文共分为七章,各章的主要内容如下: 第1 章绪论介绍了研究背景,阐明本文的研究意义和目的,同时简要说 明本文的主要研究内容。 第2 章研究现状综述主要介绍了国内外m d a 支持工具的发展现状,以及 4 m d a 的甲台相关模型到代码模型变换的研究上j 实现 各种工具的优缺点。 第3 章模型转换的基础理论主要介绍了m d a 的基本概念、基本体系架构、 核心标准。重点介绍了u m l 和x m i 标准。 第4 章p s m 到代码模型变换的关键技术主要介绍了如何用x m i 文档表示 p s m 模型信息,以及平台相关模型到代码模型的转换技术,并重点介绍了基于模 板的代码生成技术。 第5 章p s m 到代码模型变换的设计与实现主要介绍了变换工具所采用的 技术方案,及部分设计类图。 第6 章实验及结果分析对第5 章设计的工具进行实验,并给出本工具与 同类工具的对比分析。 第7 章结束语总结全文的内容,指出本文研究的进一步工作。 m d a 的平台相关模型到代码模型变换的研究i 实现 第2 章研究现状综述 目前,涉及到m d a 的平台相关模型到代码模型变换的工具,可以总结为两个 方面:一方面是基于m d a 规范开发出来的m d a 通用工具;一方面是针对特定领域 定义转换规则,将模型自动转换成代码,由各种c a s e 工具来实现。 2 1m d a 通用支撑工具 以下介绍几款用j a v a 语言编写出来的m d a 通用工具:e m f ( e e l i p s em o d e l f r a m e w o r k ) 嗍、a r c s t y l e r 嗍、a n d r o m d a 。 2 1 1e m f ( e c l i p s em o d e lf r a m e w o r k ) e m f 是e c l i p s e 组织实现的建模框架和代码生成工具。e m f 主要实现了m o f ( m e t a - o b j e c tf a c i l i t y ,元对象设施) 1 4 脚的核心功能,其元模型称为e c o r e 。 在m o f2 0 中,采用了分包的概念来定义m o f ,其中的e s s e n t i a lm o f ( 酬0 f ) 和e c o r e 模型类似,并且e m f 可以无阻碍的读和写e m o f 的序列化内容。 e m f 的模型输入方式可以是x m i 文件,还可以是使用添加了模型相关注释的 j a v a 文档,或者r a t i o n a lr o s e 的m d l 文件。e m f 读入模型后生成对应的一系列 的j a v a 类,相关的适配器类会提供查看模型和编辑模型的功能,最后通过j e t ( j a v ae m i t t e rt e m p l a t e s ) “”( e c l i p s e 自主开发的代码生成引擎) 生成代码 输出。 e m f 对应于平台相关模型到代码模型的变换实现的核心技术是j e t 。j e t 是一 个基于模板的代码生成引擎,它使用的语法是j s p 语法的一个子集,它的工作原 理是根据用户写的模板( t e m p l a t e s ) 来生成大部分的代码。 e m f 在使用方面还是比较容易的,因为e m f 是e c l i p s e 平台的一个具体项目, 所以提供了相应的编辑器等;而且e m f 进行代码的生成比较容易,但其生成内容 总是固定符合一个特定模式;在稳定性方面,e m f 是很稳定的,因为在e c l i p s e 6 m d a 的平台相关模型到代码模型变换的研究与实现 平台中e m f 处于重要的地位并被广泛使用,如e c l i p s eu m l ,r a t i o n a ls o f t w a r e a r c h i t e c t u r e 等都是基于e m f ;在扩展性方面,e m f 使用j e t 作为其代码生成的 引擎,还是具备一定的可扩展性的;e m f 项目的主要目的就是为e c l i p s e 上的工 具集成提供基础设施,并且达到了其预先的目的:e m f 有多种方式可以读入模型, 具备一定的灵活性。 z 1 2a r c s t y l e r a r c s t y l e r 是德国i n t e r a c t i v e o b j e c t s 公司的产品,遵循m d a 规范,纯j a v a 开发,跨平台。h r c s t y l e r 支持将一种模型映射到其他模型、源代码、脚本( 如 测试、编译、部署脚本) ,具备完备的开发、部署和测试功能。 a r c s t y l e r 的核心特性是支持定义和管理功能强大的模型转换规则,架构师 可以定义自己的模型转换规则,并分发给项目组成员使用,这给开发人员以极大 的灵活性。在a r c s t y l e r 工具中,模型转换规则被捆绑在一起称为 g o a - c a r t r i d g e s ( 姗a 桥接器) ,针对不同的应用平台( 如j 2 e e 平台,n e t 平台) , 定义不同的桥接器。 在a r c s t y l e r 中,平台相关模型是通过对平台无关模型进行标注而产生的, 这些加了标注的p s m 能够通过使用j m i ( j a v am e t a d a t ai n t e r f a c e ,j a v a 元数据 接口) 被m d a c a r t r i d g e s 访问并转换为代码。j m i 是s u n 公司的j a v a 社区项目 ( j c p ) 制定的m o f j a v a 映射,定义了将元数据表示成j a v a 对象的规则。 在a r c s t y l e r 中,允许用户在自动生成的代码的基础上进行手动修改,修改 的代码部分存放于代码保护区。当进行代码生成时,代码生成器会自动检测代码 文件是否已经存在,( 如果存在,表示代码已经被生成过至少一次) ,如果检测出 代码保护区有手工修改过的代码,则生成代码时插入保护区内对应的代码,如果 没有修改内容,则插入默认的自动生成代码。这部分功能的算法思想如图2 1 所 示。采用这种算法的好处在于,可以保留一些对模型有益的补充,但缺点在于这 种保护措施只能应用于同一种编程语言的代码的再次生成。 j c p 是制定j a v a 标准的机构 7 m d a 的平台相关模型到代码模型变换的研究与实现 2 1 3a n d r o 如a 图2 - 1a r c s t y l e r 代码生成的管理算法“2 a n d r o m d a 框架的前身是u m l 2 e j b 。目的在于从u m l 模型自动生成e j b 代码。 在m d a 提出后,a n d r o m d a 重构了自身的框架结构,使用m a v e n 构建工具作为其 总体架构的弓l 擎,并应用了m d a 中的m o f 实现来读取u m l 模型信息,以及模板技 术来进行代码生成。它需要使用另外的工具来进行u m l 建模,并且导出相应的 x m i 模型存储,继而系统地对删i 文件进行处理,理论上只要能导出符合) ( m i 标 准的模型格式的工具就可以,但a n d r o m d a 通常采用m a g i c d r a w 进行建模。 a n d r o m d a 提供了u m lp r o f i l e 的扩展,通过自建的一些数据类型等,来提供一 个平台无关的建模环境。a n d r o m d a 在应用中是相当成功的,降低了开发j 2 e e 程 序的复杂度。但是a n d r o m d a 本身没有集成开发环境,主要的目的平台还是j 2 e e 平台,并且通过将生成目标构建在一些流行的框架上,比如s t r u t s ,s p r i n g 等, m d a 的平台相关模型到代码模型变换的研究弓实现 来简化其生成过程。所以其生成的原理简单,生成内容相对确定,有较强的稳定 性。目前开始有针对d o t n e t 平台的初步实现,但还不能够用于生产环境。 a n d r o m d a 的一个显著特点就是它的基于m a v e n 的架构,用户可以通过开发 自己的插件,或修改现有插件来进行扩展,a n d r o m d a 一般用于构建b i s 企业系 统,也用于构建其自身的插件,总的来说其体系结构具有较好的扩展性,这是我 们需要学习的地方,但这也意味着开发者必须先学习m a v e n 相关理论知识才能对 其进行进一步的扩展,因此a n d r o m d a 易用性明显不足。 a n d r o m d a 的源代码中包括五个核心部件: 1 t e m p l a t ee n g i n e s ( 模板引擎) 目前使用v e l o c i t y 作为模板语言,支持向其他语言的扩展。 提供一个高层的m e t a - d a t a 访问a p i ,支持u m l l 3 、1 4 、2 0 等等语 法的m o fm o d e l 并可白行扩展。 此模块用于存储输入的模型,支持从x m i 文件中读取m o fm o d e l ,同时 支持其他格式的扩展。 此模块针对不同的平台定义了各种桥接器,桥接器通过m e t a f a s c a d e 读取元模型,通过模板生成代码的核心。a n d r o m d a 自带了s p r i n g , h i b e r n a t e 等c a r t r i d g e ,也可自行扩展。 5 t r a n s l a t i o n l i b r a r i e s 定义了平台无关模型到平台相关模型的转换规则。 a n d r o m d a 的工作过程如图2 - 2 所示。 9 m d a 的平台相关模型到代码模型变换的研究与实现 图2 - 2a n d r o m d a 的工作模式 本文工具的实现借鉴了这种工作模式。 2 2 c a s e 工具的m d a 支持功能 支持m d a 功能开发的主要c a s e 工具有:i b mr a t i o n a l 工具系列、t o g e t h e r 2 0 0 6 。 2 2 1i b mr a t i o n a l 系列 i b mr a t i o n a l 提供了两类产品支持m d a : 在模型定义和转换上提供了高度自动化的工具,典型的是针对特定的应用 领域的,适合这个领域的复杂的转换规则能够被预先定义。 被设计用于更加通用的目的,但是能够通过最终用户和第三方工具供应商 的扩展和定制被配置以支持m d a 的工具,典型的是针对更大范围的应用 领域的。 1 0 m d a 的平台相关模型到代码模型变换的研究与实现 在第一类产品中,i b mr a t i o n a lr o s et e c h n i c a ld e v e l o p e r 提供了高度自 动化的模型转换和强大的代码生成能力。这种能力对于嵌入式系统和其他技术软 件产品的开发人员尤其重要。类似的,i b mr a t i o n a lr a p i dd e v e l o p e r 提供了 高度自动化的面向j 2 e e 应用的m d a 的实现,它能够集成和扩展已有的遗留系 统。在第二个种类中,i b mr a t i o n a lr o s ex d ed e v e l o p e r 提供了模式能力、代 码模板和应用接口的合并,这允许开发人员和供应商为更加普遍的领域适用性自 己开发他们的m d a 实现。 r a t i o n a lr o s e 是当今业界主导产品,是分析和设计面向对象软件系统的强 大的可视化工具,可以用来先建模系统再编写代码。它把u m l 和谐地集成进面向 对象的软件开发过程中。不论是在系统需求阶段,还是在对象的分析与设计、软 件的实现与测试阶段,它都提供了清晰的u m l 表达方法和完善的工具,方便建立 起相应的软件模型。它主要关注于与多种开发环境无缝集成,能生成各种代码和 数据框架等。与其他u m l 工具相比,r o s e 更关注于其产品化。它具有很多特点: 方便地制图及纠错;管理模型的信息,修改具有关联性;在模型元素之间易于导 航;支持多用户协同工作;支持代码框架生成:支持逆向工程,即由代码生成模 型。 2 2 2t o g e t h e r2 0 0 6 t o g e t h e r2 0 0 6 是b o r l a n d 公司推出的一款支持m d a 的建模工具,支持模型 变换规则的定义,并实现不同模型之间的转换,支持标准x m l 2 0 和咖l 2 0 。 t o g e t h e r 充分利用t $ 1 l 搭建正确的架构,以便满足业务目标,通过集成u m l 能 力的方式扩展了开发框架,简化了构建软件的复杂过程。t o g e t h e r 使用同步的 模型与代码,允许进行更加有效的开发小组沟通与协作。t o g e t h e r 提供了强大 的、可以定制的文档生成能力,其中包括多种文档格式与定制模板的能力。 t o g e t h e r 支持标准的模式,同时也提供了更改现有模式、创建新模式的能力。 在t o g e t h e r 技术之中的大量重构特性验证所有的系统变化都被正确地传送到整 个应用。现在t o g e t h e r 能与第三方的产品集成,如j b u i l d e r ,w e b s p h e r e , e c l i p s e 。在e c l i p s e 环境中,开发者可以利用t o g e t h e re d i t i o nf o re c l i p s e m d a 的平台相关模型到代码模型变换的研究与实现 之中的领先的建模、设计与质量保证功能,快速构建高质量的企业应用。通过在 e c l i p s e 本地开发用于t o g e t h e re d i t i o nf o re c l i p s e 的用户接口,用户可受 益于紧密的集成,并利用在同一个工具之中两种技术的优势。 在t o g e t h e r2 0 0 6r e l e a s e2f o re c l i p s e 版本中,打开新建项目,有一个 专门的“m d a ”项目类别,如图2 - 3 所示。 图2 - 3t o g e t h e r2 0 0 6r e l e a s e2f o re e li p s e 对h d a 的支持 对“m d a ”选项下的项目进行归类,大致有以下二种模型转换: 1 模型到模型的转换:包括e c o r e 模型到u m l 模型、数据建模到u m l 、u m l 到数据建模、u m l 到j 2 e e 平台、u m l 到j a v a 平台( 通过x s l 转换技术) 、 数据库e r 逻辑图到数据建模的转换。 2 模型与文本的转换:u m l 到w s d l ( w e b 服务描述语言) 、u m l 到x m l 语言、 u m l 到x s d ( x m l 模式定义语言) 的转换,以及w s d l 语言到u m l 的转换。 m d a 的平台相关模型到代码模型变换的研究实现 另外,t o g e t h e r2 0 0 6 还能基于q v t ( q u e r y ,v i e w ,t r a n s f o r m a t i o n ) 标准 自定义模型转换规则,根据用户的定义生成q v t 文件,用于不同模型间的转换 或模型与文本间的转换。 本文所采用的输入正是t o g e t h e r2 0 0 6f o re c l i p s e 版本中导出的描述平台 相关模型的x m i 文件,在这个导出的过程中,应用了模型到文本的转换。 2 3 分析比较 关于m d a 工具和c a s e 工具的差异,伽g 的c e o ,r i c h a r dm a r ks o l e y 是这 样描述的:m d a 的本质不是代码生成,尽管代码自动生成被认为是m d a 的主要成 就“1 。在m d a 中,最重要的是模型,m d a 也可以通过构造能直接执行模型的虚拟 机来实现。m d a 工具和过去的c a s e 工具主要存在三个方面的差异: 首先,在c a s e 工具时代,需要为系统实现框架和业务流程两方面建模,而 目前的情况是己有许多成熟的流行实现框架,因此只需要集中精力于业务流程即 可,不必关心系统实现框架。 其次,从p i t t 到p s m 的转换己有许多相关的成熟模式可以加以利用,这些模 式可以把一些通常的业务模型转化为特定平台上的一些成熟的实现框架。在 c a s e 工具时代模式概念还不成熟并且也没有被广泛理解,使用c a s ei - 具不仅需 要建模问题域,还必须创建一些实现模式,这使得整个系统的抽象过程过于复杂。 m d a 工具则是建筑在成熟的实现模式之上的产物,它借助于成功的u 札技术和成 熟的模式技术简化了整个系统的抽象过程,提高了抽象层次。 第三,m d a 通用工具普遍采用x m i 格式存储模型信息,这一个统一的标准使 得各种工具之间具有较强的互操作性。而传统的c a s e 工具创建的模型往往存储 于特定于本工具的数据库中,这些存储形式不是标准格式的,因此不能运用到其 它工具上,工具问的互交换性很差。 但由我们2 2 节中对现在c a s e 工具的研究来看,c a s e 工具已经发生了变化, 主流的c a s e 工具已经加入了许多支持m d a 功能的模块,第一点和第二点的区别 m d a 的平台相关模型到代码模型变换的研究0 实现 正在弱化,对于第三点,已经有许多c a s e 工具开始支持x m i 标准,并用它进行 模型信息的存储,从而大大提高了工具间的交互性。因此,更确切地说,c a s e 工具正在向m d a 技术靠拢,并利用m d a 技术提升工具的性能表现和应用范围。由 此看来,本人认为m d a 技术并不是c a s e 工具的终结,而是c a s e 工具获得新生的 一个新起点。 c a s e 工具庞大的用户群决定其领导地位,m d a 通用工具却通常显得“昙花一 现”,原因是缺乏标准化、产品化、缺少真正意义上完全支持m d a 过程的支撑工 具。通过2 1 节的介绍,我们也可以发现m d a 通用工具往往由多种技术结合而成, 却因为缺乏完善的整合机制而需要手工进行大量的配置工作,使用起来不如 c a s e 工具直观方便。 但是m o a 通用工具大部分是开源的,在学习和使用m d a 工具的过程中更能深 入地体会模型驱动开发的软件开发方法,另外,m d a 工具大部分是免费的,因此 出于长远的考虑,我们应该加大m d a 通用工具的研究和开发,以便解除用户对 c a s e 工具的长期依赖。 1 4 m d a 的平台相关模型到代码模型变换的研究与实现 第3 章模型转换的基础理论 本章介绍了与本课题相关的基础理论知识,包括m d a 中的模型转换相关概 念、统一建模语言( u m l ) 、x m l 元数据交换( ) ( m i ) 。 3 1 什么是 i d a 关于m d a 的定义,并没有一个统一的说法,根据o m gc e o ,r i c h a r dm a r ks o l e y 的说法“1 ,m d a 是一种优越的软件开发方法: 1 基于建模标准,如u m l 、m o f 。 2 可扩展至解决所有的建模问题。 3 支持全生命周期开发:分析、设计、实现、部署、维护、演化升级、系 统集成。 4 提供了软件开发工具间的互操作性和兼容性。 5 降低软件开发成本,最大化软件开发效率。 d a v i ds f r a n k e l 把m d a 说得通俗一点:m d a 就是把建模语言当编程语言来 用,而不只是当作设计语言来用“1 。 帅a 是由对象管理组织( o m g ) 提出的,但o m g 并没有给出一个正式的定义。 业界一般认为,m d a 是一种应用系统设计和实现的方法,是一种组织和管理被自 动化工具支持的企业体系架构的方法,是定义模型和推动不同模型类型之间的转 换服务的方法。m d a 并没有提供软件框架,但鼓励在软件的开发过程中有效地使 用系统的模型,并且它支持创建类似系统的最佳实践的重用。 m d a 技术在给软件开发带来巨大便利的同时,要求它自身的实现必须遵从严 格的规范。无论具体的规范如何,但是实现原则如下: 1 以一种定义良好的符号表示的模型是理解企业级方案系统的基础。 2 系统的构建能够围绕着一系列模型通过使用在模型之间的一系列转换被 m d a 的平台相关模型到代码模型变换的研究与实现 组织,并且能被组织到一个分层的、可变换的体系架构框架中。 3 以一系列元模型形式化地描述模型,能够使在模型中有意义的集成和转 换变得容易,并且是实现模型变换自动化的基础。 4 接受和广泛采纳基于模型的方法,提供开放性的工业标准给客户,并鼓 励供应商之间的竞争。 3 2x d a 中的模型 模型是对系统的一部分结构、功能或行为的正式规约。“1 首先,模型是一种 系统规约,这种规约可以是对结构的规约也可以是对系统功能或系统行为的规 约;其次,这种规约必须是正式的,即必须使用一种严格定义没有歧义的语言。 所以一个模型必须和一种严格定义了语法和语义的建模语言绑定在一起。根据模 型的这种定义,程序代码也是模型。 m d a 中有四种模型类型脚:计算无关的模型( c o m p u t a t i o n a li n d e p e n d e n t m o d e l ,c i m ) ,平台无关的模型( p l a t f o r mi n d e p e n d e n tm o d e l 。p i m ) ,被一个 平台模型( p l a t f o r mm o d e l ,p m ) 描述的平台相关的模型( p l a t f o r ms p e c i f i c m o d e l ,p s m ) 和一个实现相关的模型( i m p l e m e n t a t i o ns p e c i f i cm o d e l ,i s m ) i 计算无关模型( c i m ) :c i m 是从用户的角度来描述特定领域所面临的问 题及系统包含的数据信息等,它代表了生命周期中的需求模型。 2 平台无关模型( p l w ) :平台无关模型( p i m ) 描述了系统,但是不涉及最 终实现平台的知识,它从已实现技术的细节中抽象而来,侧重于描述系 统的基本功能而忽略了特定平台所需的细节。p i m 通常使用一种通用的 建模语言,定义了系统不随平台而改变的那部分特征。它的建模视角是 “系统如何才能更好地支撑业务”。p i m 代表了生命周期中的分析模型, 3 平台相关模型( p s m ) :p s m 描述的系统包含了最终实现平台的知识,它 是p i m 到具体平台的映射。p s m 是为某种特定平台量身定做的,在p s m 中用该平台的相应技术和构造来描述系统。它的建模视角是“如何用技 1 6 m d a 的平台相关模型到代码模型变换的研究弓实现 术实现支撑业务”。p s m 代表了生命周期中的详细设计模型。 4 实现相关模型( i s m ) :i s m 指的是具体的程序设计语言,也称为代码模 型。从某种意义上来说,程序设计语言也是一种模型,但程序设计语言 与模型在抽象层次、视角和表达机制是有本质区别的模型和具体程序设 计语言相比,它突破了程序设计语言所使用的单一的顺序机制,在更高 的抽象层次上结合图形,从不同的视角直观的表达了复杂系统的结构。 m d a 中实现相关模型不是程序员通过程序语言翻译设计模型实现的,而 是通过转换规则定义人员在实施人员的协助下定义转换规则,通过指定 目标系统的实现方式和具体中间件技术后,通过m d ai 具和自动程序设 计软件自动生成的,它的建立意味着系统的实现。 p i m 和p s m 表现了系统规约的不同抽象层次。这使平台无关模型可以被多种 实现技术复用,当技术平台发生变迁时平台无关模型不必做改动。p i m 不考虑具 体实现技术,平台无关模型可以更加精确地体现系统的本质特征。可以把高层次 的p i m 自动变换成低层次的p s m ,使开发者专注于p i m 的开发,这提升了软件开 发的抽象层次,提高了开发者的工作效率。 3 3m ) a 中模型的表示和交互i 舳和x m i 本文所采用的模型表示规范主要是u m l 2 o 和x m l 2 0 m 标准。u m l 2 0 对模型 进行了图形化的表示,其特点在于直观、易于用户操作。而x m l 2 0 则从u m l 2 0 生成了模型的文本化表示,易于模型信息的交互。下面分别介绍这两种标准。 3 3 1u m l 2 o u m l 在m d a 中主要是做精确建模的语言。而当2 0 0 2 年初o m g 提出了m d a 框 架概念的时候,发现u m l i x 存在一些缺陷,不能对m d a 提供很好的支持,比如 u m l i x 太复杂,图形不够精确,在理解上容易导致分歧等等。为了解决这些问 题,u m l 进行了一次比较大的修订,升级为u m l2 0 ,它简化了u m l i x 的复杂性, 1 7 m d a 的平台相关模型到代码模型变换的研究与实现 归并了不一致的模型,为架构建模和动态行为的描述提供了更强的支持,为m d a 提供了坚实的基础。 u m l 2 o 规范“1 包括了4 个子规范,分别是基础结构( i n f r a s t r u c t u r e ) 、上层 结构( s u p e r s t r u c t u r e ) 、对象约束语言( o c l ) 和图交换( d i a g r a mi n t e r c h a n g e ) , 如图3 - 1 所示。 图3 - 1u 札2 o 规范 1 u 虬2 0i n f r a s t r u c t u r e ( u m l 2 o 基础结构) :主要定义了u m l 的基本的语 言元素。 2 u m l 2 0s u p e r s t r u c t u r e ( u m l 2 o _ h 层结构) ;主要介绍了u l i l 2 0 的各种 模型图以及扩展机制等问题。扩展机制为m d a 提供了强有力的支持,将于 下一小节中介绍。 3 o b j e c tc o n s t r a i n tl a n g u a g e ( 对象约束语言) :这要定义t o c l 元模型、 o c l 描述、抽象语法以及标准库等。 4 d i a g r a mi n t e r c h a n g e ( 图表交换) :主要定义了模型图信息的交换标准, 特别是图的位置信息的交换。 在本文中主要用到了u m l 2 o 上层结构中的类图和扩展机制。 m d a 的甲台相关模型到代码模型变换的研究与实现 3 3 2u m l 2 0 扩展机制 u m l 2 0 装备了内置的扩展机制,使得我们可以借助通用的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 i l 变体。用u 肌p r o f i l e 定义的语言就是一个附带额外约束的u m l 子集。目前o m g 己经标准化的u m l p r o f i l e 有u m lp r o f i l ef o rc o r b a 、u m lp r o f i l ef o re n t e r p r i s ea p p l i c a t i o n i n t e g r a t i o n ( 队i ) 等。在4 1 节中,将结合x m i 文件举例说明u 札p r o f i l e 在 表示平台相关模型时的应用。 3 3 3x m l 2 0 ( x 札元数据交互) x m i ( x m l 元数据交互x m lm e t a d a t ai n t e r c h a n g e ) “是将u m l 表示的模型信 息映射到w 3 c 的x m l 的o m g 标准。x m i 定义了x m l 标记如何在x 札中表示模型信 息的序列化。在删1 2 0 中,每个x m l 元素都具有一个标识属性“x m i :i d ”,这个 属性值可以唯一的标识一个元素,用于文件中元素的查找和定位。 采用x m l 作为模型信息的载体基于以下原因: 1 x m l 是开放的、平台无关的、独立于软件开发商的一种标准; 2 x l l l 支持扩展的i s ou n i c o d e 字符集,可在多种操作系统平台上进行处 理: 3 x m l 独立于模型而存在,可表示如a 中的元一元模型信息; 4 x m l 与编程语言无关,开发人员可采用d o m 、s a x 等解析器技术实现x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿教师招聘:济南幼师面试常见题目详解
- 产权过户及继承知识
- 行业新:九江文员岗位招聘面试题目及技巧分析
- 小小讲解员讲解长城课件
- 商务汇报简约大气
- 职场晋升必 备:大众经理面试实战题库深度解析
- 生殖细胞的变化
- 血脂代谢机制与调控药物研究
- 细胞呼吸的过程
- 危机干预常见技术
- GB/T 45089-20240~3岁婴幼儿居家照护服务规范
- 康复治疗颈椎病
- DB36T+2031-2024高弹沥青超薄罩面施工技术规范
- 2024桥式门式起重机大修项目及其技术标准
- 【部编】人教版六年级上册道德与法治全册知识点总结梳理
- 电动汽车V2G技术
- 2023风光互补路灯设计方案
- jgj592023安全检查标准完整版
- 2022年临沧市市级单位遴选(选调)考试试题及答案
- 中专宿舍管理制度和方法
- 屁屁辅助脚本
评论
0/150
提交评论