PowerDesigner 在MDA 领域的应用_第1页
PowerDesigner 在MDA 领域的应用_第2页
PowerDesigner 在MDA 领域的应用_第3页
PowerDesigner 在MDA 领域的应用_第4页
PowerDesigner 在MDA 领域的应用_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

1、引言MDA提出已经有5,6年的历史了,它的出现正不断地改变着软件工程领域的现状和编程习惯,同时,业务模型、领域模型的不断变更以及新框架的出现,也使得MDA得以大展身手。本文将通过SybasePowerDesigner工具带领大家认识、了解MDA,并且使您更容易地实现软件系统的集成与开发。1.一个经典案例引发的问题在MDA前,我们想象一种场景:项目经理定制项目计划以及各个里程碑,然后然后交付给软件架构师对其不同模块进行UML建模,然后打印并分发给开发人员,根据模型的要求完成代码开发和测试。很不幸的是,该项目是一个遗留的系统,而且是面向过程的,甚至部分语法都是定制的,头疼的是客户要求你把这个系统转

2、换为面向对象的java语言。这是一种比较传统的软件管理方法。然而这样的弊端是:1)一切都不是那么同步,例如,代码发生的变化,模型势必要进行修改,反之亦然,当然也包括文档的同步等等,采用前者的管理方法,往往会使得项目进度拖延甚至失败。2)模型描述的不够详细,以至于开发人员不完全按照架构师的设计方案开发。3)代码重复过多,成本消耗过大。4)进度不容易控制,模型无法有效管理等等。5)没有一种有效的方法来检测架构师的设计正确性。6)不同模型以及语言转换复杂。MDA正是为了解决这些问题提出的一种新的开发方法。2MDA的基本概念MDA是一种基于模型驱动架构技术的开发方法,它是一种方法学,基于它,我们能实现

3、如下功能:能方便地在模型或者元模型上定义应用需求、逻辑结构以及行为方式,甚至修改元模型结构以适应实际需求。增强了模型的语义逻辑。能快速生成应用程序原型代码,使得用户可以验证或者为开发者生成API。迭代式的设计、生成、开发和测试。当然,PowerDesigner就是这样一款集UML、数据模型、业务模型等于一体的企业建模工具。MDA的主要标准包括MOF,UML(OCL),XMI和CWM四大核心。需要指出的是,MDA正处于发展阶段,现在有三大阵营,即UMLPIM阵营、MOF阵营以及可执行的UML阵营。所谓UMLPIM,即使用UML来建立PIM,然后利用模型转换来生成PSM,最后用PSM生成代码。目前

4、该阵营的人居多,因为大家了解最多的还是UML,兼容性以及推广程度都较其他阵营更好。PowerDesigner也是该阵营的拥护者。MDA要致力解决以下问题:实现与平台无关的特性,设计人员只需关注模型即可。不同模型之间的无缝转换,例如:OO模型与数据库模型的无缝转换,同时能方便的定制转换规则。模型的事先检测,这样就可以有效分析出架构的正确与否。能自定义与平台相关的语言模型和扩展模型。3用PowerDesigner来实现MDA对于MDA方法学,PowerDesigner12.0已经支持了如下的功能:模型定义PD支持企业建模,用户可以在现有模型中定制应用需求、逻辑、结构和行为。如案例中,我们可以用需求

5、模型和业务模型来完成需求分析;使用业务模型完成应用逻辑和诸如复杂过程(SOA);使用UML来完成应用结构和行为;使用数据模型来完成对象的持久化;使用知识库来管理模型,等等。元模型定义所谓元模型,即是模型的模型。用户用UML的方式定义自己的元模型。在PD中,所有的模型都基于PD的元模型,例如:类的元模型,从Error!Referencesourcenotfound.可以看出,类元模型继承于Classifier,同样接口元模型也继承于它,每个类有多个属性和关联。基于这样的元模型语义来完整的描述了UML的特性。(用户可以访问PD安装目录ExamplesMetaModel.oom来获取元模型)同时,基

