(计算机软件与理论专业论文)模型驱动的web用户界面代码自动生成.pdf_第1页
(计算机软件与理论专业论文)模型驱动的web用户界面代码自动生成.pdf_第2页
(计算机软件与理论专业论文)模型驱动的web用户界面代码自动生成.pdf_第3页
(计算机软件与理论专业论文)模型驱动的web用户界面代码自动生成.pdf_第4页
(计算机软件与理论专业论文)模型驱动的web用户界面代码自动生成.pdf_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

山东大学硕士学位论文 摘要 随着w e b 应用程序的日益复杂化,出现了很多系统化、工程化的w e b 应 用开发方法。这些方法将传统的软件工程技术和w e b 应用程序的超媒体特性较 好的结合起来,取得了一定的成功,如在导航建模方面提供了很好的方法。然 而这些开发方法对于处理复杂问题、在开发过程中与用户交互以及代码的自动 生成等方面仍然存在着一定的局限性。 代码自动生成的研究也在不断发展,国内外研究者提出了不少方法和思路。 但是目前应用的自动生成,其生成的产品还是应用的大体框架,特别是关于行 为元素的生成方面仍不完善。 模型驱动架构( m d a ) 的出现,提高了软件开发效率,增强了软件的可移植 性、协同工作能力、可维护性以及文档编制的便利性。同时提出了一种新的代 码生成方式,通过在模型上添加转换规则来最终产生代码。这样,系统开发注 重商业逻辑的设计,而不用过多考虑实现的复杂性。结合m d a 方法出现了一 些w 曲应用建模及其系统代码生成的工具,这些工具主要注重软件内部功能的 设计和表达,缺乏对包括界面模型在内的系统整体描述。 本文采用的f m p ( f l l i l c 矗o n m o d e i p r e s e l l t 撕o n ) 模型是在总结了大量w e b 用 户界面开发模型后提出的一种面向软件工程的用户界面设计和自动生成的平台 无关模型,包括功能模型、内部模型和基于界面模板的表示模型三个部分。模 型实现了用户界面的需求表达,界面模板的使用使得用户参与了界面的设计过 程,体现了用户定制界面的要求。 本文主要讨论的问题是在a i j i 环境下根据平台无关的f 模型生成 a s p n e t 项目。采用m d a 的模型转换思想,对源模型和目标模型的内部结构 进行深入的分析后,建立从f m p 模型到a s p n e t 项目的映射结构,从而实现 代码的自动生成。 与传统的代码生成不同,本文将m d a 和软件体系结构的理论和思想引入 到w 曲应用程序的开发方法中,提高了w 曲应用程序设计模型的清晰性、重 用性和自动化程度。通过分析源模型和目标代码的结构框架,建立总体框架的 山东大学硕士学位论文 映射关系,然后就框架中的具体元素建立映射关系,使代码生成更具有层次性, 生成的代码更加结构化。这种基于m d a 的方法该过程采用n e t 2 0 0 5 环境下的 v c n e t 实现。 关键宇:w e b 应用开发;h p ;a s p n e 丁;代码自动生成 i i 山东大学硕士学位论文 a b s t r a c t w i t h 吐l ed e v e l o p m e n to fw e ba p p l i c a t i o n ,w e b 印p l i c a t i o np r o g r a m l l l i n g b e c o m e sm o r e 锄dm o r ec o m p l i c a t e d ,a1 0 to fs y s t e m a t i ca 1 1 de n g i n e e r i n gm e t t l o 出 o fw e b 印p l i c a t i o nh a v ea p p e a r e d t h e s em e 血o d sc o m b i n et h e t r a d i h o n a ls o 厅w 盯e g i n e e 渤gt e c h n o l o g y a n dm eh y p e m e d i ac h a r a c t e r i s t i co fw 曲a p p l i c a t i o n a l t l l o u 曲t l l e yh a v eg o ts u c c e s st os o m ed e g r e e ,f o re x a m p l e ,t l l e yp r o v i d eg o o d m e t h o df o rn a v i g a t i o nm o d e l i n g ,m e ys 石nh a v ed r a w b a c l ( st l l a tc 锄tb ei 弘o r e d t h e ya r el i m i t e do nd e a l i n g 谢也m ec o m p l i c a t e dp r o b l e i l l s ,m ei n t e r a c t i o n 谢m u s e r si nd e v e l o p i n gp f o c e s sa l l d 血ec o d ea u t o m a t i cg e n e r a t i o n t h er e s e a r c h e so fc o d ea u t o 】m h cg e n e r a t i o na r ea l s od e v e l o p i n gc o n s 伽1 t l y , t l l e r ea r em 锄ym e t h o d sa n di d e 勰p r o p o s e db yr e s e a r c h e r si n 锄do u t b u tt l l e p r 0 “c t i o n s o fa u t o m a t i cg e n e r a t i o nn o w a d a y s , a es t i l lt h ef a m e w o 收o f a p p l i c a t i o n s ,t h eg e i l e r a t i o no fa c t i o ne l e m e n t i ss t i l ln o tp e r f e c t t h ea p p e a r 锄c eo fm o d e l “v a r c h i t e c t l l r e ( m d a ) i m p r o v e st h ee 搿c i e n c y o fs o f t w a r ed e v e l o p m e n t ,e 1 1 | l a i l c e sm ep o r t a b i l i 饥t h ec o o p e r 撕n gc a p 曲i l i m a i n t a i n a b i l h yo fs o 竹w a r e ,a n di n c r e a s e st h ec o n v e n i e n c eo f 州矗n gd o c u m e n t s m d ap r e s e n 协an e wm e t h o df o rc o d eg e n e r a t i o n g e n e f a t i n gc o d eb ya d d i n g 仃粕s f o n l l a t i o n 九l l e so nm o d e l s s os y s t e md e v e l o p m e n t sf o c u so n 廿l ed e s i g no f c o m m e r c i a ll o 百c ,n o t 也ec o m p l e 妇哆o ff e a l i z a 土i o n s o m et o o l so fw e bm o d e l i n g a 1 1 ds y s t e mc o d eg e n e r a t i o nb 够e do nm d a 印p e a r e d m e yp a ym o r ea n e n t i o nt on l e d e s i 弘a n de x p r e s s i o no fs o f t w a r ei 彻e rf 妇c t i o n s ,b u tl a c km ed e s c r i p t i o no fn l e w h o l es y s t e m ,e gi n t e a c er n o d e l t h ef 口m o d e lr e f e r r e di n t h i sa n i c l ei sap l a t f o 珊i n d e p e n d e n tm o d e lf o f u s e ri n t e r f a c ed e s i 弘a n dc o d eg e l l e r 撕o nw h i c ho r i e n t e dt os o f t 啪f ee n g i n e e r i n g n p r o p o s e da f t e rag r e a td e a lo fr e s e a r c h e sa b o u tw e bu s e rm e r f a c ed e v e l o p i n g m o d e l sf m 口m o d e lc o n t a i n sf u n c t i o nm o d e l ,i 蚰e rm o d e la n dp t e s e n t a t i o nm o d e l , i tr e a l i z e st h er e q l l i f e m e n te x p r e s s i o no fu s e fi n t e f f a c e t h eu s eo fi n t e a c e 山东大学硕士学位论文 t e m p l a t em a k e su s e r sa n e n dt l l ep r o c e s so fi n t e r f a c ed e s i g n ,i te m b o d i e st l l e r e q u i r e m e n to fu s e ri n t e r f a c ec u s t o m i z a t i o n t h i sa n i c l em a i n l yd i s c u s s e st h ea s p n e tc o d eg e n e r a t i o nf 如mf 田m o d e l i nt h ee n v i r o n m e n to fa l a c c o r d i n gt om o d e lt r a n s f o r m a t i o no fm d a ,a f t e r a n a l y z i n gt h ei n n e r 盯c h i t e c n i r eo fs o u r c em o d e l 锄dt a 唱e t m o d e l ,、ef o 吼dn l e m a p p i n g s f r o mf m pm o d e lt oa sp n e t p r o j e c t t or e a l i z ec o d ea u t o m a t i c g e n e r a t i o n d i 虢r i n gf 而m 仃a d i t i o n a lm e n l o d so fc o d eg e n e r a t i o n ,t i l em e t h o di nm i s 枷c l ei n t r o d u c e sm d aa 1 1 ds o r 、a r ea r c h i t e c t u r et om e d e v e l o p i n go fw e b a p p l i c a t i o n s t h i sm d a - b a s e dm e t h o di m p r o v e st h el e g i b i l i t ya i l dt i l er e u s a b i l i t y , a d v a l l c e st h ea u t o m a t i o no fd e s i 盟m o d e l so fw e ba p p l i c a t i o n w ef o l l l l dm 印p i n g s o ft h ew h o l ef r 锄e 、v o r kb y 舭a l y 五n gm ei 1 1 1 1 e ra r c h i t e c t i l r eo fs o u r c em o d e la 1 1 d t a r g e tm o d e l ,t h e nf o u n dm a p p i n g so fc o n c r e t ee l e m e n t st or e a l i z ea s p n e tc o d e g e n e r a t i o nf 而mf z 江pm o d e j s ot h ec o d eg e n e r a t i o nb e c o m e sm o r es t r u c t u r i z e da 1 1 d h i e r a r c h i c 以t h er e a l i z a t i o ne n “r o n m e n ti sv cn e t k :e y w o r d s :w e ba p p l j c a t j o nd e v e j o p m e n l ;f m p ;a s p :n e t ;c o d ea u t o m a “c g e n e r a t i o n 1 f 一 原创性声明和关于论文使用授权的说明 原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研 究所取得的成果。除文中已经注明引用的内容外,本论文不包含任何其他个人 或集体已经发表或撰写过的科研成果。对本文的研究作出重要贡献的个人和集 体,均已在文中以明确方式标明。本声明的法律责任由本人承担。 论文作者签名:篡蛐 日期: 2 丑:生: 关于学位论文使用授权的声明 本人完全了解山东大学有关保留、使用学位论文的规定,同意学校保留或 向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅; 本人授权山东大学可以将本学位论文的全部或部分内容编入有关数据库进行 检索,可以采用影印、缩印或其他复制手段保存论文和汇编本学位论文。 ( 保密论文在解密后应遵守此规定) 论文作:叁蛐导师签翱塑日期弛业 山东大学硕士学位论文 第1 章引言 1 1 研究背景与意义 近几年来随着网络技术和i t l t e m e t 的迅速发展,基于w 曲的应用程序的复杂 度也逐渐增加。w e b 系统开发缺乏严格和系统的方法,大多数应用开发和管理 实践很大程度上依赖于开发人员个人的知识和经验,造成的后果是开发的w 曲 系统大多是低质量的产品。人们迫切需要系统和严密的方法来开发w 曲应用程 序。但是由于w 曲应用程序和传统应用程序相比有着本质区别,比如链接和导 航,导致传统的软件工程和方法在w 曲应用程序的开发中很难适用。 为了解决上述问题,出现了一些系统化工程化的w 曲应用开发方法,像 0 0 h d m 【“,洲【3 】,h d m 川和1 m 叫5 】【6 】【7 】【8 1 等等。综合比较以上几种方法, 它们的共同思想在于一般将w 曲系统模型分为领域模型、导航模型和展示模型, 经过概念建模、逻辑建模、物理建模和实现四个过程完成w e b 系统开发。它们 所存在的共同问题是不能对复杂问题建模、对于设计模式应用于建模中的支持 不够等等。它们的建模方法对代码自动生成有一定指导作用,但是还存在着缺 陷。上述开发方法在复杂的w e b 应用程序开发中得到广泛应用。 m o d e ld r i v e n a r c l l i t e c t i l r e ( m d a ) 【9 】是o m g 提出的新的方法学,是种独立 于特定平台和软件供应商的软件体系结构设计和开发方法,它在更高的抽象层 次上从不同视角利用不同抽象层次的模型,将系统的行为和系统的实现分离。 它为提高软件开发效率,增强软件的可移植性、协同工作能力和可维护性,以 及文档编制的规范性、有效性提供了一种新的解决方法 结合m d a 方法,近几年出现了一些w 曲应用建模及其系统代码生成的工 具。c o m p u 、张r e 公司的o p t i m a l j ,h t e r a c t i v eo b i e c t s 公司的a r c s t y l e ,m m 的 r a t i o n a ir a p i dd e v e l o p e r 是目前市场上比较成熟的基于m d a 的产品。但是 m d a 被设计为主要开发独立的系统和组件设计,主要注重软件内部功能的设 计和表达,仍然缺乏对包括界面模型在内的系统整体描述。 f 御模型【1 0 l 是一种面向软件工程的用户界面设计和自动生成的平台无关 山东大学硕士学位论文 模型,它由功能模型( f u n c t i o nm o d e l ) 、对象模型( 0 b j e c tm o d e l ) 、交互模型 ( i n t e r a c t i o nm o d e l ) 和界面模板( p r e s e n t a t i o nm o d e l ) 组成,通过几种模型的 配合实现界面的自动生成。f 模型的交互模型和界面模板提供了对w 曲软件 特性的支持,比如组合式页面的表达,导航的描述等,因此它可以实现、b 界 面自动生成。 a s p n e t 是微软n e t 框架的一部分,它提供了一种基于事件的编程模型。 这种模型的优点在于它实现了展示代码和程序代码的分离,同时它提供了很多 类似桌面控件的服务器控件,因此大大提高了w e b 应用程序开发的效率。 a s p n e t 运行于n e t 的公共语言运行时c l r ( c o m m o nl a n g u a g er u n t i m e ) 之 上,因此可以使用任何一种支持n e t 的编程语言并使用n e t 框架类库f c l ( f r a m e w o r kc l a s sl i b r a r y ) 。同时c l r 为a s p n e t 提供了良好的运行效率和 安全性,使a s p n e t 成为一种理想的w e b 应用程序开发环境。 本课题的实现环境a u i 代码自动生成系统是通过f ,模型对w e b 应用建 立平台无关模型,然后针对不同的目标平台建立平台相关模型体系结构,最终 目标是完成w 曲应用模型到目标代码的转换工作,生成w 曲应用的各种目标 代码文件,包括各种程序源代码,部署文件等。 本文的研究意义在于通过f m p 模型对w e b 应用的描述,利用f m p 模型的 平台无关性,探讨从f m p 模型到a sp n e t 框架的转换,最终实现了v s n e t 2 0 0 3 和v sn e t 2 0 0 5 环境下w e b 应用程序的代码自动生成。减少w e b 应用开发工 作量,同时便于新技术的应用。 1 2 本文的创新点 本文的主要创新点在于:将a 和软件体系结构的理论和思想引入到w 曲 应用程序的开发方法中,通过分析源模型和目标代码的结构框架,首先建立总 体框架的映射关系,然后就框架中的具体元素建立映射关系,从而实现从平台 无关的f m p 模型到a s p n e t 项目代码自动生成。这种基于m d a 的方法提高 了w 曲应用程序设计模型的清晰性、重用性和自动化程度。 山东大学硕士学位论文 1 3 本文的组织结构 本文在第二部分介绍了课题的研究现状,第三部分从代码生成的角度简要 介绍了f m p 模型的各个组成部分及其相互关系,第四部分介绍了a u i 环境对 f m 模型的实现及其代码生成机制,第五部分介绍了n e t 框架以及目标代码 生成环境a s p n e t 。第六部分介绍了模型转化和代码自动生成采用的思想,第 七部分详细介绍了a s p n e t 项目及各部分代码生成的具体实现和生成算法,第 八部分为文章的结束语,总结了本文所做的工作并指出下步需要完善的工作。 山东大学硕士学位论文 第2 章相关研究 2 1 基于模型的w e b 开发研究 在w e b 应用的开始阶段,w e b 仅作为信息中介和信息发布的平台( 简单的 网站) ,因此,所提供的工具只是集中于网页的创建和编辑,如微软的f f o n 伊a g e 等。他们都限于被动的超文本表示、网页布局和部分的导航模型,缺乏系统的、 结构化的方法以及抽象、重用的支持。随着w 曲应用的规模和复杂度日益增加, w 曲已经成为各种应用的主要平台。和传统的w 曲站点相比,w e b 应用程序不但 支持导航和浏览,而且其操作还会影响内容和导航状态。这使得w e b 应用的开 发更加复杂。目前w e b 应用的工程化系统化方法已经成为w e b 应用开发研究的 主体n 1 】。 目前w e b 应用的开发建模方法主要有以下几种:o o h d m 、i m 慢、w 曲s a 以及h d m 、w m m 等等。w e b 应用开发方法的共同点在于一般将w e b 系统模型 分为领域模型、导航模型和展示模型,经过概念建模、逻辑建模、物理建模和 实现四个过程完成w e b 系统开发。其中领域、导航、展示模型分别描述系统的 不同侧面,可以看成是w 曲模型的不同视图。领域模型描述w 曲应用中领域对 象及其关系,是导航模型的基础;展示模型描述w 曲页面的展示形式,是对导 航对象和导航行为的最终体现;而导航模型是w e b 模型区别于传统系统模型的 重要部分,描述了w 曲应用的导航特性,起着衔接领域模型和展示模型的作用。 目前现有的w e b 应用开发方法将传统的软件工程技术和w e b 应用程序的 超媒体特性较好的结合起来,取得了一定的成功。然而这些开发方法更多的是 从规范化设计的角度,而没有从工程化应用的角度出发,也具有一些不可忽视 的缺陷,主要表现在: ( 1 ) 不能对复杂功能建模。 ( 2 ) 模式支持和利用不够。 ( 3 ) 模型之间缺少清楚和自动的映射。 ( 4 ) 领域层、导航层和展示层三个层次之间的关系不密切,模型间容易出 山东大学硕士学位论文 现不统一。 ( 5 ) 界面设计大多比较简略。 ( 6 ) 缺少开发工具的支持。 ( 7 ) 缺少对非功能需求的支持,对软件体系结构重视不够。 这些缺陷妨碍了上述开发方法在复杂的w 曲应用程序开发中的广泛应用。 2 2 用户界面开发研究的现状 用户界面的开发工具在软件开发中发挥的作用是不可忽视的。开发人员使 用这种工具可以设计和实现用户界面。现在几乎所有的应用开发都要使用用户 界面开发工具。界面开发工具能减少开发人员在开发界面时的工作量,同时能 够加速界面的开发。从而可以加速系统原型的开发,促使开发人员不断改进设 计,获得高质量的用户界面。另一个好处就是使得所开发出的软件具有相似的 界面,让用户不必花费过多的力气去学习使用新系统。 到现在为止,人们已经开发出很多用户界面开发工具。使用这些界面开发 工具人们可以方便快捷地创建出用户界面。根据所查阅的大量资料,它们大致 可以分为以下几种: ( 1 ) 简易工具( e a s y t o - u s e t o o l s ) 大多数工具需要几个星期的学习时间,并且不能够移植到不同的平台。而 简易工具则与之不同,简单易学,而且可移植。例如s u i t ( m es i m p l eu s e r i i l t e r f a c e t o o l k i t ) 是一个简单的用户界面工具包,它具有简易性和可移植性, 利用这种工具,程序员可以快速构建用户图形界面。s u t 是一种p a s c a l 的用户 界面工具包。 ( 2 ) 示范工具( d e m o n s t r a t i o n a lt o o l s ) 这种工具基本上是使用示范技术( t h et e c l l i l i q u eo fd e m o n s t r a t i o n ) 来记录 动作或者创建宏,例如e m a c s 、s m a i l s t a r 等,或者使用示范技术而不需要编程 来创建特定应用的图形对象,如l a p i d a r y 。而现在人们又开始尝试使用示范技 术来开发完全的用户界面。 山东大学硕士学位论文 ( 3 ) 基于模型的工具( m o d e l b a s e dt o o l s ) 具有代表性的基于模型的工具有u i d e ( m eu s e r i n t e r f a c ed e s i 姐 e n v i r o n m e n t ) 【1 6 】、h 玎“a n o i d 【17 1 、1 a c l l c s 和m a s t e 砌n d f l 9 | 。它们通 过创建模型来分别从不同的角度描述用户界面。 ( 4 ) 智能工具( i n t e l l i g e n t t b o l s ) 智能工具。3 1 利用应用模型的一些表达方式生成界面,而不需要设计者特 意去定义界面的确切分布。这些工具有的是利用应用命令中的规约创建表达方 式和对话框,例如u o f a 和m l c k e y ,还有就是使用e r ( e n 五t yr e l a t i o n s h i p ) 数据 模型创建与界面标准一致的界面,它使用基于知识的规则描述界面的属性,如 g e n i u s 。智能工具的缺点在于缺乏其他工具的灵活性。 ( 5 ) 面向对象工具( o b l e c t 0 r i e n t e d l b o l s ) 【2 4 1 对象可以很好地表示界面上的元素,并支持它们的直接操作。对象提供了 一个很好的抽象机制,包含了状态和操作。实验表明使用面向对象语言编写的 用户界面更加易于开发和维护。对象以互操作的对象和抽象对象的形式,可以 将应用代码和用户界面分离。互操作对象实现用户界面,而抽象对象实现界面 之下的数据。 2 3 代码自动生成 2 3 1 代码自动生成的概况 代码自动生成即根据用户的规格说明由代码产生器自动生成可执行的代 码。具体地说,是以中心信息库为基础,依据各种转换规则、知识,利用库中 的可重用构件、模板将中心信息库中描述系统的规格( 或表) 转换成可执行代码。 代码自动生成的研究已经经历了一段时间。起初,这一思想提出的主要原 因是应用系统的规模越来越大,其中存在大量的重复性代码模块,使得编写与 维护的工作量很大。但是随着软件体系结构与设计模式的研究与发展,以及它 们在应用系统开发中所发挥的作用,在一定程度上减少了设计开发中重复代码 山东大学硕士学位论文 过多这一问题的影响。 传统意义上的代码生成,首先识别应用源代码中经常出现的重复性代码, 然后自动生成这些重复部分来代替手工编写的目标代码。所谓目标代码,是指 应用相关的一系列产品,例如文档,脚本,定义文件等。如果没有代码生成工 具,开发者将手工书写所有代码,虽然这样可以得到灵活性较高的产品,但是 使用代码自动生成可以降低成本,减少出错率,使可靠性更强。 随着软件工程的进一步发展,对软件开发提出了更高的要求。目前软件开 发平台多样,应用软件系统需求变化性强。因此,近年来出现了对模型驱动架 构( a ) 的研究,提出了模型化系统设计,以提高软件开发抽象层次以及代 码自动生成的工程实现。 根据代码生成器的一般性定义可以看出,代码生成器工作的不可缺少的前 提之一是必须有目标系统的信息描述,即系统的形式化描述。改进对系统的描 述对于改进代码生成器的组织结构以及代码生成效率非常重要。同时映射规则 是代码生成的原则与标准。 2 3 2 目前对代码自动生成的研究 针对代码自动生成研究的不断发展,目前在代码生成方面国内外研究者提 出了不少方法和思路。 文献 2 5 】中提出了一种基于模型的j a 、,a 代码自动生成方法。文献【2 6 中提 出了一种基于x m 的半自动化的w 曲应用代码自动生成方法。文献【2 7 】中总 结了当前代码生成器并将其分为三类,指出目前主要是基于模板的代码生成器。 它使得模板与生成器分离,增加了代码生成的灵活性,同时设计模式也被考虑 加入到代码生成中。文献 2 8 】提出了设计模式的建模及用于自动生成的描述方 式,在一定程度上增强了生成系统的可维护性,但是其组织模式的方法复杂, 模式不易于维护。 【2 9 】中提出了一种动态页面模板体系结构,使得w e b 应用的表示层次从业 务逻辑中分离出来。页面模板包括静态) 。儿文件和动态类的定义。基于) 。皿 山东大学硕士学位论文 的页面模板用来定义可配置模块。页面模板类可以用来对行为进行描述。所有 这两部分都是动态嵌入w 曲应用环境,并且与w 如应用对象结合。只要对页 面模板中的描述信息进行改变和扩充,w 曲对象的表示层次代码可以动态产生。 文献 3 0 】提出了一种半自动化的模型到应用的转化过程。通过i m 的构造 型和标记值以及0 c l 对模型进行约束。这样使模型可以自动映射到) 。儿文档。 然后将x m l 文档映射到d o m 对象。对应交互对象的d o m 对象自动从概念 d o m 对象或者其他交互d o m 对象导出。x s l t 机制将对象的逻辑表示转换为 物理表示对象。 代码自动生成还是一个不成熟的技术,受到计算机科学技术及有关科学发 展的限制,自动化系统在用户界面、功能、功效方面都不能令人满意,还需作 进一步深入工作。 2 4 模型驱动架构( m d a ) 模型驱动架构( a ) 是一个软件开发框架,它是由o m g 定义的。a 的关键之处是,模型在软件开发过程之中扮演了非常重要的角色。在如a 中, 软件开发过程是由对软件系统的建模行为驱动的。 m a 是一种基于i m 以及其他工业标准的框架。和眦相比,m d a 能够创建出机器可读和高度抽象的模型,这些模型以独立于实现的技术开发, 以标准化方式存储。因此这些模型可以被重复访问,并被自动转化为纲要,代 码框架,测试工具,集成化代码以及各种平台的部署描述。m d a 把建模语言 用作一种编程语言而不仅仅是设计语言。m d a 以一种全新的方式将技术的 系列新的趋势性技术整合到一起。这些技术包括基于组件的开发,设计模式, 中间件,说明性规约,抽象,多层系统,企业应用整合以及契约式设计。m d a 的出现,为提高软件开发效率,增强软件的可移植性,协同工作能力和可维护 性,以及文档编制的便利性指明了解决之道。 山东大学硕士学位论文 2 4 1 _ d a 的开发生命周期 a 软件的生命周期就是以模型为核心并由模型映射所驱动的过程( 图 2 1 ) 。在开发过程中应用m d a ,仍然包含了系统测试、部署这些阶段,但是分 图2 1m d a 软件开发生命周期 析、底层设计和编码以及需求描述这几个关键部分却发生了变化。a 开发的 分析阶段要抽象出与实现技术无关、并能够完整描述业务功能的核心模型 平台无关模型( p l a 曲r i i li r i d 印e n d e n tm o d e l ,p i m ) ,然后再根据某些特定的实现 技术和环境制定多种映射规则,通过编制规则利用辅助工具将p i m 转换成平台 相关模型( p l 酬f o ms p e c i a lm o d e l ,p s m ) ,最后根据具体需求和特定的实现技术 将p s m 转换成能够在特定平台上运行的代码。 m d a 的实现方法是基于p 程序自动生成技术。在m d a 中p i mp s m 以及 代码都是软件开发生命周期中的工件,它们从不同的视角描述目标系统,代表 系统不同层次的抽象,通过四个相互独立又紧密联系的模型让开发人员将焦点 从实现转移到系统架构上来。 9 山东大学硕士学位论文 2 4 2 基本m d a 框架 m d a 框架的主要元素:模型、p i m 、p s m 、语言、变换、变化定义及变换 工具。这些元素以图2 2 所示的方式融入了基本如a 框架。 图2 - 2 基本m d a 框粟 传统上,从模型到模型的转换,或者从模型到代码的变换,主要是手工完 成的。许多工具可以直接从模型生成一部分代码,但匙往往只是生成一些模扳 代码,大部分工作还是需要手工完成。模型驱动开发的主要步骤如图2 3 所示, 包含了三个模型,两个变换工具之同的协作关系。变换工具以p i m 为输入,并 把它变换成p s m 。另一个变换工具再把p s m 变换成代码。 从图2 3 中看出,模型驱动开发实现的两个关键转换是由工具支持自动完 成的。目前有不少工具,可以:络p s m 转化成代码,因为p s m 与代码已经相当 接近。模型驱动开发的准点是实现p i m 到p s m 转化的自动化。觋有的工具还 图2 3 模型驱动开发的主要步骤 没有完全将p i m 成功转换为p s m ,在许多情况下仍需要用户干预或强化p s m 描述。但是总可以从p i m 生成一个基本可运行的应用程序。 l o 山东大学硕士学位论文 模型总是以某种语言表述的。可以是i m ,也可以是自然语言,或者某种 编程语言。为了支持模型的自动转换,需要对模型或模型描述施加一定的限制 或约束。 2 4 3o g 的4 个建模层次 m d a 技术的相关概念均是o m g 的一系列标准:统一建模语言i m ,( u m f i e d m o d e l i n gl a l l g u a g e ) 【3 ”、元对象设施m o f ( m e t ao b j e c tf a c i l i t y ) 、皿元数 据交换x m 【3 习( 沮。m e t a d a t ai n t e r c h 锄g e ) 、公共数据仓库元模型c w m 【3 4 1 ( c o m m o nw a r e h o u s em e t a i n o d e l ) 。m d a 的核心标准组成了创建模式驱动一致 性系统纲要的基础,这个系统纲要完成授权、发布和管理模型的功能。 其中m o f 为m d a 的核心,它包含四个模型层次:m o 、m 1 、m 2 、m 3 。 m o f 可以被用来描述关系数据模型的建模结构,也被用来描述眦类模型的 建模结构:它还被用来描述其他种类的建模所用到的结构。m o f 是通用的、抽 象的,用于定义元模型的语言,它可以被称为m e t 锄e t 锄o d e l 或者定义元模型 的模型。 m 0 层:实例。运行的系统位于m o 层,这是实例( i n s t a n c e ) 所存在的层次。 m 1 层:系统的模型。m 1 层包含模型,比如软件系统的i m 模型。m o 层和 m 1 层之间有确定的关系。m 1 层的概念都是m o 层实例的归类,换句 话说,m o 层的元素都是m 1 层的元素的实例。 m 2 层:模型的模型。位于m 2 层的模型( m e t a m o d e l ) o 位于m 1 层的元素( 类、 属性以及其余模型元素1 本身就是m 2 层的实例,m 2 层的元素规定了 m 1 层的元素。 m 3 层:m 2 的模型。m 2 层元素可以看成是更高层m 3 层( 元元层) 的元素。 2 4 4 扩展的_ d a 框架 在m d a 中使用元建模。在m a 中, 首先,我们需要种机制来定义建模语言, 元模型之所以重要,有两个原因。 并且要求定义不能有二义性,这样 山东大学硕士学位论文 交换工具才能读写并理解模型。在m d a 中我们通过元模型来定义语言。 其次,组成变换定义的变换规则定义了用源语言表述的模型如何变换成用 目标语言表述的横型。这些规则是用源语言和目标语言的元模型来定义变换。 图2 4 扩展m d a 框架 图2 4 展示了带有元建模层次的完整的m d a 框架,图中下面一半和圈2 3 中的基本m d a 框架是一样的,上面一半则引入了定义语言的元语言。 2 4 5 基于n o 的代码生成工具 a 的出现,使代码生成有了新的思路,各种不同的基于m d a 的代码生 成工具应运丽生。c o m p u w a f e 公司的o p t i m a l j ,i n t e r a c t l v e0 b j e c t s 公司的 a r c s t y l e ,i b m 的r 撕o n a l r 印i d d e v e l o p e r 是目前市场上比较成熟的基于m d a 的产品,下藏介绍一下这几种工具: ( 1 ) o p t i m a l j c o m p u w a r e 公司的o p t i m a l j 是b u t l e r 集团评出的三种最好的m d a 工具中 的一种。它实现了a 规范,从可视化的模型中直接产生j 2 e e 应用程序的代 码:纯j a v a 开发,跨平台:支持刨建和维护自定义模式;提供平台无关、软件 提供商无关的模型,不同系统之问可以互操作,给予企业应用开发极大的灵活 性。 ( 2 ) a r c s t y l e r 山东大学硕士学位论文 m c s t y l e r 是德国i n t e r a c t i v eo b j e c t ss o f c 、a r eg m b h 公司开发的m d a 开发 软件。它遵循o m g 的m d a 规范;纯j a 、,a 开发,跨平台:支持j 2 e e 和n e t 平台;支持桥接器的动态加载。同时,它还能为现在流行的一些d e 环境生成 对应的工程文件,例如j b u i l d e r 等。 舡c s t y l e r 的核心特性是m d a c a r 缸d g e s ,它是被捆绑在一起的模型转换规 则,架构师可以定义自己的模型转换规则,并分发给项目组成员使用,给以极 大的灵活性。 ( 3 ) m mr a t i o n a j ) e m mr a t i o n a l 公司产品它支持j 2 e e 和n e t 平台。构架设计师和设计人员 可以利用r 撕o n a lx d em o d e l e r 的多模型支持,来应用模型驱动构架范例。开 发人员可以将构架模型和模式用作实施的基础,从而加快应用程序的开发速度, 使其符合他们的构架。r a t i o n a i ) 口) em o d e l e r 包含高级模式功能,使构架设计 师可以通过分析模型的自动转换来控制设计和实施。 虽然目前已经有很多尬a 的代码生成工具,但是它们都或多或少的存在 一些不足,m d a 被设计为主要开发独立的系统和组件设计,主要注重软件内 部功能的设计和表达,缺乏对包括界面模型在内的系统整体描述。同时,m d a 的复杂性使得实现相当的困难。 2 5 模型转换的相关研究 m d a 的关键在于模型转换,现有的模型转换方法总体可分为模型到代码的 转换和模型到模型的转换两种刚。 2 5 1 模型到代码的转换 ( 1 ) 基于访问者的方法( v i s i t o f _ b a s e d a p p r o a c h e s ) 基本思想是提供一些能遍历模型内部表示的访问者机制,把代码写到文本 流中。 ( 2 ) 基于模板的方法( t e m p l a t e - b a s e da p p f o a c h e s ) 山东大学硕士学位论文 目前大多数a 工具都支持基于模板的代码生成。和基于访问者的方法 相比,模板的结构更接近于要产生的代码。模板容易从实例中得到,适用于迭 代开发。 2 5 2 模型到模型的转换 ( 1 ) 直接操控方法( d i r e c t m a l l i p u l a t i o na p p r o a c h e s ) 这种方法提供一个模型的内部表示加上一些操控模型的a p i ,一般实现为 一个面向对象的框架。用户必须用编程语言手工实现转换规则和进度安排。 优点:应用于处理和访问a p i 的语言可以是一种普通语言( v b ,j a 、,a ) ,开 发者不需要进行特别的培训。 缺点:是最底层的方法。转换时缺乏合适的高层抽象,在实现转换方面很少 为用户提供指导,代码编写耗费时间,且不易理解。所有的基础工作都要靠用 户手工完成。 ( 2 ) 基于图转换的方法( g r a p h t r a n s f o n n 撕o n b a s e d a p p r o a c h e s ) 采用图转换的理论,在( 类似i m 模型图) 有类型、有属性的、带有标 号的图上操作。图转换规则包含l h s 图模式和r h s 图模式。在模型中找到匹 配l h s 的部分后,就用r h s 模式替换。l h s 部分通常还包括条件和一些附加 的逻辑来计算目标属性的值。 图转换定义【3 6 】: 一个模型转换系统是一个三元维m 了s = ( i n i t ,r c f g ) ,并带有一个或多个 元模型层( 或类层) t y p eg r a p h ( t g ) 作为参考,1 1 1 i t 是初始图,r 是一系列的 模型转换规则( 与t g 一致) ,c f g ( c o n 仃o lf l o wg f a p h ) 表示相应的控制流( t r y , f o r a l l ,柚d l o o p ) 。转换规则r u l e = ( l h s ,r h s ,c o n ) ,c o n 表示规则的使用条件。 规则的应用是指对一个模型图m ( 用户的u m lm o d e l ) ,通过用右边的模 式替换左边的模式来重写模型,这是通过以下几个方面实现的: ( a ) 在m 中寻找l h s 的一个匹配( 图模式匹配) ( b ) 检查规则应用的条件c o n 山东大学硕士学位论文 ( c ) 移除图m 中与l h s 相匹配但不与r h s 匹配的部分 ( d )粘贴r h s 和上下文图( t 1 1 ec o n t e 嫩黟印h ) 得到新模型m 。 完整的模型转换过程是对一个初始图应用一系列的转换规则( 微观步骤) , 这些转换规则在具体的模型中按照层次控制流图中的相应语义( 宏观步骤) 来 执行。 这种方法有很强的理论基础,但由于转换进度安排和规则应用

温馨提示

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

评论

0/150

提交评论