(通信与信息系统专业论文)数据驱动设计模式的研究及在ota开发工具中的应用.pdf_第1页
(通信与信息系统专业论文)数据驱动设计模式的研究及在ota开发工具中的应用.pdf_第2页
(通信与信息系统专业论文)数据驱动设计模式的研究及在ota开发工具中的应用.pdf_第3页
(通信与信息系统专业论文)数据驱动设计模式的研究及在ota开发工具中的应用.pdf_第4页
(通信与信息系统专业论文)数据驱动设计模式的研究及在ota开发工具中的应用.pdf_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

数据驱动设计模式的研究及在o t a 开发工具中的应用 摘要 随着计算机科学技术的快速发展,应用系统中的软件日益庞大, 传统的开发方法已经远远不能满足需要。在这种情况下,软件复用成 为保证软件健壮性、灵活性、提高软件质量和软件开发速度的重要手 段。作为软件复用技术中的重要技术,设计模式总结了面向对象软件 设计经验,可以使人们更加简单方便地复用成功的设计和体系结构。 设计模式在实际工作中明显地提高了开发人员的开发速度,同时在学 科领域里也是一个热点研究领域。 本文在设计模式技术的基础上,结合软件生产自动化中的产生式 编程、模型驱动分析设计( m d a m d d ) ,提出了一种数据驱动 ( d a t a d r i v e n ) 设计模式。它借助数据交换工具( x m l , i n i 等文件) 为数据 模型,通过产生器,生成所需要的功能代码,减小了软件开发的规模, 甚至可以让软件用户参与到软件的升级之中,适合解决系统中大量相 似但是异构的数据的操作,包括数据库应用系统中的数据表的操作, 或者一般系统中存在大量相似异构命令的操作的情况。本文采用 x m l 作为数据交换工具,把数据驱动设计模式应用到了运营商增值 业务平台o t a ( o v e rt h ea i r ) 系统中的开发工具的升级之中,提高了 开发人员的开发效率,同时也使得用户可以自己实现软件的升级。 关键词设计模式软件重用数据驱动产生器x m lo t a 系统 田 i er e s e a c ho fd a t a - d r i v e nd e s i g n b 钢n 1 e r na n di t sa p p l i c a n o ni nt h e o t ad e v e l o p i n gt o o l a b s t r a c t w i t ht h ef a s td e v e l o p m e n to ft h ec o m p u t e rs c i e n c ea n dt e c h n o l o g y , t h es i z eo ft h e s o f t w a r ei nt h ea p p l i c a t i o ns y s t e mi sb e c o m i n gh u g e r t h et r a d i t i o n a lw a yt od e v e l o p t h es o f t w a r ec o u l dn o ts a t i s f yt h ec l i e n t s n e e da n ym o r e i nt h i sc i r c u m s t a n c e ,t h e s o f t w a r em u l t i p l e x i n gi sb e c o m i n ga ni m p o r t a n tt e c h n i q u et oe n s u r et h eh a l e n e s s , f l e x i b i l i t yo ft h es o f t w a r ea n di m p r o v et h eq u a l i t ya n dt h ed e v e l o p i n gr a t eo ft h e s o f t w a r e a so n eo ft h em o s ti m p o r t a n ts o f t w a r em u l t i p l e x i n gt e c h n i q u e s ,d e s i g n p a t t e r ns u m m a r i z e st h ee x p e r i e n c e si nt h eo b j e c t e d - o r i e n t e ds o f t w a r ed e v e l o p m e n t , a n dh e l p sp e o p l et or e u s es u c c e s s f u ld e s i g na n df r a m e w o r ki na l le a s i e rw a y w i t ht h e d e s i g np a t t e r ni np r a c t i c e ,t h ep a c eo fs o f t w a r ed e v e l o p m e n ti so b v i o u s l yi n c r e a s e d a l s o ,i ti so n eo ft h eh o t t e s ts p o tf i e l d si nt h ec o m p u t e rs c i e n c e b a s e do nt h e d e s i g np a t t e r nt e c h n i q u e ,w i t h t h et h e o r yo f g e n e r a t i v e p r o g r a m m i n ga n dm d a m d d ,an e wd e s i g np a t t e r nn a m e dd a t a d r i v e ni sp r o p o s e d w i t hd a t ac h a n g i n gt o o l s ( t h ex m lo ri n if i l e ) a sd a t am o d e l ,w ec o u l dg e tt h et a r g e t c o d eb yt h eg e n e r a t o r i tc o u l dr e d u c et h ec o m p l e x i t yo fs o f t w a r ed e v e l o p m e n t , s o m e t i m e se v e nc o u l dm a k ec l i e n tp a r t i c i p a t ei nt h ed e v e l o p m e n t t h i sp a t t e r nc o u l d b ew i d e l yu s e di nt h es c e n eo fo p e r a t i n gb i ga m o u n to fs i m i l a rb u td i f f e r e n tr e c o r d s , s u c ha st h eo p e r a t i o no ft a b l ei nt h ed a t a b a s ea p p l i c a t i o ns y s t e mo rt h eo p e r a t i o no f s i m i l a rb u td i f f e r e n tc o m m a n d si nt h en o r m a ls y s t e m a sa ni n s t a n c e ,w i t ht h ex m l a st h ed a t ac h a n g i n gt o o l ,a u t h o rd e v e l o p st h et o o l si no t a ( o v e rt h ea 1 0s y s t e m w h i c hi sav a l u e - a d d e ds e r v i c e sp l a t f o r mb u i l tf o rt h eo p e r a t o r sw i t ht h ed a t a - d r i v e n d e s i g np a t t e r n a sar e s u l t , t h ee f f i c i e n c yo fs o f t w a r ed e v e l o p i n gi si m p r o v e d ,a n d c l i e n tc o u l df u l f i l lt h eu p g r a d i n go ft h es o f t w a r e k e y w o r d s :d e s i g np a a e r n , s o f t w a r em u l t i p l e x i n g , d a t a - d r i v e n , g e n e r a t o r , x m l , o t as y s t e m 独创性( 或创新性) 声明 本人声明所呈交的论文是本人在导师指导下进行的研究工作及取得的研究 成果。尽我所知,除了文中特别加以标注和致谢中所罗列的内容以外,论文中不 包含其他人已经发表或撰写过的研究成果,也不包含为获得北京邮电大学或其他 教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任 何贡献均已在论文中作了明确的说明并表示了谢意。 申请学位论 本人签名: 处,本人承担一切相关责任。 日期:坐翠型一 关于论文使用授权的说明 学位论文作者完全了解北京邮电大学有关保留和使用学位论文的规定,即: 研究生在校攻读学位期间论文工作的知识产权单位属北京邮电大学。学校有权保 留并向国家有关部门或机构送交论文的复印件和磁盘,允许学位论文被查阅和借 阅;学校可以公布学位论文的全部或部分内容,可以允许采用影印、缩印或其它 复制手段保存、汇编学位论文。( 保密的学位论文在解密后遵守此规定) 非保密论文 本人签名: 导师签名: 于保密范围,适用本授权书。 日期:缉! 互里 日期:迦主:2 :丝 1 1 项目背景 第一章绪论 近年来,我国的移动通信事业发展迅速,在话费一直下降的背景下,运营商 不断的开发各类增值业务。移动运营商之间竞争的焦点也已经从最初的话音质量 和信号覆盖率转移到移动数据业务等各种增值业务上。在这种背景下,个性的信 息服务对手机用户来说是一种必然的需求。o t a ( o v e r t h e a i r ) 业务就是被运营商 广泛应用的个性化增值服务之一。o t a 业务是一项基于短消息机制的数据增值 业务,通过手机终端或服务器( 网上) 方式实现s i m 卡内业务菜单的动态下载、 删除与更新,使用户获取个性化信息服务。 随着数据业务日趋丰富,s p ( 服务提供商) 之间的竞争日趋激烈,s p 推出新服 务的周期越来越短。对于s p ( s e r v i c ep r o v i d e r ) 来说,能否及时推出一项新的基于 o t a 的菜单服务,成了这个s p 能否具备快速反应能力以应对日益激烈的市场竞 争的重要因素。而菜单服务的生成是通过s p 使用o t a 开发工具开发菜单来完成 的。开发工具是一个j a v a 桌面程序,它的基本原理是把一条条运营商规范里的 指令转换为手机卡可以识别的字节码。 随着时间的推移s p 在o t a 开发工具的使用过程中出现了一些问题。在使 用过程中,o t a 的规范发生了变化,这就使得必须把o t a 开发工具里面的指令 进行升级,才能适应规范的变化。而如果要升级,就得让o t a 系统的软件提供 商把软件进行修改,再把生成的版本提交给s p 。并且在升级的过程中,修改一 个指令,要修改的地方很多,不只在一个地方,很容易出错,效率很低。这个过 程会耽误很多时间,严重影响了s p 业务的开展,造成了不小的时间浪费、经济 浪费。 针对这个问题,我们提出了基于数据驱动的设计模式,并且应用到了o t a 开发工具的升级之中。o t a 菜单经过升级后,用户自己可以通过界面实现对工 具的升级,而不用通过软件供应商的修改。这样大大提高了s p 对市场的反应速 度,也降低了软件开发商开发的成本。 1 2 研究目的和意义 本论文针对现在软件中普遍存在的大量低重用性软件,在设计模式技术的基 础上,结合软件生产自动化中的产生式编程、模型驱动分析设计( m d a m d d ) 理念,提出了一种数据驱动( d a t a - d r i v e n ) 设计模式。它借助数据交换工具( x m l i n i 等文件) 为数据模型,通过产生器,生成所需要的功能代码,减小了软件开发的 规模,甚至可以让软件用户参与到软件的升级之中,适合解决系统中大量相似但 是异构的数据的操作,包括数据库应用系统中的数据表的操作,或者一般系统中 存在大量相似异构命令的操作的情况。最后,采用x m l 作为数据交换工具,把 数据驱动设计模式应用到了运营商增值业务平台o t a ( o v e rt h ea i r ) 系统中开发 工具的升级之中,提高了开发人员的开发效率,同时也使得用户可以自己实现软 件的升级。 1 3 设计模式简介 所谓“设计模式 ,简单理解就是在面向对象语言中运用类和方法的“模式 。 尽管称作“设计模式 ,实际上它们没有仅仅限于设计的范畴,恰恰相反,模式 体现的是程序整体的构思,所以有时候它也会出现在分析或者是概要设计阶段。 模式的基本概念也可以看作是设计的基本概念:即增加一个抽象层。当程序的某 一部分由于某种原因有可能会变化的话,你会希望这些变化不会传播给程序代码 的其它部分。这么做不但使程序更容易维护,而且它通常使程序更容易理解。因 此,这对软件的可维护性是个极大的保证。 1 3 1 软件设计发展趋势 随着社会信息化程度的提高,r r 技术已经深入到社会生活的方方面面,而软 件作为n 技术应用的核心,其重要性也日渐突出。无论是生产制造、电子商务, 还是服务咨询领域,软件都己成为担当重任的核心力量,互联网和软件已成为推 动新经济发展的重要基础。 另一方面,计算机技术应用的快速发展也带来了软件开发的新问题。软件开 发效率低下,软件需求f 1 趋复杂,维护的难度越来越大,开发成本令人吃惊地高, 而失败的软件开发项目却屡见不鲜。这迫使计算机专家们为软件开发寻求一些新 的途径。而总的来说当前程序设计有两种发展趋势:软件生产自动化( ,又名程序 自动生成技术) 和软件重用技术i 1 2 1 。 程序自动生成技术是指计算机根据用户给出的问题描述自动生成程序的一 种程序设计方法,从而实现用户只需要给出做什么,而不必说明如何去做。在国 外,专家早已提出产生式编程、意图编程、特征驱动开发方式等概念,而近期国 内外推出的m d a m d d ( 模型驱动分析设计) 、u m l 2 0 等建模技术,也都以此为 目标在前进着,最终实现直接由模型生成导出代码的理想。 软件重用是指以一切可能的方法对一切可以重复利用的软件产品进行重用 2 软件元素包括数据结构、程序代码、测试用例、设计文档、设计过程、需求分析 文档甚至领域知识。软件重用思想最早可追溯到5 0 年代提出的所谓“黑箱重用” 和“白箱重用”,而自从软件重用思想产生以来,计算机科学家和软件工程师就 致力于软件重用技术的研究和实践,在3 0 多年的时间内,出现了多种软件重用 技术,如:库函数、面向对象、设计模式、构件、框架、构架。以设计模式、框 架和商业构件形式出现的软部件可以通过重用显著地提升开发质量和生产力,显 著地降低成本和缩短软件开发周期。 1 3 2 设计模式发展及分类 1 9 9 5 年e r i c hg a m m a ,r i c h a r dh e l m ,r a l p hj o h n s o n 和j o h nv l i s s i d e s ( 又称作 g a n go ff o u rg o f ) 合著的 d e s i g np a t t e r n s e l e m e n t so fr e u s a b l eo b j e c t o r i e n t e d s o f t w a r e ) ) 被认为是有关设计模式的第一本书籍。在此书中,作者提出了2 3 种 基本设计模式,并将设计模式提升到理论高度,以及将之规范化。从此以后,在 可复用面向对象软件的发展过程中,新的设计模式不断出现。设计模式的研究历 史不到十年,是一个新兴的研究领域,同时也是一个热点研究领域。目前,国外 软件工程界正把设计模式应用于软件体系结构、设计、编码和软件开发的过程。 国内对于设计模式基本从1 9 9 6 年才开始了解,对设计模式的研究也就最近几年 才开始,设计模式在企业应用领域的研究及运用刚刚起步。 实际上,g o f 的设计模式并不是一种具体“技术”,它讲述的是思想,它不 仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧,让你能够真正掌握接 口或抽象类的应用,从而在原来的语言基础上跃进一步。更重要的是,g o f 的设 计模式反复强调一个宗旨:让程序尽可能的可重用。这其实是在向一个极限挑战: 软件需求变幻无穷,计划没有变化快,但是我们还是要寻找出不变的东西,并将 它和变化的东西分离开来,这需要相当的智慧和经验。而g o f 的设计模式是在 这方面开始探索的一块里程碑。 设计模式是被反复使用、多数人知晓的、经过分类编目的代码设计经验的总 结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠 性。 一个模式有四个基本要烈3 l : 模式名称( p a t t e r nn a m e ) ,即一个助记名。它用一两个词来描述模式的问 题、解决方案和效果。命名一个新的模式增加了我们的设计词汇。设计 模式允许我们在较高的抽象层次上进行设计。模式名可以帮助我们思考, 便于我们与其他人交流设计思想及设计结果。 3 问题( p r o b l e m ) 。它描述了应该在何时使用模式。它解释了设计问题和问 题存在的前因后果,它可能描述了特定的设计问题,如怎样用对象表示 算法等。也可能描述了导致不灵活设计的类或对象结构。有时候,问题 部分会包括使用模式必须满足的一系列先决条件。 解决方案( s o l u t i o n ) 。它描述了设计的组成成分,它们之间的相互关系及 各自的职责和协作方式。因为模式就像一个模板,可应用于多种不同场 合,所以解决方案并不描述一个特定而具体的设计或实现,而是提供设 计问题的抽象描述和怎样用一个具有一般意义的元素组合( 类或对象组 合1 来解决这个问题。 效果( c o n s e q u e n c e s ) 。它描述了模式应用的效果及使用模式应权衡的问 题。尽管我们描述设计决策时,并不总提到模式效果,但它们对于评价 设计选择和理解使用模式的代价及好处具有重要意义。软件效果大多关 注对时间和空间的衡量,它们也表述了语言和实现问题。因为复用是面 向对象设计的要素之一,所以模式效果包括它对系统的灵活性、扩充性 或可移植性的影响,显式地列出这些效果对理解和评价这些模式很有帮 助。 设计模式在粒度和抽象层次上各不相同。由于存在众多的设计模式,我们希 望用一种方式将它们组织起来,并对设计模式进行分类,表1 - 1 所示为设计模式 空间【3 1 。 表1 - 1 设计模式空间 目的 创建型结构型行为型 范 类工厂方法适配器( a d a p t e r ) 解释器( i n t e r p r e t e r ) 围 ( f a c t o r ym e t h o d )模板方法( t e m p l a t e m e t h o d ) 抽象工厂 适配器( a d a p t e r )责任链( c h a i n o f ( a b s t r a c tf a c t o r y )桥接( b r i d g e )r e s p o n s i b i l i t y ) 对 生成器( b u i l d e r )组成( c o m p o s i t e )命令( c o m m a n d ) 原型( p r o t o t y p e )装饰( d e c o r a t o r )迭代器( i t e r a t o r ) 单例( s i n g l e t o n ) 外观( f a c a d e )中介者( m e d i a t o r ) 享元( f l y w e i g h t )备忘录( m e m e n t o ) 象 代理( p r o x y )观察者( o b s e r v e r ) 状态( s t a t e ) 策略( s t r a t e g y ) 4 我们根据两条准则对设计模式进行分类,分别为目的准则和范围准则。 第一是目的准则,它表明模式是用来完成什么工作的。模式依据其目的可分 为创建型、结构型和行为型三种。创建型模式与对象的创建有关;结构型模式处 理类或对象的组合;行为型模式对类或对象怎样交互及怎样分配职责进行描述。 第二是范围准则,它指定模式主要是用于类还是用于对象。类模式用于处理 类和子类之问的关系,这些关系通过继承建立,是静态的,在编译时刻便确定下 来了。对象模式用于处理对象问的关系,这些关系在运行时刻是可以变化的,更 具动态性。从某种意义上来说,几乎所有模式都使用继承机制,所以“类模式 只指那些集中于处理类间关系的模式,而大部分模式都属于对象模式的范畴。 1 3 3 设计模式的发展前景 目前设计模式的研究及其研究成果仍然存在一些问题:已有的设计模式涉及 的范围有限;设计模式大多没有清楚明确的应用指南,比较难以运用,而且也没 有任何可以帮助开发人员检查模式使用是否正确的机制;设计模式中本质、抽象 的东西太少等等。 针对以上问题,日l i 对于设计模式的研究工作主要集中在以下几个方面: 新设计模式的发现和发明。每年国际上都举办包括p l o p , e c o o p 等在内的 学术会议对设计模式进行讨论。据权威统计,目前软件界己经总结出来大约7 0 0 种不同的设计模式,人们正在各个领域总结设计模式,如通信领域、w e b 开发领 域。设计模式与其他面向对象技术的关系也是当前研究的热点。 模式的组织和索引。目前的设计模式还仍然是用文档的形式来记载,面对设 计模式数量的迅速增长,需要一种合适的覆盖所有模式的组织方法,并对其中的 模式提供一个索引,建造一个可以有效的支持高质量软件开发的真正成熟的模式 系统。 设计模式的使用自动化。目前设计模式使用自动化和设计模式支持工具的研 究也是一个热点。 形式化模式。在设计模式研究过程中,国外已经提出很了多关于设计模式结 构的描述方法。一般分两类:图示化方法,如o m t l l 8 1 1 形式化数学表示法。目 前的研究趋势是这两类方法逐步靠拢。国内也对设计模式形式化做了一定的研 究,并且结合了一定的新技术,如:基于x m l 的混合规范描述模型【1 9 1 等。 5 设计模式的应用及具体化。虽然设计模式有很多,并且设计模式的提出也是 针对所有领域的,但并不是所有的模式都直接可以拿来应用的,有的模式可能适 合某些应用但需要对它进行改造,用改造的设计模式或经典设计模式来解决具体 设计闯题,使基于设计模式的企业应用的研究更适合于该应用,所以设计模式应 用和改造来适应具体设计问题也是当前研究的热点。 总之,设计模式是一个既新颖又长久的研究方向。随着企业应用的迅速发展 和产品化,在我国对设计模式的研究正方兴未艾,为以后全面的发展做准备。基 于设计模式的企业应用的研究,可以解决企业应用设计开发中现存的许多问题, 开发人员将走上一条全新的基于设计模式的应用开发之路。 1 3 4 本文组织结构 本论文共分为五章,章节安排如下: 第一章是绪论部分,主要介绍了本论文研究背景与研究目的以及设计模式的 基础知识。文章指出了合理的使用设计模式,可以降低问题的规模,并且加快软 件开发的速度。 在第二章中,论文介绍了相关的理论与技术。本论文提出的设计模式借鉴了 产生式编程的相关技术,产生器的原理及构造方法;m d a 的概念及模型概括; u m l 语言和x m l 语言。 在第三章中,基于前面的理论技术和实际的需求,论文提出了数据驱动设计 模式,然后对比模型驱动分析设计( m d a m d d ) , 禺, 路流程,给出了数据驱动设计 模式的详细处理流程,并对概念中的关键技术和关键思想作了详细解释,按照设 计模式定义的四个方面( 模式名称、问题、解决方案、解决效果) 详细给出了定义。 在第四章中,论文把数据驱动设计模式应用到了o t a ( o v e r t h e a i r ) 系统中开 发工具的升级之中,获得了良好的效果,并且把它跟适配器模式、桥接模式进行 了比较。 第五章对本文的工作进行了总结,并对这个设计模式未来的发展进行了展 望。 6 第二章相关的理论与技术 程序自动生成技术及软件重用技术是本课题研究对象的技术基础。因此,在 这个章节里面,我们将首先简要介绍自动生成技术的内容:产生式编程的概念, m d a m d d 原理、模型架构、核心技术;接着介绍程序设计中的重要概念u m l : 最后介绍在本课题中使用到的x m l 技术。 2 1 产生式编程 产生器编程( g e n e r a t i v ep r o g r a m m i n g ,g p ) 是一种软件工程范型,基础是 对系统族建模。就是说,给定一个特定的需求说明书( s p e c i f i c a t i o n ) ,就可以根据 要求制作出一个高度定制、优化的中间产品或者最终产品。这需要使用基本的、 可重用实现组件通过配制知识的方式实现【6 j 。 产生式编程的目标针对的是系统族,而不是一个或者一种的系统 ( o n e - o f - a - k i n ds y s t e m ) ,不是从头构造一个单独的系统族成员,而是基于通用的 产生式领域模型( g e n e r a t i v ed o m a i nm o d e l ) 。产生式领域模型是由三部分组成的: 指定的系统族成员的方法,可以组装出每个成员的实现组件,成员说明书和一个 已有成员的配置知识( c o n f i g u r a t i o nk n o w l e d g e ) 映射关系。用来指定家族成员的术 语被称为问题空问( p r o b l e ms p a c e ) ,而使用可能配置的实现组件成了解空间 ( s o l u t i o ns p a c e ) 。产生式领域模型基本组成图如图2 - 1 所示,开发领域模型是朝 产生式编程迈出的第一步,它使我们可以根据一个规范自动化地产生一族成员。 1 非法的特征组合 2 默认设定 3 默认的依赖性 4 构造规则 5 优化 图2 1 产生式领域模型的基本构成 产生式编程包括开发和实现一个用于一个系统族的产生式领域模型,产生式 编程的主要开发步骤有:领域范围界定;特征建模和概念建模;设计一个通用架 构和识别实现组件;为。定制一系统指定领域范围意义;实现那些组件和领域特 定符号;使用产生器实现配置知识。 7 2 1 1 产生器原理 使用我们当前通用目的的程序设计语言,是很难或者不可能同时达到极大的 灵活性、意图性和代码可理解性以及代码优良性的。例如,如果你想要提高代码 优良性,你可以手工优化它,但是这几乎肯定摧毁了它的优美和易于理解的结构。 类似的,如果你添加一个方面,例如错误处理或者同步,它也对你的代码有同样 影响,损伤了灵活性。我们可以通过把这些“肮脏 的工作,例如优化和编制, 委托给产生器,来避免这些问题。产生器的责任就是计算出一个优美的而且易于 理解的规范的有效实现。 产生器就是一个程序,它接受一块软件的一个高层规范,并且产生它的实现。 这一块软件可以是一个大的软件系统、一个组件、一个类或一个过程等等【1 6 j ( 在 下面的描述中,我们将简称它为一个“系统) 。 产生器处理3 个重要问题: 提高系统描述的意图性:意图描述直接和明确地强调什么是需要的,并且要 避免额外的凌乱或者不必要的实现细节。它们具有所有好的代码属性,例如如何 被理解、分析、修改、维护等等。我们通过领域特定的概念达到意图性,并且我 们使用产生器实现这样的概念。 计算出一个有效的实现:产生器桥接了高层设计、意图性系统规范和可执行 实现之问的巨大鸿沟。在特殊情况下,实现必须满足某种性能要求( 例如执行速 度、响应时间、内存消耗和资源的利用等等) 。面临的挑战就是,规范的结构通 常与实现的结构非常不同,在规范中的概念和实现中的概念之间没有简单的一对 一对应关系,而且在规范中的甚至微小的改变,都可能要求十分不同的实现。产 生器可能需要进行相当复杂的计算,以取得这种非平凡映射,但是它们把应用程 序员从手工进行这种映射中解放出来。 避免库的缩放问题:库缩放问题与传统组件库的横向缩放有关,如果一个库 把每一个有用的特征组合都实现为一个组件,添加对一个新特征的支持,潜在地 可能会使库中的具体组件的数目加倍。把库抽取成与特征相对应的组件,并且使 用函数或者方法调用组合他们,以避免库的规模的指数增长,但是通常导致比较 差的性能。产生器使我们可以同时取得高效的抽取和完美的性能,它们消除了组 件之间调用的负担,经常可以进行各种领域特定优化,因此我们同时取得了线性 库的缩放和很好的性能。 术语“产生器一是非常通用的,覆盖了许多不同的技术,包括编译器、预处 理器、产生类和过程的元函数、代码生成器( 例如在一个c a s e 工具中) 、转换组 8 件等等。 2 1 2 构造产生器的技术 构造产生器有3 种主要的方法: 从头开始,把产生器作为独立的程序开发:这是开发产生器的工作强度最大 的方法,必须从零开始设计和实现内部资源表示以及代码性能分析、优化以及产 生。除此以外,这个方法还损害了与不同表示法和开发工具的集成,因为每一个 产生器都使用它自己的内部源表示,而且不提供任何接口,结果导致我们得到了 一个包括不可互相操作的领域特定语言和语言模式。 使用一种程序语言内建的元程序设计能力开发产生器:某些语言提供内建的 在运行时或者编译时操纵语言表示的机制。例如,在c + + 中,模板元程序设计使 你可以编写产生器,它是在编译时执行的,并且通过组合函数和类模板来产生代 码。这样的产生器最大的优点在于它们可以为用语言编写的传统的过程和类库而 被分发,而且内建的元程序设计机制对给定的语言进行了优化,比起通用目的的 内部源表示,内部元程序设计机制更容易被使用。 本方法虽然比从头编写它们要强得多,但是也有几个缺点,首先以这种方式 实现的规范概念受到了宿主语言的限制,许多内建元程序设计能力的语言甚至不 允许你扩展语法,因此你构建的产生器内在地被绑定到了一种给定的宿主语言上: 然后是带有静态元程序设计能力的语言不提供对元代码调试的充分支持:最后, 这样的语言使应用程序员在应用代码时,包括实现某些临时语言扩展的元代码变 得容易,这就使理解和维护变得困难,并且减少了它的健壮性。 使用一个产生器基本结构开发产生器:开发产生器的最好的办法是使用一个 为构建产生器而提供的通用的基本结构。这包括一个用于内部结构表示的通用格 式和用于对表示进行转换的操作的标准集合编码。理想情况下,产生器机制应该 支持开发任何种类的转换( 包括优化和源对源的转换) ,而且,基本结构应该支持 构建合适的输入和输出机制,以及用于产生器实现的概念和调试机制。最后,基 本结构也应该充分支持开发产生器自己的活动,例如意图编程系统就是这样的基 本结构的一个例子。 m d a 是模型驱动体系架构( m o d e l d r i v e na r c h i t e c t u r e ) 简称,由对象管理组 织o m g ( o b j e c tm a n a g e m e n tc r o u p ) 所驱动。m d a 表示了一种模型驱动开发方法 的概念框架。作为o m g 组织的一个发展进程,m d a 代表了o m g 组织定义的 9 互操作性规范的一个革命性进步。很长一段时间以来,互操作性一直基于c o r b a 标准和服务,不同种类的软件系统在标准的组件接口层次上实现互操作。而在 m d a 中,它从系统模型层次上来解决互操作性的核心问题。这条途径最有意义 的方面就是系统使用平台无关的语言进行描述,使得它和具体的平台以及实现技 术分离,同时可以根据各种具体平台的映射关系来生成各种实现模型,例如( j a v a , x m l ) 4 1 。 m d a 的关键之处就是模型在软件开发的过程中扮演了非常重要的角色,从 高抽象层次的平台无关模型( p i m ) 到平台相关模型( p s m ) ,再到低层的代码,这 其中的变换都是由工具来实现的,变换的自动化是m d a 的主要特点。 2 2 1m d a 的基本概念 m d a 中的基本概念有模型、抽象、精化、视角、平台相关、平台无关、映 射。 1 、模型 模型是对系统的一部分结构、功能或行为的形式的规约1 1 3 l ,是用精确定义 的语言对系统( 或系统的一部分) 做出的描述。首先,模型是种系统规约,这种规 约可以是对结构的规约或者是对系统功能或系统行为的规约;其次,这种规约必 须是形式的,即必须使用一种严格定义没有歧义的语言。所以一个模型必须和一 种严格定义了语法和语义的建模语言绑定在一起使用u m l 进行建模可以得到相 当精确的模型,这些模型表达了系统各个层面的特征,在类似的系统开发中可以 得到重用。 2 、抽象、求精、视角 一个客观系统的规约可以处于不同层面上。一个系统的任何规约都只是从一 个特定的角度描述这个系统的某个层面,都是对这个客观系统的某种程度上的抽 象。这种特定的角度( 或抽象的程度) 就是视角。抽象是省略掉无关的细节,而求 精就是现实化。 3 、平台无关模型和平台相关模型 在m d a 中,平台指的是和系统的基础功能无关的技术细节1 1 3 l 。 平台无关模型( 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 ) 对系统的结构和功能进行抽 象的规约,不带有具体实现的技术细节。这种模型描述系统独立于任何实现平台 的结构和功能特征而包括特定技术细节的模型,就是平台相关模型( p s m 。 m a t f o r ms p e c i f i cm o d e l ) 。这种模型描述建立在特定技术基础之上的系统结构和 功能特征。 4 、映射 1 0 映射( m a p p i n g ) 是- - 种规约,它包含规则以及其它一些信息,用于从p i m 中 生成p s m 。 2 2 2m d a 的模型架构 在m d a 中,模型不再仅仅是描绘系统,辅助沟通的工具,而是软件开发的 核心和主干。m d a 的目标是通过模型精化消除不相关的抽象细节层次。一个完 整的m d a 应用由一个精化的p i m ,加上一个或多个p s m ( e p 丌发者决定支持的 任一平台,如j 2 e e 或n e t ) 及其完全的实现共同组成。图2 2 描绘了m d a 的模 型架构,从图中可以看到:一个系统从不同的视角可以由不同的模型所描述。这 些模型分为3 个层次:计算无关模型( c i m ,c o m p u t i n gi n d e p e n d e n tm o d e l ) ,平台 无关模型( 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 ) ,平台相关模型( p s m ,p l a t f o r m s p e c i f i cm o d e l ) ,它们之间有着抽象和求精的关系。模型之间通过模型映射机制 相互映射,从而保证了模型的可追溯性。 j 。+ 一_ 一一一。- 一。- 。 i 业务领域的分析与建模( 企业业务建模) 图2 - 2m d a 的模型架构 1 l 基于m d a 软件开发方法就是一种基于p i m 规范和开发应用程序的方法。软 件的开发和更新过程就是模型自顶而下,逐步求精的过程。首先由领域专家构建 商务模型( 即企业业务建模) ;然后由模型映射专家将商务模型映射到平台无关的 计算模型;最后由平台技术专家将平台无关模型映射到平台相关模型【1 5 l 。 图2 2 说明了m d a 方法从企业业务概念建模,通过使用不同的映射规则完 成各层模型映射,一个p i m 可被映射成多个p s m ,再将每个p s m 都转换到代码, 最后自动生成运行于某个系统平台( 例如j 2 e e ) 的应用系统的全过程。其中的平台 无关模型p i m 就是系统的表示原型,特定平台模型p s m 是系统在具体实现环节 下的实例,代码模型是系统的最终实现。 c i m :从c i v 视角( 计算无关视角) 来描述特定领域面临的问题、系统需求的 模型。c i m 是独立于软件的模型,用来描述业务系统。 p i m - 平台无关模型( p i m ) 用来描述系统,代表软件生命周期中的分析模型。 p i m 是对系统的功能和结构的形式化描述,是抽象的、与实现细节无关的模型, 由业务需要和业务模型驱动,关注需要实现的功能,并带有具体实现的技术细节, 不涉及最终实现平台的全部知识。开发人员从企业业务模式来对系统进行建模 ( 建立p i m 平台无关模型) ,并不断根据客户需求和其它因素对p i m 进行精化, 以使得它能够更加精确地描述软件系统。 p s m :平台相关模型( p s m ) 是针对用户选择的实现技术、平台( 可以是j 2 e e 或n e t ) ,对软件系统度身定做的模型,由系统的数据、处理进程等平台相关的 信息组成,包含最终实现平台的全部知识。p s m 代表软件生命周期中的设计模 型。 例如针对j 2 e e 平台,e j bp s m 是对使用e j b 结构的系统建模,它包含一些 与e j b 相关的名称,例如“h o m ei n t e r f a c e ”,”e n t i t yb e a n ”,”s e s s i o nb e a n 等。关 系数据库p s m 包含的名称如”t a b l e ”,”c o l u m n ”f o r e i g nk e y ”等。 m d a 以平台和实现技术无关模型的形式抽象和可视化业务需求,将业务功 能和实现细节相分离。一旦确认结构并选择了实现技术,模型就可以被转换成平 台相关的软件架构。 将平台无关模型和平台相关模型显式地分开有以下优点: 1 、平台无关模型可以被多种实现技术复用,当技术平台发生变迁的时候, 平台无关模型不必做改动,平台无关模型仅在业务功能改变时做改动。 2 、由于和具体实现技术无关,平台无关模型可以更加精确地体现系统的本 质特征,因此可以跨越具体的技术进行交流和共享; 3 、由于使用了简单的、通用的模型,可以更加容易地对平台无关模型进行 验证; 4 、在平台无关模型这个层次上对跨平台互操作问题进行建模非常容易,由 于使用与平台无关的通用术语,所以语义表达会更加清晰。 2 2 3m d a 的几个核心技术 建模和模型映射技术是m d a 的核心,m d a 的几个主要核心技术是统一建 模语言( 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 e t ao b j e c tf a c i l i t y , , m o f ) ,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 i ) ,公共仓库元模型 ( c o m m o nw a r e h o u s em e t am o d e l ,c w m ) 。m d a 的核心标准组成了创建模式驱 动的一致性系统纲要的基础,这个系统纲要完成授权、发布和管理模型的功能。 2 3 统一建模语言u m l 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 是由世界著名的面向对象技术专家 g r a d yb o o c h ,j i mr u m b a u g h 和i v a rj a c o b s o n 发起,集众家之长,几经修改而成 的。 2 3 1u m l 的目标 u m l 设定的目标是嗍: 运用面向对象概念来构造系统模型( 不仅仅是针对软件) ; 建立起从概念模型至可执行体之间明显的对应关系; 着眼于那些有重大影响的问题; 创建一种对人和机器都适用的建模语言。 2 3 2u m l 的主要内容 u m l 采用的是一种图形表示法,它是一种可视化的图形建模语言。u m l 适 用于各种软件开发方法、软件开发生命周期的各个阶段、各种应用领域及各种开 发工具。 标准建模语言u m l 统一了面向对象建模的基本概念、术语及其图形符号, 为人们建立了便于交流的共同语言。然而,人门可以根据所开发软件的类型、环 境和条件,选用不同的建模过程。u m l 是由图和元模型组成的,图是u m l 的 语法,而元模型则给出图的意思,是u m l 的语义。 1 ) u m l 语法:定义u m l 符号的表示法,为开发者或开发工具使用这些图 形符号和文本语法为系统建模提供了标准。这些图形符号和文字所表达的是应用 级的模型,在语义上它是u m l 元模型的实例。 2 ) u m l 语义:描述基于u m l 的精确元模型定义。元模型为u m l 的所有 元素在语法和语义上提供了简单、一致、通用的定义性说明使开发者能在语义 上取得一致,消除了因人而异的最佳表达方法所造成的影响。此外u m l 还支持 对元模型的扩展定义。 u m l 定义了如下模型框图,表示系统的不同方面: 用例图( u s ec a s ed i a g r a m ) 。用例图从用户角度描述系统的功能,并指出各功 能的操作者,显示角色、用例和它们之间的关系。用例表示一个系统或子系统等 等的功能。一个角色可能是一类用户,或其它系统。 类图( c l a s sd i a g r a m ) 。用于定义系统中的类,包括描述类之间的联系以及类 的内部结构,即类的属性和操作,是描述系统中类的静态结构,在系统的整个生 命周期都是有效的。 状态i 訇( s t a t ed i a g r a m ) 。状态图是标准的状态转换图,它提供了建模对象各种 状态方式。类图提供了描述类及其相互关系的静态图形,而状态图则可以描述建 模系统的动态功能。 行

温馨提示

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

评论

0/150

提交评论