模型驱动课程介绍

上传人:公**** 文档编号:567611508 上传时间:2024-07-21 格式:PPT 页数:90 大小:3.60MB
返回 下载 相关 举报
模型驱动课程介绍_第1页
第1页 / 共90页
模型驱动课程介绍_第2页
第2页 / 共90页
模型驱动课程介绍_第3页
第3页 / 共90页
模型驱动课程介绍_第4页
第4页 / 共90页
模型驱动课程介绍_第5页
第5页 / 共90页
点击查看更多>>
资源描述

《模型驱动课程介绍》由会员分享,可在线阅读,更多相关《模型驱动课程介绍(90页珍藏版)》请在金锄头文库上搜索。

1、北京大学软件与微电子学院课程北京大学软件与微电子学院课程模型驱动的软件开发技术模型驱动的软件开发技术Model-driven Software Development Technology 课程介绍课程介绍蒋严冰蒋严冰提提 纲纲课程主要目标课程主要目标引例引例课程特色课程特色在模型驱动领域的研究背景与成果在模型驱动领域的研究背景与成果授课方式与课程要求授课方式与课程要求课程内容与计划课程内容与计划课程的准备知识、学习方法课程的准备知识、学习方法本课程所用到的工具集本课程所用到的工具集课程分数评定课程分数评定参考资料参考资料研究项目与原型展示研究项目与原型展示课程主要目标了解软件开发方法学在面向

2、对象软件开发方法之后的最新发展趋了解软件开发方法学在面向对象软件开发方法之后的最新发展趋势与关键技术,如基于构件,面向特征,面向特征等技术。势与关键技术,如基于构件,面向特征,面向特征等技术。掌握模型驱动软件开发方法的基本概念与主要思想。掌握模型驱动软件开发方法的基本概念与主要思想。掌握模型驱动软件开发方法中的关键技术,如元建模技术、模型掌握模型驱动软件开发方法中的关键技术,如元建模技术、模型转换和代码生成的规范与方法。转换和代码生成的规范与方法。初步掌握将模型驱动软件开发方法运用到特定领域的方法,技术初步掌握将模型驱动软件开发方法运用到特定领域的方法,技术与工具。与工具。改变对软件开发的传统

3、思路,更深理解软件工程。改变对软件开发的传统思路,更深理解软件工程。掌握前沿软件开发方法,增强职业竞争力。掌握前沿软件开发方法,增强职业竞争力。提高研究能力,开阔学术视野,培养把握前沿软件开发方法的研提高研究能力,开阔学术视野,培养把握前沿软件开发方法的研究与应用能力。究与应用能力。引例引例软件企业面临的问题软件企业面临的问题攸关系统攸关系统汽车领域汽车领域 航天领域航天领域恒润科技恒润科技 http:/ http:/ 华为华为 上海证券上海证券 涉及软件外包的企业涉及软件外包的企业软件外包过程中,甲乙双方沟通问题。软件外包过程中,甲乙双方沟通问题。软件外包过程中,甲乙双方知识产权问题。软件外

4、包过程中,甲乙双方知识产权问题。金融公司金融公司 银行银行 课程特色课程特色深入、系统、完整地讲解模型驱动软件开发方法的产生背深入、系统、完整地讲解模型驱动软件开发方法的产生背景及其中的关键技术与规范。景及其中的关键技术与规范。深入讲解深入讲解UML/MOF/QVT语言的高级技术细节,讲解完整语言的高级技术细节,讲解完整的模型驱动软件开发方法。的模型驱动软件开发方法。展示模型驱动方法中的工具集。展示模型驱动方法中的工具集。综合最新研究文献与多年研究成果,集理论性、实用性、综合最新研究文献与多年研究成果,集理论性、实用性、研究性、前沿性一体。研究性、前沿性一体。提供丰富的案例提供丰富的案例,便于

