(计算机科学与技术专业论文)模型驱动体系结构的剖析及应用.pdf_第1页
(计算机科学与技术专业论文)模型驱动体系结构的剖析及应用.pdf_第2页
(计算机科学与技术专业论文)模型驱动体系结构的剖析及应用.pdf_第3页
(计算机科学与技术专业论文)模型驱动体系结构的剖析及应用.pdf_第4页
(计算机科学与技术专业论文)模型驱动体系结构的剖析及应用.pdf_第5页
已阅读5页,还剩54页未读 继续免费阅读

(计算机科学与技术专业论文)模型驱动体系结构的剖析及应用.pdf.pdf 免费下载

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

文档简介

浙江大学硕士学位论文 ,摘要y4 2 卜3 g ,3 5 。 在计算机领域,相对于硬件技术的突飞猛进,软件技术发展的严重滞后已是 一个不争的事实。如何为软件的工业化大生产创造必要的技术条件和生产模式成 为软件工程研究的当务之急。 8 0 年代软件工程领域曾经出现过计算机辅助软件工程( c a s e ) 的热潮,人 们希望依靠c a s e 来实现工业化大生产。然而早期的努力没有获得成功,现在 已经没有人再提“无程序员编程”了。 希望往往在绝望中孕育成长。随着面向对象技术和组件技术的逐渐成熟,人 们期望能像工业领域大量使用标准件生产产品那样,大量重用组件来“装配”软 件。然而这种生产模式有几个根本性的问题没有得到解决,因此大规模的“装配” 软件生产还是一个遥远的梦想。 虽然面向对象技术结出的一个果子组件技术,并不那么好吃,但它的另 一个果实面向对象建模技术却越来越成熟。对象管理集团( o m g ) 于2 0 0 1 年 7 月推出的模型驱动体系结构( 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 ) 草案是建模技 术发展史上的一个里程碑。这个体系结构的提出,带给软件结的影响将是深远的, 很可能就是软件业新篇章的序曲。 本文对m d a 的产生背景、核心技术以及互操作模型框架做了深入剖析,并 对m d a 的模型框架做了一定的扩展。以此为基础,在一个软件系统的开发中应 用了m d a 和核心技术,采用了扩展m d a 的开发模式,收到了良好的效果。 关键词:模型驱动体系结构,元对象设施,像一建模语言,x m l 元数据交 换,模型驱动并发模茸,领窍国关元模型,可扩展标记语言,可扩展样式单语言 , 7 第1 页 h f - ji a b s t r a c t i nt h ec o m p u t e rs o c i e t y , c o n t r a s t e dc l e a r l yw i t h t h er u s ho ft h eh a r d w a r e t e c h n o l o g y , i t su n a r g u a b l et h a tt h es o f t w a r et e c h n o l o g yh a sl a g g e db e h i n d t h eu r g e n ta f f a i ro fs o f t w a r ee n g i n e e r i n gr e s e a r c h i sh o wt o p r o v i d et h e n e c e s s a r y t e c h n i c a lc o n d i t i o na n d p r o d u c t i v e m o d ef o rt h ei n d u s t r i a l i z e d p r o d u c t i o no f s o f t w a r e i nt h ee a r l y8 0 s ,t h e r eh a sb e e nac a s eu p s u r g e ,w h i c hw a se x p e c t e dt o r e a l i z et h ei n d u s t r i a l i z e dp r o d u c t i o no fs o f t w a r e b u ti t s f a l i e d n oo n ew i l l m e n t i o nt h e “n op r o g r a m m e rp r o g r a m m i n g ” h o p eo f t e ng r o w sb yt h ed e s p a i r - w i t ht h em a t u r i n go ft h eo b j e c t - o r i e n t e d t e c h n o l o g y a n dc o m p o n e n tt e c h n o l o g y ,i t s i m a g e dt h a t s o f t w a r ec a nb e “a s s e m b l e d ”w i t hah u g e q u a n t i t yo fr e u s a b l ec o m p o n e n t s b u t ,t h e r ei sa l w a y s b u t b e c a u s e o fs e v e r a lu n s o l v e de s s e n t i a l p r o b l e m ,t h el a r g e s c a l e a s s e m b l i n gs o f t w a r ep r o d u c t i o ni ss t i l la d r e a m w h i l ea na p p l e t h ec o m p o n e n tt e c h n o l o g y if r o mt h eo ot e c h n o l o g y t r e ei sn o t t e s tw e l l ,a n o t h e ro n e 。0 0m o d e l i n gt e c h n o l o g yi sm a t u r i n gd a yb yd a y t h e m o d e ld r i v e na r c h i t e c t u r e ( m d a ) p r e s e n t e db yo m gi n j u l y2 0 0 1 ,w a sa l a n d m a r ko ft h eh i s t o r yo fm o d e l i n gt e c h n o l o g y i tw i l lh a v eaf a r - r e a c h i n g i m p a c t o ft h es o f t w a r es o c i e t y m a y b ei t sj u s tt h eb e g i n n i n go fan e w a g e t h i st h e s i sm a d ea na n a t o m yo ft h eb a c k g r e u n d ,c o r et e c h n o l o g ya n dt h e f r a m e w o r ko fm d a s o m ee ) ( i e n s i o n sw e r eb u i l to nm d a b a s e dt h o s ew o r k s , t h ec o r et e c h n o l o g ya n de m e n d e dm d a d e v e l o pm o d e w a se x p l o i ti nar e a l s o f t w a r ed e v e l o p m e n t a g o o de f f e c tw a s m a d e k e yw o r d s = 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 e t ao b j e c tf a c i l i t y ( m o f ) , x m lm e t a d a t ai n t e r c h a n g e ( x m i ) ,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 o d e l d r i v e n d e v e l o pm o d e ,d o m a i ns p e c i f i e d m e t am o d e l ,e x t e n s i b l em a r k u p l a n g u a g e ( x m l ) ,e x t e n s i b l es t y l e s h e e tl a n g u a g e ( x s l ) 第2 负 浙江大学硕士学位论文 1 绪论 以计算机技术为代表的信息技术对人类社会已经产生了深刻的影响,随着网 络的发展,这种影响的蔓延呈现出愈演愈烈的趋势。社会对于信息的需求似乎永 远也得不到满足。计算机硬件遵循摩尔定律稳步发展,网络的发展则超越了摩尔 定律,然而与之不相协调的是,计算机软件的生产一直没有成熟起来,面对工业 化的需求,绝大多数软件还是通过手工艺阶段的生产模式开发的。 对于软件到底是一门工程还是一门艺术,软件业界一直有激烈的争论。但决 定软件命运的实际上是对软件的需求。在早期阶段,软件的需求量并不大,而且 运行软件的计算机设备价格昂贵。因此软件确实是- - f l 艺术,需要程序员的精雕 细琢,以提高软件的执行效率。但随着计算机的普及,形势发生了变化,计算机 设备的价格成百上千倍地下降,对软件的需求量也呈现出爆炸式的增长。这种变 化和工业革命早期从手工业转向机器大生产的情形极其类似。人们迫切需要找到 一种生产软件的机器以及和这种机器相配套的生产模式以满足工业化的软件需 求。 软件工程就是研究如何以工程化的方法来生产软件的一门学科。软件工程学 科的研究内容主要包括:软件开发模型软件开发方法,软件过程,软件工具, 软件开发环境,计算机辅助软件工程( c a s e ) 以及软件经济学等。其中,c a s e 和软件工具,软件开发环境共同构成生产软件的机器设备,软件开发方法则负责 指导生产软件的工艺,软件开发模型就是软件的生产模式,软件过程则针对软件 生产过程的管理,而软件经济学则相当于软件生产的成本效益分析。而在这些研 究内容中,机器设备和生产模式是决定其他因素的关键。 在8 0 年代,计算机辅助软件工程就试图为软件生产提供一个生产线,而同 时提出的诸多软件开发模型则形成了软件的生产模式。这些软件生产工具和生产 模式都建构于结构化分析的基础之上。当时人们认为结构化分析是完美的,可以 对任何复杂的系统进行建模,甚至很多人提出了无程序员编程,即只需要对系统 进行结构化的建模,就可以通过c a s e 工具自动生成全部的可执行代码。 8 0 年代后期随着p c 的兴起,计算逐渐从大型计算机逐渐向p c 机和u n i x 工作站转移,而大量为c o b o l 开发的c a s e 工具由于没有适应变化逐渐消亡。 9 0 年代初,人们不再把自己的产品叫做c a s e 工具,而是改名为可视化建模工 具,因为c a s e 死了( c a s ei sd e a d ) 。 9 0 年代是面向对象的年代。在软件工程领域,涌现了一大批面向对象的技 术,面向对象可视化建模,面向对象软件体系结构,面向对象软件设计方法,甚 至还有面向对象软件工程的说法。 第5 吹 浙江大学硕士学位论文 9 0 年代后期,在面向对象基础上发展起来的组件技术逐渐成熟,“像用芯片 组装计算机那样用组件来组装软件”的说法盛行一时。组件的出现的确使得软件 重用提升到一个新的层面,但是基于组件的软件重用并没有像人们所预计的那样 大规模的铺开,绝大多数软件还是必须从头开始,而不是可以由随处可得的组件 搭建而成。这里有着具体技术的问题,但更大程度上还是由于一些深刻的原因造 成的。 与组件技术同时成熟起来的还有面向对象建模技术。9 0 年代初期,各种各 样的面向对象建模方法层出不穷,甚至爆发了“方法大战”。自从几个主要的面 向对象模型统一成为u m l ,面向对象建模领域有了标准。近几年,更出现了以 m o f 为代表的元元模型。这标志着面向对象建模技术已经逐渐走向成熟。 m d a 的推出标志着软件业界对模型价值的重新定位,它将不再只是扮演软 件开发的配角,而是作为核心贯穿整个开发的始末。这种以模型为核心的开发将 使软件的面貌以及生产软件的模式都大为改观。 早期的软件开发是软件开发人员根据问题的需要直接编制代码来进行实现, 如图1 1 所示。 图1 - 1 由于解决的大多是数学性质的问题,这样的开发模式能够很好地完成任务。 然而随着计算机硬件的发展和软件应用领域的扩展,程序员们发现,这样的开发 方法存在两个问题: 1 、当要把软件移植到新型的计算机上时,原有代码根本不能运行,必须 重写代码来完成那些早已在旧机型上实现的功能。 2 、需求不再仅仅是单纯的数学计算,要理解复杂的需求并用代码来实现 越来越困难。 第6 页 浙江大学硕士学位论文 1 1 。1 抽象 第一个问题实际上是一个平台抽象的问题。由于代码必须针对具体的硬件环 境进行编制,换句话说,代码是在假设存在一个特定的硬件环境的条件下进行编 制的,因此,当硬件环境发生了变化,也就是说,上述的假设不再成立的时候, 代码自然就不能正常工作了。 为了给开发人员提供抽象度更高的开发平台,屏蔽具体的平台细节,多年来 软件工作者做出了不懈的努力,其中包括:高级语言,操作系统,j a v a 虚拟机, 分层网络协议,分布式组件技术。 高级语言屏蔽了各种计算机机器码的差别,使程序员不必为每种计算机单独 编制代码。操作系统则为软件提供了文件、存储、进程等抽象的概念,使程序员 有能力编制更为复杂的程序。但操作系统在提供了一致的抽象平台的同时,又造 成了另一种差别程序依赖于具体的操作系统,对于不同的操作系统,即使在 同样的硬件环境下运行,软件也不能通用。为了能够达到“一次编写,随处运行” 的效果,j a v a 虚拟机在不同的操作系统和硬件平台上构建起统一的运行环境, 完成了这一更高级别的抽象工作。 然而问题并未就此终止,网络的出现使得计算环境从单机转移到了网络。对 网络细节的屏蔽成为软件工作者另一个努力的方向。在这方面取得的一个重大成 就是分层网络协议。分层网络协议将纷繁复杂的硬件差异和具体实现屏蔽在一层 层的协议内部,高层协议在低层协议所提供的抽象平台基础上实现。程序员不必 关心低层协议是如何实现的。但尽管如此,主流的s o c k e t 编程还是太复杂,从 而逐渐被分布式对象通讯技术所取代。从分布式对象通讯技术衍生出的来的分布 式组件对象技术,虽然在消息传递、事务控制、安全性等方面提供了很多服务, 使得分布式对象编程更加简化,但正如操作系统一样,它也带来了新的差别 各种不同的分布式组件对象技术互不兼容,不但是代码不能通用,甚至相互的操 作也不行。 1 1 2 失配 第二个问题是解决域和问题域的失配问题。 传统语言,包括汇编、c 、f o r t r a n 都是数学型的,因此对于数学型的问 题,比较容易在解决域构造出代码来解决需求。对于相对复杂的问题,通常的做 法是使用多个函数和子函数来将大问题拆分成若干个子问题。绝大多数的分解是 在解决域上的上下文中进行的,如图1 2 所示 第7 页 浙江大学硕士学位论文 f 飞 一 图1 - 2 到了八十年代,软件要解决的问题越来越复杂,结构化分析和设计方法随之 出现。结构化分析将问题分析和建模从解决域转移到了问题域( 如图1 3 ) 。这 当然是一个进步,但失配依然存在:问题域模型和解决域模型( 计算机语言) 的 语法和语义都截然不同。 r f 、 r 需求模型 问题域 厂夺 、 图1 - 3 幸运的是与此同时,面向对象技术从一种编程语言s i m u l a 的概念中开始 萌芽。s i m u l a 是一种用于问题仿真的语言,其主要思想是将现实世界中的概念 用于编程语言。依据这种思想,问题域模型和解决域模型可以由同一种概念来建 模( 如图1 - 4 ) 。这种思想就是面向对象编程的开端。 第8 负 浙江大学硕士学位论文 图1 - 4 虽然面向对象技术缓解了问题域和解决域的失配问题,但并没有完全解决。 因为特定的领域的模型要完全使用面向对象的基本元素来进行建模,其复杂度和 与领域概念的异构性将使得领域专家难以接受,以至于削弱了模型交流需求和验 证设计的功能。 1 2 中间件技术 1 2 1 中间件的定义 中间件( m i d d l e w a r e ) 是基础软件的一大类,属于可复用软件的范畴。顾 名思义,中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、 网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提 供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。 在众多关于中间件的定义中,比较普遍被接受的是i d c 表述的:中间件是 一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之 间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通 信。 i d c 对中间件的定义表明,中间件是一类软件,而非一种软件;中间件不仅 仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,最 突出的特点是其网络通信功能。 1 2 2 中间件的产生和发展 最早具有中间件技术思想及功能的软件是i b m 的c i c s ,但由于c i c s 不是 分佃式不境的产物,因此人们一般把t u x e d o 作为第个严格意义上的中川件产 品。t u x e d o 是1 9 8 4 年在当时属于a t t 的贝尔实验室丌发完成的,但由于分 第9 页 浙江大学硕士学位论文 布式处理当时并没有在商业应用上获得像今天一样的成功,t u x e d o 在很长一段 时期里只是实验室产品,后来被n o v e l l 收购,在经过n o v e l l 并不成功的商业推 广之后,1 9 9 5 年被现在的b e a 公司收购。尽管中间件的概念很早就已经产生, 但中间件技术的广泛运用却是在最近1 0 年之中。b e a 公司1 9 9 5 年成立后收购 t u x e d o 才成为一个真正的中间件厂商,i b m 的中间件m q s e r i e s 也是9 0 年代 的产品,其它许多中间件产品也都是最近几年才成熟起来。 1 - 2 _ 3 中间件的作用 随着计算机技术的发展,j t 厂商出于商业和技术利益的考虑,各自产品之 间形成了差异,技术在不断进步,但差异却并没有因此减少。计算机用户出于历 史原因和降低风险的考虑,必然也无法避免多厂商产品并存的局面。 于是,如何屏蔽不同厂商产品之间的差异,如何减少应用软件开发与工作的 复杂性,就成为技术不断进步之后,人们不能不面对的现实问题。 显然,由一个厂商去统一众多产品之间的差异是不可能的,而单独由计算机 用户在自己的应用软件中去弥补其中的大片空档,由于技术深度和技术广度的要 求,必然也是勉为其难。于是,中间件应运而生。中间件试图通过屏蔽各种复杂 的技术细节使技术问题简单化。 在中间件产生以前,应用软件直接使用操作系统、网络协议和数据库等开发, 这些都是计算机最底层的东西,越底层越复杂,开发者不得不面临许多很棘手的 问题,如操作系统的多样性,繁杂的网络程序设计、管理,复杂多变的网络环境, 数据分散处理带来的不一致性问题、性能和效率、安全,等等。这些与用户的业 务没有直接关系,但又必须解决,耗费了大量有限的时间和精力。于是,有人提 出能不能将应用软件所要面临的共性问题进行提炼、抽象,在操作系统之上再形 成一个可复用的部分,供成千上万的应用软件重复使用。这一技术思想最终构成 了中间件这类的软件。 世界著名的咨询机构s t a n d i s h g r o u p 在一份研究报告中归纳了中间件的十 大优越性: 缩短应用的开发周期 节约应用的开发成本 减少系统初期的建设成本 降低应用开发的失败率 保护已有的投资 简化应用集成 减少维护费用 第1 0 负 浙江大学硕士学位论文 提高应用的开发质量 保证技术进步的连续性 增强应用的生命力 具体地说,中间件屏蔽了底层操作系统的复杂性,使程序开发人员面对一个 简单而统一的开发环境,减少程序设计的复杂性,将注意力集中在自己的业务上, 不必再为程序在不同系统软件上的移植而重复工作,从而大大减少了技术上的负 担。 中间件带给应用系统的,不只是开发的简便、开发周期的缩短,也减少了系 统的维护、运行和管理的工作量,还减少了计算机总体费用的投入。s t a n d i s h 的调查报告显示,由于采用了中间件技术,应用系统的总建设费用可以减少5 0 左右。在网络经济大发展、电子商务大发展的今天,从中间件获得利益的不只 是t 厂商,f t 用户同样是赢家,并且是更有把握的赢家。 其次,中间件作为新层次的基础软件,其重要作用是将不同时期、在不同操 作系统上开发应用软件集成起来,彼此像一个天衣无缝的整体协调工作,这是操 作系统、数据库管理系统本身做不了的。中间件的这一作用,使得在技术不断发 展之后,我们以往在应用软件上的劳动成果仍然物有所用,节约了大量的人力、 财力投入。 1 2 4 中间件的新问题 中间件的本意是要屏蔽不同厂商产品之间的差异,然而具有讽刺意义的是, 中间件本身却创造了新的差异。常见的中间件技术诸如c o r b a ,e j b , x m l s o a p ,c o m + ,n e t ,面向消息中间件等,不能够互相兼容,要在它们 之间建立联系,虚要耗费大量的时间和金钱。随着时间的推移,以单个技术垄断 取代多种技术并存的希望变得极其渺茫,因为在现有平台上已经投入了大量的资 金,要迁移到新的平台将重新耗费大量财力物力。 在需求的层面,经济全球化,以及价值链和现代物流等新的企业运营模式要 求企业各个部门之间的应用以及企业内部和其商业伙伴之间的应用融合在一起, 实现信息共享。而这些应用往往是建立在不同的中间件技术基础上的。不仅如此, 随着技术的发展,中间件平台的迁移是必然的事,这就提出了新的问题:如何能 够将不同中间件平台上的应用以一种简单易行的方式集成起来,并且在应用边界 变化以及中间件平台迁移的情况下保护既有投资。m d a 正是针对这个问题提出 的一个解决的框架。 浙江大学硕士学位论文 1 3 面向对象建模技术 建模对于开发复杂软件系统的重要性在许多论著中都有描述,此处不再赘 述。随着面向对象技术的发展,面向对象建模技术作为其中的一个重要的组成部 分也逐渐成熟。 1 3 。1 u m l 的产生和发展 公认的面向对象建模语言出现于7 0 年代中期。从1 9 8 9 年到1 9 9 4 年,其数 量从不到十种增加到了五十多种。在众多的建模语言中,语言的创造者努力推崇 自己的产品,并在实践中不断完善。但是,o o 方法的用户并不了解不同建模语 言的优缺点及相互之间的差异,因而很难根据应用特点选择合适的建模语言,于 是爆发了一场“方法大战”。9 0 年代中,一批新方法出现了,其中最引人注目的是 b o o c h1 9 9 3 1 1 6 】、o o s e 1 7 1 和o m t 1 8 】等。 众多的建模语言在功能上各有千秋。虽然大多类同,但仍存在某些细微的差 别,极大地妨碍了用户之间的交流。面对众多的建模语言,用户由于没有能力区 别不同语言之间的差别,因此很难找到一种比较适合其应用特点的语言。因此在 客观上,极有必要在精心比较不同的建模语言优缺点及总结面向对象技术应用实 践的基础上,组织联合设计小组,根据应用需求,取其精华,去其糟粕,求同存 异,统一建模语言。 1 9 9 4 年1 0 月,g r a d yb o o c h 和j i mr u m b a u g h 开始致力于这一工作。他 们首先将b o o c h9 3 和o m t - 2 统起来,并于1 9 9 5 年1 0 月发布了第一个公开 版本,称之为统一方法u mo 8 ( u n i t i e dm e t h o d ) 。1 9 9 5 年秋,o o s e 的创始 人i v a r j a c o b s o n 加盟到这一工作。经过b o o c h 、r u m b a u g h 和j a c o b s o n 三人 的共同努力,于1 9 9 6 年6 月和1 0 月分别发布了两个新的版本,即u m l o 9 和 u m l 0 9 1 ,并将u m 重新命名为u m l ( u n i f i e dm o d e l i n gl a n g u a g e ) 。 1 9 9 6 年,一些机构将u m l 作为其商业策略已日趋明显。u m l 的开发者得 到了来自公众的正面反应,并倡议成立了u m l 成员协会,以完善、加强和促进 u m l 的定义工作。当时的成员有d e c 、h p 、i l o g i x 、i t e l l i c o r p 、旧m 、i c o n c o m p u t i n g 、m c is y s t e m h o u s e 、m i c r o s o f t 、o r a c l e 、r a t i o n a ls o f t w a r e 、t i 以及u n i s y s 。这一机构对u m l1 0 ( 1 9 9 7 年1 月) 及u m l l 1 ( 1 9 9 7 年1 1 月 1 7 同) 的定义和发布起了重要的促进作用。 u m l 是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它融 入了软件: 程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象 的分析与设计,还支持从需求分析丌始的软件丌发的全过程。 浙江大学硕士学位论文 在美国,截止1 9 9 6 年1 0 月,u m l 获得了工业界、科技界f n f e 用# 的广泛 支持,已有7 0 0 多个公司表示支持采用u m l 作为建模语言。1 9 9 6 年底,u m l 已稳占面向对象技术市场的8 5 ,成为可视化建模语言事实上的工业标准。1 9 9 7 年1 1 月1 7 日,o m g 采纳u m l1 1 作为基于面向对象技术的标准建模语言。 1 3 2 面向对象元元模型 有许多领域有着自己的特征,用通用模型建模效率不高,也很难得到领域内 的认同。因此出现了许多面向特定领域的建模语言【4 】【7 】【8 】。这些建模语言虽然 满足了特定领域的建模需求,但是在需要和其它系统进行交互的情况下,在模型 的层次上进行表达就十分困难了。 对模型进行定义、验证以及提供模型级交互性的需求催生了元元模型。元元 模型就是对元模型进行定义的一种模型。如表1 - 1 所示,这种模型架构是建立 在四层元数据体系结构 9 】基础上的。 层次例子代表 元元模型 m e t a - m e t a - m o d e lm o f ( m e t a m e t a - m o d e l ) m 3 元模型 m e t a c l a s s ( “r e c o r d ” u ml _ ( m e t a - m o d e l ) 【m e t a a t t r ( “n a m e , s t r i n g ) ,c w m m 2 m e t a a t t r ( f i e l d s , l i s t ) 】) m e t a c l a s s ( “f i e l d ”, f m e t a a t t r ( “n a m e , s t r i n g ) m e t a a c 【r ( “t y p e ”,m e t a d a t a t y p e ) | ) 模型( m o d e l ) r e c o r d ( “t e a c h e r 。,【f i e l d ( “n a m e , s t n n g ) 使用u m l 建 m 1 f i e l d ( “a g e , n u m b e r ) )的一个模型 信息( i n f o r m a t i o n ) t e a c h e r ( “z h a n g w e i , 2 9 ) 具体数据 m o t e a c h e r ( “h e d o n g , 4 0 ) 表1 1 四层元数据体系结构 理论上,还可以有元元模型的元模型,但对于满足当前的建模需要,四层结 构已经足够完备了。 当我们用某一种表达式来表达信息的时候,信息实际上是包含在两个组成部 分中。已t e a c h e r ( “z h a n g w e r , 2 9 ) 这个表达式为例,”z h a n g w e i , 和”2 9 ”包含了一 部分信息,而”t e a c h e r ”则包含了另一部分信息。正是由于后者所包含的信息j 使得前者包含的信息真f 可以被解释为有意义的名字和年龄。因此一个表达式所 浙江大学硕士学位论文 包含的信息包括d a t a 和m e t a d a t a 两部分,而m e t a d a t a 的具体定义则有m o d e l 这一层给出。以此类推,m e t a d a t a 的表达式所表达的信息同样分为m e t a - d a t a 和m e t a m e t a d a t a 两部分,而m e t a m e t a d a t a 的定义由m e t a m o d e l 这一层给 出。最后的m e t a m e t a m o d e l 这一层是自定义的。具体的内容将在介绍m o f 的 具体章节中给出 元元模型的出现带来了多方面的进步: 1 、提供了定义元模型的统一语言。 2 、为元模型和模型的严格检查提供了基础 3 、为基于元数据的互操作提供了基础 1 4 开发模式的演化 1 4 1 开发模式的本质特征 软件的开发模式是一个比较模糊的概念,在这里很难给出一个精确的定义。 本文仅给出开发模式的几个本质特征以便于进一步进行讨论: 1 、 开发的阶段划分。 开发分为哪几个阶段进行,每个阶段主要完成什么任务: 2 、各阶段开发的出发点。 在各个开发阶段的开始,有什么可以利用的成果和开发工具, 开发活动所针对的对象是什么; 3 、各阶段开发成果的表现形式。 在各个开发阶段结束的时候,开发成果以那种形式表现出来。 1 4 2 。无模式的开发 人世上本来没有路,走的人多了,也就成了路。 最初的软件开发谈不上什么开发模式,为数甚少的天才程序员针对某个具体 的计算问题用寥寥可数的几种机器指令编制代码,这些代码除了他们自己没有别 人能够读懂。 这个时期如果说有开发阶段的话,就只有一个编码阶段。在这个阶段开始的 时候,除了少数的几个机器指令以外,没有任何可以利用的成果。这个阶段结束 的时候所有的成果就是天书一样的代码。 在这一时期,一段代码就是一个创造发明。除了丌发者自己,没有人会想要 去利用别人曾经编制的代码看懂段代码比自己编写要费力得多。 第1 4 负 浙江大学硕士学位论文 在这个阶段,软件基本上不存在重用。软件的抽象也提不上,因为程序员在 使用世界上粒度最小的两个概念在进行编程,这两个概念就是o 和1 。( 在另一 种意义上来说,o 和1 却是最为抽象的概念,因为它们的组合可以代表世界上任 意复杂的事物) 随着汇编语言的出现,完成某个完整功能的代码可以被写成一个过程,这些 过程可以有一个能被人读懂的名字。从这时起人们开始想要重用以前写过的一些 过程以提高开发的效率。并且,可调用过程成为最初的软件抽象平台。因为一个 过程提供了一个抽象的功能,屏蔽了实现的细节。 汇编语言使得无模式的开发逐渐在历史的进程中消亡。 1 4 3 基于结构化方法的开发模式 操作系统和高级语言的出现大大改变了软件开发的面貌,程序员开始有了大 量的库函数和系统功能调用。许多通用的功能都不必由自己来编码实现。 在这一阶段,软件的重用主要是集中于库函数。软件的抽象由操作系统来提 供。但是早期很少有可以用在不同硬件设备上的操作系统,因此实际上使用于一 种硬件平台上的软件很难移植到其他硬件平台。 程序员的工具先进了,但他们没有变得更轻松,而恰恰相反,他们发现有更 多的软件在等着他们开发。这些软件的复杂度比早期的软件要大得多。而且,软 件所要完成的功能再不是仅仅局限于数学计算,而是扩展到商务和工业等等领 域。这些领域的问题不仅仅是解方程和模拟曲线,很难用计算机语言函数调用的 方式去模拟实现。 为了应付越来越复杂的问题,计算机科学家开始将目光投向问题域,试图将 复杂的问题用标准的方法分解成多个简单的问题,然后再用软件逐个解决,这种 方法就是结构化方法。这些方法的代表包括e r 图、数据流图、数据字典、流程 图。 随着结构化方法的出现,软件开发逐渐转向有组织有计划的开发模式。这些 开发模式中有代表性的是瀑布模型。 在瀑布模型中,开发过程被划分为系统调研、可行性分析、需求分析、总体 设计、详细设计、编码、测试、维护几个阶段。 在编码阶段以前,每个阶段的开始都基于上一阶段的半结构化文档以及一些 非形式化的原理和启发式规则,工作的对象是需要使用这个软件的系统以及可以 借鉴的其它软件。可以利用的工具是一些以连线和框图组成的简单图表。这些图 表通常都是独立的、无组织的和缺乏严格语法定义的。用户不熟悉这些图表,和 丌发人员之问的交流存在通信鸿沟。没有有效的手段来验证这些图表本身的合法 浙江大学硕士学位论文 性,更无法验证它们之间是否存在矛盾。每个阶段的产物也同样是一些语义不清 的、零散的、半结构化的文档。 可以这样说,这些需求分析和设计文档都是手工业时代的工艺品,而不是工 业化时代的工业产品。针对同样的系统,采用同样的分析设计工具和分析设计原 则,不同的分析设计人员得到的产物会大相径庭。对于同样的文档不同的编码人 员也经常会有不同的解释。 因此,到了编码阶段,程序员会发现,完全根据这些分析设计文档进行开发 是不现实的,因为还有不少的系统细节没有被定义清楚,甚至一些设计文档会相 互矛盾。程序员依旧要把需要使用这个软件的系统列为工作的对象之一,而文档 通常只是作为理解系统的辅助材料被使用。 正是由于这些文档的质量无法得到保证,因此这些所谓的模型无法重用,只 能重头开始建立,软件的重用仅仅限于库函数。 1 4 4 面向对象的开发模式 面向对象技术的出现,使软件分析和设计人员可以用类似现实世界的方式去 描述和设计系统。面向对象方法的出现,使得计算机软件的问题空间和解空间首 次出现了融合的契机,失配问题得到一定的缓解。 面向对象的开发模式是以对象建模为中心,分为面向对象分析、面向对象设 计、面向对象实现三个主要阶段。 面向对象分析阶段主要的工作是抽取和整理用户需求并建立问题域精确模 型。分析阶段可以利用的工具是一些定义清晰的通用建模语言和与之配套的建模 方法,例如u m l 。工作的对象是问题域。产生的结果是对问题域模型。 面向对象设计是把分析阶段得到的需求转变成抽象的系统实现方案。这一阶 段可以利用的成果是分析阶段得出的问题域模型。使用的工具也是建模语言和设 计原则。工作的对象是解决域。产生的结果是抽象的系统实现方案。 面向对象实现主要包括两项工作:用程序实现面向对象设计的方案并进行调 试和测试。这一阶段可以利用的成果是设计阶段得出的解决域模型。使用的工具 是面向对象语言,工作的对象是程序,产生的结果是面向对象代码。 面向对象的建模工具克服了结构化分析方法不严格的缺陷,使用u m l 进行 建模可以得到相当精确的模型,这些模型表达了系统各个层面的特征,相当的全 面。这些模型在类似的系统开发中可以得到重用。 但面向对象开发模式也同样存在着缺点: 1 、 对于特定领域的用户来讲,类、继承、活动图、时序图之类的术 语还是相当陌生。为了定义精确的语义,u m l 使用了很多很细的 浙江大学硕士学位论文 概念,这些概念一般的开发人员要想全面掌握都相当困难,对用 户来讲更是如此。因此使用通用建模语言建立的问题域模型,很 难得到用户的有效检验。 在设计、实现这两个阶段,上一阶段的成果仅仅是用来对本阶段 的工作做参考,完全依靠人工来阅读和使用这些成果,效率比较 低,成果的利用率也不高。 在设计和实现阶段可以重用一些已有的对象,但是由于对象的功 能语义和外部约束条件没有一个标准的方法加以描述,所以实际 很难搜寻到可以重用的对象。 1 5 本文的主要内容 1 5 1 本文的主要工作 m o d e ld r i v e na r c h i t e c t u r e 的提出是o m g 对于互操作问题提供的一条新的 解决途径。本文对这一新的软件体系结构作了深入的剖析,针对m d a 中存在的 问题提出在模型和开发模式两方面对m d a 进行扩展。在此基础上在一个软件开 发项目里应用了了m d a 的核心技术和扩展开发模式,获取了应用m d a 的实践 经验。 1 5 2 本文的篇章结构 全文共分六章。前两章是模型驱动的开发模式的基础,第三章对m d a 体系 结构进行扩展,第四章对m d a 的开发模式进行扩展,第五章给出了采用m d a 扩展开发模式进行开发的一个实例,第六章对全文的工作进行总结,对进一步的 工作进行展望。 浙江大学硕士学位论文 2 m d a 体系结构 2 1 m d a 的基本概念 m d a 中的基本概念有模型、抽象、求精、视图、缩放、平台。 2 1 1 模型 模型是对系统的一部分结构、功能或行为的形式的规约【1 3 】。首先,模型是 一种系统规约,这种规约可以是对结构的规约也可以是对系统功能或系统行为的 规约;其次,这种规约必须是形式的,即必须使用一种严格定义没有歧义的语言。 所以一个模型必须和一种严格定义了语法和语义的建模语言绑定在一起。根据模 型的这种定义,程序代码也是模型。 2 1 2 抽象、求精、视角 一个客观系统的规约可以处于不同层面上。例如,对于一台笔记本电脑。可 以有三个规约:“一台电脑”、“一台笔记本电脑”、“某某牌某某型号的笔记本电 脑”。如果还要细化下去,还会有无穷的规约来表达这个系统。从这个例子中可 以看出,在一个客观系统中可以挖掘出无穷多的细节,一个系统的任何规约都只 是从一个特定的角度描述了这个系统的某个层面,都是对这个客观系统的某种程 度上的抽象。这种特定的角度( 或者说抽象的程度) 就是视角。上述例子中的三 个规约是一个不断逼近客观现实的关系,这种关系就是抽象和求精。简单地说, 抽象就是略去无关的细节,求精就是现实化。 2 1 3 缩放 对于系统中的对象和对象之间的关系,会有不同抽象程度的模型。如图1 , 抽象模型中的一个对象,在求精模型中可能由多个对象组成,抽象模型中的一个 关系,在求精模型中可能表现为多个关系。从抽象模型中的一个对象( 关系) 到 求精模型中的多个对象( 关系) 的过程称为放,反之则称为缩。 浙江大学硕:l 学位论文 a ) 对象的缩放 2 1 4 平台无关和平台相关 图1 缩放 b ) 关系的缩放 在m d a 中,平台指的是和系统的基础功能无关的技术细节【1 3 】。例如一个 资金转账的组件,它的基础功能就是从一个指定的账户扣除一定数额的资金,并 在另一个指定的账户里增加相同数额的资金。无论这个组件是以c o r b a 对象的 方式来实现还是以e j b 来实现,这个功能是不变的。一个不带有任何特定技术 细节的系统模型,就是平台无关模型。这种模型描述了系统独立于任何实现平台 的结构和功能特征。而包括了特定技术细节的模型,就是平台相关模型。这种模 型描述了建立在特定技术基础之上的系统结构和功能特征。 2 2 m d a 的模型架构 在m d a 中,模型不再仅仅是描绘系统,辅助沟通的工具,而是软件开发的 核心和主干。m d a 对系统的关键模型做了区分,并把这些模型置于一个统一的 结构中。图2 - 1 描绘了m d a 的模型架构。可以看到,m d a 将模型区分为计算 无关模型。、平台无关模型( p i m ) 和平台相关模型( p s m ) 。平台无关模型中的功能 如何实现,在平台相关模型中给出具体的规约。 平台无关模型对系统的结构和功能进行抽象的规约,不带有具体实现的技术 细节。将平台无关模型和平台相关模型显式地分开有这样几个优点:1 、平台无 关模型可以被多种实现技术复用,当技术平台发生迁变的时候平台无关模型不必 做改动:2 、由于和具体实现技术无关,平台无关模型可以更加精确地体现系统 的本质特征,因此可以跨越具体的技术圈子进行交流和共享:3 、由于使用了简 单的、通用的模型,可以更加容易地对平台无关模型进行验证。4 、在平台无关 模型这个层次上对跨平台互操作问题进行建模非常容易,因为使用与平台无关的 通用术语,所以语义表达会更加清晰。 汁箅:无关模型由十和软件系统建模关系小人,奉文小作i 阳l l 探讨 第1 9 负 浙江大学硕:l 学位论文 商务模型n ,卜堕笠鲞墨叫商务模型船 计算无关模型 仅仅表述商务知识和商 务过程,不涉及如何用 厂 垦蚴射厂 j 多蚴射平台无婪模型 件模卜细节堂塑叫软件模型韶 m m l 表述如何用软件系统来 实现商务过程,去除了 与基础功能无关的技术 厂 垦蝴射厂 箩蛳射 i元数据j 软件模型s 1 卜叫软件模型s 2 , 平台相关模型 ii 表述特定技术对软件系 缔功能的具体宴孤 图2 - 1m d a 的模型架构 在不同的模型之间存在映射的关系,模型的映射分为四类: 1 、p i m 到p i m 。这种情况发生在软件开发周期里,p i m 的提升、过滤或 细化。最明显的例子是分析模型到设计模型的转化,一般来说,p i m 到p i m 的映射都属于精化的范畴。 2 、 p l m 到p s m 。当p l m 已经精化到足以满足需求的程度时,由p l m 到 p s m 的映射将设计模型映射到特定的实现技术平台上。这种映射是 基于平台特征的。从逻辑的组件模型到现实的商业组件模型( 比如 j 2 e e 平台的e j b ,c o r b a 平台上的c c m ) 就是一种p i m 到p s m 的映射。 3 、 p s m 到p s m 。当组件实现和部署的时候就需要p s m 到p s m 的映 射。p s m 到p s m 的映射主要都是p s m 的精化。 4 、p s m 到p i m 。当要从现有的实现模型中将抽象的平台无关模型提取 出来的时候就需要p s m 到p i m 的映射。这个过程通常类似一个“挖 掘”的过程,很难做到完全自动化。在理想的情况下,映射的结果应 该和p i m 到p s m 的映

温馨提示

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

评论

0/150

提交评论