6、于PD的元模型,用户可以根据需求编写自定义的扩展模型,甚至是语言模型。例如,你的公司里有自己的框架、甚至有自己的脚本或者业务流程,现有的UML图并不能生成你想要的代码文件,这时,采用PD的元模型来设计自己的模型是再合适不过的了,本文后面将会详细阐述。Generalization:1+PnnlOblE匚I:IDEJECT+CNIdOblE匚I:门日JECT+阳hillH:CHAK1assifier+vidbinV:CHARCO+/iursd:BOOL+Flrd:BOOL+OErerahd:BOOL+OblEdLa-iQLHge:口EJECT+CoritednErdasflilEr:DEJECT+

7、1.1zrinCon1drerC:lasd1er:CBJBCT+HeaiEr:TBT+Foofer:TEXT+kTipcIf:TEXT+Qi_dllEdM3DE:TEXT+QLdllEdCcdE:TEXTFd|QLH|lEdM3TiE:TEXT+FdIPah:TEXT+Confhdnl:TET.Attribute+Clafdler:UBCT+MLEnDbled:BJBCT+Db&Tpe:CHAHJ3+)+DataTypeOblEcI:BJBCT+QLdllEdDabTVPc:TET+UfEQi-alllEdDb&T!iTie:BOOL+Vlfltilllly:cHJuun+Uullplld:c

8、hahjs*)+齐II曰凹上:TDCT+W:k3l匚:BOOL+Fronn:CHAPj;1)+OerluEd:BOOL+VdallE:BOOL+Pcrftanl:BOOL+FropErlv:BOOLOass:1+TW1E:CH.KRC1)+PEKlsiEra:CHAFKU+CatilndlH:CHARCZS+PcrlftanlCcdE:QHAFKZS+perdflenLlifD29&Ti)pe:BOOL+PrimaryHenllEr:BJECT+Awdalcn:BJECT+Penjjjtenl:BOOL+E*&JUqplr:EJECT+UUllplE:EOOL+i.iiE&ridClass:B

9、JBOT+WBDEfEr1dCla:BJBCTIdertifier曲已日dl0b:R.dcANanERjqIeBMotieRel匕炯北llllyRdeBVIdblllRdEAMdlplldb1RdeBUdlplldRdeADnlErlnaRdeBOrtiErlnaH.deAMalQsAHlt1FjoIeBMoJUdiIlly:门HJBJT:OBJECT:KiHJB:T:CHAHJ;1J:CHAH1C1):CHh.FjTSh.):CHAFiZSt):cHAmn:CHAiaf1J:CHAFjTS:CHAFlCZf:CHARilJ:CHAII):BOOL:AOL+Clafdler:CBJECT+AI

10、Mbuh:10BJECT+Primary:BOOLClass:3+Tnie:CHAR;1)+PenslJtera:CHAKU+CatilrdlV:CHARTS*)+PErdfhnlOctiE:CHAA?S:iBJECT+XDdalon:CEJECT+PEndftonl:HO0L+DEtsJRlzvplna:DBJBCT+Udlple:Hu0L+lAErldCliK!::10EJECT+WBDEdEllBlClaff:10BJBCTUML的部分元模型展示3.3全面支持MDA开发过程在设计过程中,用户可以先设计与平台无关的模型PlatformIndependentModels(PIM),然后基于P

11、D的模型转换功能,转换成PlatformSpecificModels(PSM)。当需要生成代码或者预览代码时,模型会根据定义在语言模型或者扩展模型上的模版和流程来生成代码。用户也可以在模型上直接修改代码,那么模型也会随之同步更新,同样也能修改语言模型或者扩展模型以适应需求。流程如图2所示:V13U5iElilQfS图2PnwerDesigner申MDA的流程+JCodeGtflHaterPmsic刊DM歸,|吨HR住网P5geFrwJSP;StrtisJ3A&JAi.EolalOewrstaFer$JstanceTyppPr5ertaticnSifcePrOHeCodtTarniatePD支持

12、在如下的几种模型转换上进行扩展:OOMOOM:这种情况下,一般是从分析(Analysis)到具体的语言(如Java等)。OOMPDM:这是一种自顶向下的开发流程,即先行根据需求设计出领域模型,然后PD会自动转换为数据库模型,并同时建立O/RMapping的关系。基于这些O/RMapping的关系,PD12已经很好地支持了诸如Hibernate,JDO等的持久化模型。PDMOOM:与(b)相反,是自下向上的开发流程,同时也会自动建立O/RMapping。CDMPDM/PDMCDM:概念数据模型和物理数据模型的转换。CDMOOM/OOMCDM:概念数据模型和面向对象模型的转换。PDMXSM:物理模