5、快速掌握关键技术便于快速掌握关键技术通过完整案例,展示模型驱动软件开发的过程。通过完整案例,展示模型驱动软件开发的过程。课程内容与计划课程内容与计划课次课次内容内容学时学时时间时间1课程介绍课程介绍绪论绪论:模型驱动软件开发技术综述与后面向对象模型驱动软件开发技术综述与后面向对象方法与模型驱动方法与模型驱动 3学时学时2014.2.19 星期三星期三 下午下午2:005:002元建模技术元建模技术概述概述 元建模技术元建模技术UML的元模型体系结构与扩展的元模型体系结构与扩展机制机制3学时学时2014.2.26星期三星期三 下午下午2:005:003元建模技术元建模技术元建模过程与支撑工具元建

6、模过程与支撑工具元建模技术元建模技术 实战案例实战案例3学时学时2014.3.5星期三星期三 下午下午2:005:004元建模技术元建模技术 实战案例实战案例3学时学时2014.3.12星期三星期三 下午下午2:005:005元建模技术元建模技术 展示与辅导展示与辅导3学时学时2014.3.19星期三星期三 下午下午2:005:00课程内容与计划课程内容与计划课次课次内容内容学时学时时间时间6模型转换技术模型转换技术概述概述模型转换技术模型转换技术基于基于QVT relation的转换语的转换语言与工具言与工具3学时学时2014.3.26星期三星期三 下午下午2:005:007模型转换技术模型

7、转换技术基于基于QVT relation的案例的案例3学时学时2014.4.2 星期三星期三 下午下午2:005:008模型转换技术模型转换技术基于基于QVT operational的转换的转换转换语言与工具转换语言与工具3学时学时2014.4.9 星期三星期三 下午下午2:005:009模型转换技术模型转换技术基于基于QVT operational的案例的案例3学时学时2014.4.16 星期三星期三 下午下午2:005:0010模型转换技术模型转换技术基于基于QVT operational的案例的案例3学时学时2014.4.23星期三星期三 下午下午2:005:00课程内容与计划课程内容与

8、计划课次课次内容内容学时学时时间时间11模型转换技术模型转换技术 展示与辅导展示与辅导3学时学时2014.4.30 星期三星期三 下午下午2:005:0012模型驱动的代码生成技术模型驱动的代码生成技术基于基于Jet的代码生的代码生成语言与工具成语言与工具3学时学时2014.5.7星期三星期三 下午下午2:005:0013模型驱动的代码生成技术模型驱动的代码生成技术基于基于QVT M2T的的代码生成语言与工具代码生成语言与工具Acceleo3学时学时2014.5.14星期三星期三 下午下午2:005:0014模型驱动的代码生成技术模型驱动的代码生成技术 展示与辅导展示与辅导3学时学时2014.

9、5.21星期三星期三 下午下午2:005:0015模型驱动双向工程与重构技术与案例模型驱动双向工程与重构技术与案例3学时学时2014.5.28星期三星期三 下午下午2:005:0016分组项目答辩分组项目答辩3学时学时2014.6.4星期三星期三 下午下午2:005:00授课方式与课程要求授课方式与课程要求课堂讲授与讨论相结合课堂讲授与讨论相结合鼓励相关论文规范阅读鼓励相关论文规范阅读分组项目与展示分组项目与展示理论学习与项目实践相结合理论学习与项目实践相结合注重相关工具集的使用注重相关工具集的使用课程的准备知识、学习方法课程的准备知识、学习方法准备知识准备知识一种面向对象的编程语言一种面向对

10、象的编程语言面向对象技术面向对象技术UML学习方法学习方法理论与实践相结合理论与实践相结合学习与研究相结合学习与研究相结合本课程所用到的工具集本课程所用到的工具集Eclipse modelinghttp:/www.eclipse.org/downloads/packages/eclipse-modeling-tools/indigosr1Medini QVThttp:/projects.ikv.de/qvt/本课程所用到的工具集本课程所用到的工具集工具工具作用作用基于工具基于工具配置与修改方案配置与修改方案元建模工具元建模工具可可视视化地建立各种模型的化地建立各种模型的ecore元模型元模型E

11、clipse modeling Ecore tools直接可直接可视视化的使用化的使用Eclipse modeling Ecore tools 中中Ecore diagram可可视视化的建立各种模型的化的建立各种模型的ecore元模型,并存元模型,并存储为储为.ecore文件。文件。可可扩扩展的建展的建模工具模工具以以ecore元模型元模型为输为输入,将其入,将其可可视视化的化的绑绑定建模元素定建模元素的表示法与行的表示法与行为为,形成,形成支持各种支持各种ecore元模型的元模型的建模工具。用以生成各建模工具。用以生成各种模型种模型,并以并以.xmi的方式的方式存存储储.Eclipse mo

12、deling GMF利用利用GMF的提供的配置向的提供的配置向导导可可产产生生简单简单的建模的建模工具的插件,如工具的插件,如对对表示法和行表示法和行为为有特殊的有特殊的要求,可通要求,可通过过修改所生成的建模工具的插修改所生成的建模工具的插件的源代件的源代码码。基于基于QVT的的模型模型转转换换根据既定的根据既定的QVT元模型元模型转转化化规则规则,以一种,以一种web领领域域模型模型为输为输入,通入,通过转换过转换输输出另外一种模型出另外一种模型Eclipse modeling operational QVT ;mediniQVT大部分大部分转换转换可通可通过过在在这这些模型些模型转换转换

13、工具中工具中输输入入以以QVT规规范范编编写的写的转换语转换语言后,即可自言后,即可自动动实现实现。其中。其中Eclipse modeling operational QVT支持支持过过程化的程化的转换转换描述,描述,mediniQVT支持关系声明型的支持关系声明型的转换转换描述。描述。代代码码生成生成可通可通过过QVT及及EMF工具分工具分别别以模型以模型转换转换的方法或模的方法或模板的方法板的方法实现实现。Eclipse modeling JETAcceleo代代码码生成可通生成可通过过EMF中的中的JET工具,以模板的工具,以模板的方式方式实现实现.逆向工具逆向工具将原代码逆向为代码模型

14、将原代码逆向为代码模型(抽象语法树)(抽象语法树)Eclipse Modisco将将Java代代码转换为码转换为ecore格式的格式的Java模型(抽象模型(抽象语语法法树树),以便),以便进进行模型行模型转换转换和重构和重构课程分数评定课程分数评定考核方式考核方式无笔试无笔试 无编码项目无编码项目平时成绩平时成绩 30%项目成绩项目成绩 70%项目要求项目要求基于基于Eclipse modeling等模型驱动支撑工具,建立特定领等模型驱动支撑工具,建立特定领域的模型驱动工具,包括元建模、模型转换及代码生成等部域的模型驱动工具,包括元建模、模型转换及代码生成等部分。分。要求:要求:明确描述需求

15、明确描述需求重点描述元模型与基于重点描述元模型与基于QVT的转换方案及实验的转换方案及实验案例案例代码生成方案代码生成方案课程项目选取领域课程项目选取领域Web领域代码自动生成工具领域代码自动生成工具手机领域代码自动生成工具手机领域代码自动生成工具基于设计模式的模型自动转换基于设计模式的模型自动转换其他其他课程参考资料课程参考资料Stahl,T.,Volter,M.等著,杨华,高猛译等著,杨华,高猛译,模型驱动软件开发:技术、模型驱动软件开发:技术、工程与管理工程与管理,清华大学出版社清华大学出版社,2009年年1月第一版月第一版 S.J.Mellor,M.J.Balcer,Executabl

16、e UML, A Foundation For MDA,科学出版社科学出版社 影印,影印, 2003年年5月月第一版第一版QVT-Partners,Revised submission for MOF 2.0 Query/Views/Transformations RFP,Version 1.1 (2003/08/18),http:/qvtp.org/UML 2.0 Superstructure Specification http:/www.omg.org/UML 2.0 Infrastructure Specification http:/www.omg.org/ MOF Query /