13、型到XML模型的转换,一般用于生成数据库的XMLSchema或者是带有XML结构的数据库模型(WebServiceindatabase)。这些转换都是无损的双向过程,当然您可以基于您的规则在PD现有的转换功能上新建自定义的模型转换的功能,以适应需求的变化。3.4自定义UMLProfile基于UMLProfile,可以在其上面定义或扩展自己的模型。CtKerilii辿理MyG/RMappiftgOyRMijpptfgE;orftptidfrfIdiTgicage斟rf;a*it?n留【I中选押Hi轻的模魂职消应用淋丿川JI:他檢軟/inTPr.ri;e.&弹円ifHfcejnatf-:2jGen

14、e諒沏+Comwirxis电Lompr?丿avasouir-e-?.Ru:囉VbiLbometeF3kbyHi-_JPTOtrlehShiJed-邑AsswmIkqh+_JEiflmciedAliribufes_TempJates*已AssociliionMappi巨Atuibme+目&asePacki9e-E3ciflfis_EwIentJedAtlribUes-GeneratedFilesJafvaSoureeMapping-_IMenu?豹Menul_TertKjlJte邑GenerafisMiflri+BModel:;仆儿横叩.:i确定_r卩BMies(1-cirAllWtfdels图

15、3LMLProfile编辑器PD提供了如下的自定义功能:Stereotype:Stereotype为元模型提供了更为丰富的元素。例如,在JAVA语法中提出了EJBEntity概念,那么我们可以基于GTL的Stereotype在类元模型中添加这些新的EJB元素,甚至可以以图形化的界面展示出来。Menu:为模型添加菜单,例如,当在类元模型上新建Menu,同时绑定Method菜单方法,则右击类,则会出现您定义过的Menu菜单。hndhDi自事寻曲Ctrl+Shlft+FCtrl+F!iListoF:kNew|RemovePackageLevel|SpelChecks.,EditBynameF2Pop

16、rtiesAlt+Enter图4菜单Form:定制自定义的选项页,该选项页将会被显示在对应的元模型的属性上,例如,在类元模型上新建一个Form选项卡,那么当选择类的属性时将会出现该Form。|一=4塾0KCfifweJ瞬|3.5代码生成PD提供GTL语言(GeneralTemplateLanguage)来实现代码生成,使用GTL可以做到高级语言的语法特点,例如:定义变量、循环、条件分支等等。PD中的所有语言模型和扩展模型均使用GTL的方式实现,可见GTL有多强大。所以,PD的灵活性即使在特定的领域中也可以轻松定制生成的代码。PD的灵活性还体现在:任何高级语言(如C#,Java等)均可以方便调用

17、PD的元模型来实现需求。这不是本篇的重点,读者可以访问:PD安装目录OleAutomation,里面提供了详细的例子。灵活的插件定制功能。4.案例演示在这个案例中,我们将结合订单购物的案例,来详细分析,如何基于PD强大的企业建模开发平台来实现模型驱动的开发(Model-drivendevelopment)。案例场景:小王是项目经理,今接到订单购物的项目,于是小王召开大会,邀客户、老总以及开发人员讨论模块功能点和用例。需求管理良好的开端是成功的一半大会完毕,接下来,小王就开始用PD的需求模型,细分项目的模块以及每个模块的里程碑等信息,如图:宦制忧光级图6畫求管理作负戦2.1Scenario1pg

18、hdahombic-Jay.Onthewaytoworkshegotmhr2ifficsiridhfroviihtaitdThaimadeherhieEar曲inlportiAntmeetingwithanfiwpfljptchu?cjieptThiscrrelhertobehind迪day.andAseamedlikeshe阿塚曲丫h3.vefhctun.?tocomplcTesonuemuchnerdedEnoppuxg,orevenplan制in年alfor斑咖蛉likeleKFCagain片乍he歹uniblucltoherselfBiftWffldShe打ju$tpun;ha?亡心a

19、.newcybEifincigcwvththeCARA,programforProjectDescriptionofTargetSystemTleCyberFridgeprojectisto需Internetconncchviiy,wsion.andmrchan;c2Jsysttmstccreate和sntettjgentuwiproductiverefrigeratorMmjtofqwdailytasrevokearoundtherefigeratr,andaCyberFridge呼ouUafiowih?auroTMteon中fsn砂oftheseroutiMtasksOarpmj&tisa

20、specificsubsetof旳$ane畐which询1aliycnatousearecipEsystemtodfibemanswhatrdpeyouwouJd脈匕to血卜axd1秋youknowif鹼itemstornkeiireddiinyCrtJUD*i4*rstartSiRleRuleCrprateOder?UndefistedPifloesSOrdtrCheckStocfcFnxtfscrpoutOidrSinflfeRuteD*書flightDelivry?11转换后的模型对于客户的要求,显然,仍然有些不符合转换要求,所以小张采用了自定义的模型转换功能。PD支持在语言模型和扩展模

21、型上进行模型转换规则的自定义。例如,小张不想PD每次将Process的类型转换为undefined,而是定制一个相关的初始类型,同时替换现有的图标和部分程序代码。为了今后的开发重用、减少开发成本以及能更好的结合现有的开发框架,于是,小张开始了他的定制之旅。扩展PD元模型,定制类别:打开Sybase语言模型,并切换至Process元模型,添加新的Sterotype,取名为MyProcessDefined,然后在该模型下添加自定义图标(CustomSymbol),点击右下角的Modified来修改Symbol格式。PD也支持贴图(bmp,jpg,ico等),如图。在MyProcessDefined

22、节点下添加Transformation,在如图的窗口中编写转换规则,该规则采用了VB的编写语法,简单易懂,而且能够非常方便的操控PD的元模型,以达到自定义的效果。定义完模型转换规则后,就可以在TransformationProfiles处挂接该Transformation,并选择是在哪个不同时刻的转换插入点:Pre-generation(转换前执行脚本)以及Post-generation(转换后执行脚本),如图13,生成效果如图14。0|詡屏弾UnwindOrch卑弭tg:Fr誌、爲遅尸曲祚讥轨畔呻/旳阿已曲yPmm肆也心咽旅口仃+jMethods-:亠St-E3AxxegnJTrmfrtn厲

23、龍业池沧曲玮强m&ii血SsctpiLobd立订1iIpcbdentiesJ=|E?*MW鸟聘翕EC豐Ln乱匚肛飪SibSTrarLsfcrmatiGriK(obj-trfiiIziplentyouztrarisforiastianarthsreDiritapset=nothingsetmp-treateDatrCobj)if(notmapisnothin?)thentrfjl.SetSourceobjjnapaap.Stereotype=yPrefisiedPobjTDeleteendifEndSub图13定义也p口Aaaap-VU_3qgwivyEdJfsvv屮Mol血晦5VV总H口%3a

24、sosssAAP#*osvv血定制该类别的生成文件:由于客户要求为每个Process生成一个相关的帮助文件,于是,小张采用了PD提供的代码生成功能(CodeGenerator)。PD会根据具体的PSM模型以及代码模版,在正确的目录位置下生成不同的文件信息。操作方法:MyProcessDefined节点下新建GeneratedFiles,在生成的Template处添加相关的语言模版,此处PD提供强大的GTL模版定义语言,您可以点击按钮来寻求指导。FileName处需要填写生成的带有相对目录的文件名,也可以引用模版,并在该模版内定义文件名的生成情况。Jl.ltTlibuthX鼻_触版1*4.1屯说Fil41*_JKt.hd.x_1奄書el.洋日+E3t*Activsty+砂卧呵W+回H&p丁克IKyFrotetiDefifitd-_J*5ep*r4*dFiles:JHtilpInforaition4.StpIjoI-EBVnd祥冷誠Tron五氏anx詔JRvpl-kctD-ktiTral-a*vC!1GlobtASer:pt.btanw:specifythatnoneofcolumnsisinllwReteietzedoinsCsrwientHelpmejsag?-*苦匚n

温馨提示

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

评论

0/150

提交评论