17、Views / Transformations http:/www.omg.org/technology/documents/formal/uml.htmMDA Guide V1.0.1 http:/www.omg.org/cgi-bin/doc?omg/03-06-01模型驱动的研究项目与原型模型驱动的研究项目与原型模型驱动的模型驱动的Web领域软件模型体系、模型转换及代码领域软件模型体系、模型转换及代码生成技术与原型生成技术与原型模型驱动模型驱动的的J2EE部署模型工具部署模型工具WBM到到SOMA的模型转化系统的模型转化系统软件外包领域模型驱动开发方法中模型伪装与转换软件外包领域模型驱动

18、开发方法中模型伪装与转换下一代网络架构和协议的广义模型和转换下一代网络架构和协议的广义模型和转换模型驱动的模型驱动的Web领域软件领域软件模型体系、模型转换及代模型体系、模型转换及代码生成技术与原型码生成技术与原型Web领域代码自动生成工具领域代码自动生成工具UML及其扩展机制及其扩展机制/QVTWeb领域模型转换及代码生成研究领域模型转换及代码生成研究Web领域建模工具原型研发领域建模工具原型研发(基于基于eclipse-modeling Ecore tools,GMF的的Web领域元建模及建模工具领域元建模及建模工具)Web模型转化与代码生成工具模型转化与代码生成工具原型研发原型研发(基于

19、基于mediniQVT及及 eclipse-modeling operational QVT EMF的模型转化与代码生成工具的模型转化与代码生成工具)在具体在具体Web系统开发中的应用、验证与比较系统开发中的应用、验证与比较Web应用实践应用实践基于基于MDA的的Web领域模型研究领域模型研究Web领域的领域的CIM模型模型(基于(基于Ecore的的web领域领域需求的元模型需求的元模型)Web领域的领域的PIM模型模型(基于(基于Ecore的的web领域领域独立平台的元模型)独立平台的元模型)Web领域的领域的PSM模型模型Web领域领域CIM到到PIM转换转换(基于(基于QVT的的CIM到

20、到PIM转换)转换)Web领域领域PIM到到PSM转换转换(基于(基于QVT的的CIM到到PIM转换)转换)Web领域领域PSM到源代码转换到源代码转换模型到元模型归纳转换技术模型到元模型归纳转换技术模型体系与模型转换概要模型体系与模型转换概要实例:博客领域模型驱动的开发实例:博客领域模型驱动的开发表现层表现层陈定胜陈定胜耿耘耿耘刘洋刘洋骆云骆云数据持久化层数据持久化层朱晓文朱晓文赵越月赵越月业务逻辑层业务逻辑层元建模元建模模型转换模型转换代码生成代码生成 90% 100% 100%分析模型元模型分析模型元模型数据访问层元模型数据访问层元模型业务逻辑层元模型业务逻辑层元模型展现层元模型展现层元

21、模型分析模型分析模型数据访问层设计模型数据访问层设计模型业务逻辑层设计模型业务逻辑层设计模型展现层设计模型展现层设计模型LOGO数据访问层的代码生成数据访问层的代码生成业务逻辑层代码生成业务逻辑层代码生成展现层代码生成展现层代码生成展现层展现层基于基于android的手机的手机代码框架代码框架生成生成系统系统JSP Servelet代码框架代码框架生成系统生成系统分析模型元模型分析模型元模型数据访问层元模型数据访问层元模型业务逻辑层元模型业务逻辑层元模型展现层元模型展现层元模型分析模型分析模型数据访问层设计模型数据访问层设计模型业务逻辑层设计模型业务逻辑层设计模型展现层设计模型展现层设计模型L

22、OGO数据访问层的代码生成数据访问层的代码生成业务逻辑层代码生成业务逻辑层代码生成展现层代码生成展现层代码生成例例6.1:取消目标模型元素的自关联取消目标模型元素的自关联mapping Line:lineToline():Linewhen not (not self.source-resolveoneIn(ellipse:eTc)-isEmpty() and not self.tareget-resolveoneIn(ellipse:eTc)-isEmpty() and self.source-resolveoneIn(ellipse:eTc)=self.tareget-resolveoneI

23、n(ellipse:eTc) 在在lineToline中加入中加入when 子句子句取消目标模型元素的自关联取消目标模型元素的自关联抽象工厂模式抽象工厂模式转化为转化为一般工厂模一般工厂模式式将相同的子结构提取出来将相同的子结构提取出来将相同的子结构提取出来将相同的子结构提取出来modeltype simplegraph uses http:/simplegragh/;transformation NewTransformation(in source : simplegraph, out target:simplegraph);main() source.objectsOfType(simp

24、lediagram)-map SDToSD(); mapping simplediagram:SDToSD():simplediagram self.nodes-forEach(r) / result.nodes+=self.findNodeWithSameEllipse(r); if self.findNodeWithSameEllipse(r)-isEmpty() or self.findNodeWithSameEllipse(r)=null then result.nodes+=r.map NodeTNode() else var f:=resolveIn(abstractsubnode

25、, node)-select(e|e.nodename=father and ponentsellipse-first().nodename=ponentsellipse-first().nodename); if f-notEmpty() then continue endif; self.findNodeWithSameEllipse(r)-forEach(k) result.nodes+= map abstractsubnode(r,k).father; result.lines+= map abstractsubnode(r,k).l1; result.nodes+= map abst

26、ractsubnode(r,k).son; endif ;result.lines+=self.lines-map lineToline(); 将相同的子结构提取出来将相同的子结构提取出来mapping node:NodeTNode():node result.nodename:=self.nodename; result.to:=self.to-map lineToline(); result._from:=self._from-map lineToline(); ponents:=ponentsellipse-map ellipseToellipse(); ponents+=(ponent

27、srectangle-map rectangleTorectangle();helper simplediagram:findNodeWithSameEllipse(n:node) : Set(node) var renodes: Set(node) ;/if ponentsellipse=null then return null endif;var e :ellipse=ponentsellipse-first();self.nodes-forEach(m) ponentsellipse-forEach(f) if f.nodename=e.nodename then renodes+=m

28、; endif; ;return renodes;mapping line:lineToline():linemapping ellipse:ellipseToellipse():ellipse result.nodename:=self.nodename;mapping rectangle:rectangleTorectangle():rectangle result.nodename:=self.nodename;将相同的子结构提取出来将相同的子结构提取出来mapping abstractsubnode(in n1:node,in n2:node): father:node, son:no

29、de,l1:lineinitvar x:String =ponentsellipse-first().nodename; var f:=resolveIn(abstractsubnode, node)-select(e|e.nodename=father and ponentsellipse-first().nodename=x); if f-notEmpty() then father:=f-first() else object father:node nodename:=father; components+=object ellipsenodename:=x; ; endif; obj

30、ectson:node son.nodename:=n2.nodename; son.to:=n2.to-map lineToline(); son._from:=n2._from-map lineToline(); /ponents:=ponentsellipse-map ellipseToellipse(); ponents+=(ponentsrectangle-map rectangleTorectangle(); ; object l1:line l1.source:=son; l1.target:=father ; 产生内部结构产生内部结构:内部结构的连线内部结构的连线产生内部结构产

31、生内部结构:内部结构的连线内部结构的连线modeltype myfirstGMF uses http:/myfirstGMF/;transformation NewTransformation(in source : myfirstGMF, out target : myfirstGMF);main() source.objectsOfType(myfirstDiagram)-map SDToSD(); mapping myfirstDiagram:SDToSD():myfirstDiagram / ponent:= ponentcertainernode-map cTc(); ponentc

32、ertainernode-forEach(c) ponent+=c.map cTc(result);ponent+= ponentrectangle-map cTc(result); ponent+= ponentellipse-map cTc(result); result.lines+=self.lines-map lineToline();产生内部结构产生内部结构:内部结构的连线内部结构的连线mapping Node:nTn(inout m:myfirstDiagram):Node result.name:=self.name; result.to:=self.to-map lineTo

33、line(); result._from:=self._from-map lineToline(); mapping certainernode:cTc(inout m:myfirstDiagram):certainernode inherits Node:nTn sname:=self.sname; result.sons+= self.sonscertainernode-map cTc(m); result.sons+= self.sonsrectangle-map cTc(m); result.sons+= self.sonsellipse-map cTc(m); m.lines+=ma

34、p addinterStruct(result).sl;增加参数增加参数inout m:myfirstDiagram的目的是为了在产生的目的是为了在产生line时时,将其加入到将其加入到myfirstDiagram容器容器, inout 目的是需要修改传入的参数目的是需要修改传入的参数.产生内部结构产生内部结构:内部结构的连线内部结构的连线mapping addinterStruct(inout c: certainernode ):e:ellipse,r:rectangle,sl:Lineinit e:= new ellipse(ee); r:= object rectangle name:

35、=rr ; sl:=object Line Lname:=ll ; c.sons+=e; c.sons+=r; sl.source:=e; sl.tareget:=r;addinterStruct用于将用于将certainernode 中增加新的子结构中增加新的子结构,注意注意init此处不能省略此处不能省略特点特点1.自动化程度高自动化程度高.通过实验原型的研发通过实验原型的研发,我们已经完全掌握并熟练运用了完整的从元建模到我们已经完全掌握并熟练运用了完整的从元建模到模型转换再到代码生成的全部关键技术模型转换再到代码生成的全部关键技术,实现特定领域的从需求模型到设实现特定领域的从需求模型到设

36、计模型的转化计模型的转化,从设计模型到代码的转换从设计模型到代码的转换,实现整个软件开发流程的模型自实现整个软件开发流程的模型自动转换(基于动转换(基于QVT)和代码的自动生成(基于)和代码的自动生成(基于QVT M2T).而而IBM相应的相应的研发团队只是在模型转换代码生成方面,并且用到的代码生成技术(基研发团队只是在模型转换代码生成方面,并且用到的代码生成技术(基于于JET)不如我们的先进,模型转换完全采用编程方式实现。)不如我们的先进,模型转换完全采用编程方式实现。2软件开发效率高。我们的研发团队可以在很短的时间内针对特定领域软件开发效率高。我们的研发团队可以在很短的时间内针对特定领域搭

37、建特定领域的图形化建模工具、模型转换工具和代码生成工具。从而搭建特定领域的图形化建模工具、模型转换工具和代码生成工具。从而在很大程度上提高软件的开发效率在很大程度上提高软件的开发效率.3100%的代码生成。代码生成技术不仅能够提高软件的开发效率。而的代码生成。代码生成技术不仅能够提高软件的开发效率。而且也能够保证代码的质量。并且模型驱动的方法不同于以往的代码生成且也能够保证代码的质量。并且模型驱动的方法不同于以往的代码生成技术,可以通过不同阶段的模型的方式,对代码进行维护。并不存在传技术,可以通过不同阶段的模型的方式,对代码进行维护。并不存在传统观念中认为的生成的代码可维护性差的问题。统观念中

38、认为的生成的代码可维护性差的问题。基于基于模型驱动模型驱动的的J2EE部署模型工部署模型工具具大型项目的部署大型项目的部署的问题的问题为大型项目的部署提供一个宏观的部署视图:为大型项目的部署提供一个宏观的部署视图:很多部署协助工具能够完成编译、打包、拷贝的功能,但是这些很多部署协助工具能够完成编译、打包、拷贝的功能,但是这些一般都是针对结构相对简单的项目,而且没有一个图形化的界面一般都是针对结构相对简单的项目,而且没有一个图形化的界面提供给用户,不能让用户对整个部署的拓扑结构一目了然。提供给用户,不能让用户对整个部署的拓扑结构一目了然。如何自动生成正确的编译、部署脚本,并与项目保持一致:如何自

39、动生成正确的编译、部署脚本,并与项目保持一致:大多数人可能不会部署脚本的编写;保持部署脚本和项目的一致大多数人可能不会部署脚本的编写;保持部署脚本和项目的一致性问题,一旦项目的结构发生了变化,很可能需要重新对脚本进性问题,一旦项目的结构发生了变化,很可能需要重新对脚本进行修改。行修改。远程服务器的项目的部署远程服务器的项目的部署Eclipse或者或者RSA都提供了相应的插件能够很好的满足与本地服务都提供了相应的插件能够很好的满足与本地服务器的集成,比如返回本地服务器的状态,将项目编译、打包并拷器的集成,比如返回本地服务器的状态,将项目编译、打包并拷贝到本地服务器的相应目录完成部署,但是针对与远

40、程的服务器,贝到本地服务器的相应目录完成部署,但是针对与远程的服务器,一般还是得部署人员或者编写部署脚本,或者直接登录到相应的一般还是得部署人员或者编写部署脚本,或者直接登录到相应的机器,进行远程的操作。机器,进行远程的操作。部署元模型部署元模型部署模型部署模型部署结构建模工具部署结构建模工具一个典型的一个典型的J2EE项目作为实例演示项目作为实例演示序号项目名称项目作用1PetStoreBusiness提供一些必要常用的API供其它项目引用2PetStoreEAR用于部署打包的EAR项目3PetStoreEJB包含多个Session Bean和Entity Bean,完成整体项目的业务逻辑4

41、PetStoreEJBClient客户端利引用此接口对服务端的服务进行调用,从而完成业务调用5PetStoreWeb负责显示和交互的逻辑当将当将Workbench集成到集成到Eclipse中去后,中去后,运行运行Eclipse插件后,用户可以选择根插件后,用户可以选择根据项目产生部署模型,下图展示了启动据项目产生部署模型,下图展示了启动之前的效果:之前的效果:产生部署模型产生部署模型产生逻辑部署模型产生逻辑部署模型逻辑模型绑定到物理模型逻辑模型绑定到物理模型生成部署模型生成部署模型 成功运行项目后成功运行项目后的的效果图效果图WBM到到SOMA的模型转化系统的模型转化系统首先对要进行转换的三个

42、模型进行分析并首先对要进行转换的三个模型进行分析并设计出它们之间模型元素的映射规则,利设计出它们之间模型元素的映射规则,利用用RSA框架里的模型转换引擎根据映射规框架里的模型转换引擎根据映射规则将业务流程模型转换为服务模型,并最则将业务流程模型转换为服务模型,并最后转换为代码生成模型。后转换为代码生成模型。实现该设计方案的具体做法是先建立业务实现该设计方案的具体做法是先建立业务流程的领域模型,然后建立模型转换的流程的领域模型,然后建立模型转换的UML类图,并通过类图,并通过SWT/JFace为该模型为该模型转换工具提供了图形化用户界面的实现,转换工具提供了图形化用户界面的实现,最后利用最后利用

43、Eclipse的扩展机制以及的扩展机制以及GMF插插件对模型进行转换。件对模型进行转换。uSOMA解决方案工作流解决方案工作流uWBM模型Hotel WBM业务流程模型业务流程模型生成的生成的SOMA服务模型元素构成服务模型元素构成业务规则管理框架解决方案业务规则管理框架解决方案规则自动验证与到代码的自动转规则自动验证与到代码的自动转化工具化工具使用使用GMF技术建立规则适用的领域元模型与技术建立规则适用的领域元模型与RCP建模工建模工具具,用于建立适用规则的可视化模型用于建立适用规则的可视化模型.通过在元模型上编写通过在元模型上编写OCL语言描述的约束语言描述的约束,可以在模型层可以在模型层

44、面验证面验证OCL规则语义上的正确性。规则语义上的正确性。针对复杂的规则,单纯针对复杂的规则,单纯OCL规则并不能完全满足要求。针规则并不能完全满足要求。针对这种情况,使用对这种情况,使用GMF技术建立可视化的规则编辑器用于技术建立可视化的规则编辑器用于编辑规则,并通过与领域模型编辑器编辑的模型一起作为编辑规则,并通过与领域模型编辑器编辑的模型一起作为输入,进行验证和代码生成。输入,进行验证和代码生成。业务规则执行引擎业务规则执行引擎综合运用程序框架技术、程序动态加载与执行综合运用程序框架技术、程序动态加载与执行技术(技术(Java/dll)、数据库管理技术,对第一)、数据库管理技术,对第一部

45、分中生成的可执行的规则代码进行全生命周部分中生成的可执行的规则代码进行全生命周期管理期管理同时对规则中引用的对象也进行生命周期管理,同时对规则中引用的对象也进行生命周期管理,并提供一种程序自动加载与调用框架,根据其并提供一种程序自动加载与调用框架,根据其监控的各个对象的状态自动加载相应的规则代监控的各个对象的状态自动加载相应的规则代码,根据规则调用相应的执行动作。码,根据规则调用相应的执行动作。C/C+源代源代码码Simian Eclipse 插件插件相似的代码相似的代码片断片断集集Eclipse CDT抽象语法树抽象语法树AST基于基于AST的程序分析与缺陷模型生成器的程序分析与缺陷模型生成

46、器代码克隆缺陷模型代码克隆缺陷模型.ecore基于基于AST的缺陷分析的缺陷分析代码片断完全代码片断完全克隆克隆查询查询函数的完全克函数的完全克隆隆查询查询类完全克隆类完全克隆查查询询变化函数参数变化函数参数查询查询变化函数的返变化函数的返回值回值查询查询变化函数的变化函数的行行为查询为查询基于基于DOM的的.ecore XML文文档生成档生成器器基于基于GMF的可视化的源代码克隆缺陷建模工具的可视化的源代码克隆缺陷建模工具可视化的代码克隆缺陷模可视化的代码克隆缺陷模型型.ecore基于基于ecore的源代码克的源代码克隆缺陷元模隆缺陷元模型型源代码克隆源代码克隆缺陷建模缺陷建模GUI基于基于

47、ecore的源代码克的源代码克隆缺陷建模隆缺陷建模工具工具基于基于QVT O的缺陷模型自动修复工具的缺陷模型自动修复工具代码片断完全代码片断完全克克隆缺陷模式隆缺陷模式转化转化函数的完全克函数的完全克隆隆缺陷模式转缺陷模式转化化类完全克隆类完全克隆缺缺陷模式转化陷模式转化变化函数参数变化函数参数缺陷模式转化缺陷模式转化变化函数的返变化函数的返回值回值缺陷模式缺陷模式转化转化变化函数的变化函数的行行为缺陷模式转为缺陷模式转化化代码克隆缺陷优化模型代码克隆缺陷优化模型.ecore基于基于GMF/QVT O的缺陷模的缺陷模型手动修复工具型手动修复工具基于基于QVTO的的克隆缺克隆缺陷模型陷模型模型标

48、模型标注器注器基于基于GMF的源代码的源代码克隆缺陷克隆缺陷模型调整模型调整GUI基于基于M2T/JET的缺陷优化模型到代码的生的缺陷优化模型到代码的生成与拼接工具成与拼接工具优化优化的代码的代码片断片断集集优化优化C/C+源代码源代码软件外包领域模型驱动开发方法中模型伪软件外包领域模型驱动开发方法中模型伪装与转换装与转换模型伪装与转换示意图模型伪装与转换示意图基于基于QVT的转换机制的转换机制基于基于GMF的开放协议建模工具开发的开放协议建模工具开发PIM建模工具建模工具结构结构OCL规则规则行为行为OCL规则规则结构结构Ecore元模型元模型行为行为Ecore元模型元模型PSM建模工具建模

49、工具PSM结构结构OCL规则规则PSM行为行为OCL规则规则PSM结构结构Ecore元模型元模型PSM行为行为Ecore元模型元模型基于基于QVT的开放协议模型转换工具开发的开放协议模型转换工具开发交换机交换机PIM结构模型到结构模型到PSM结构模型的转换工具结构模型的转换工具交换机行为模型到交换机行为模型到PSM行为模型的转换工具行为模型的转换工具基于基于Acceleo的下一代交换机软件代码生成工具开发的下一代交换机软件代码生成工具开发控制器端代码生成工具控制器端代码生成工具交换机端代码生成工具交换机端代码生成工具人机界面人机界面控制控制数据管理数据管理通讯通讯通讯通讯控制控制交换交换下一代网络架构和协议的广义模型和转换谢谢!谢谢!欢迎选修模型驱动的软件开发技术!欢迎选修模型驱动的软件开发技术!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号