下文摘自我在Java开源群的MDA讲座,驻留站点:http://www.writeonce.net/bbs/qqlog/mda.htm

(1)      什么时候不模型驱动构架

摘自-Dan Haywood, 模型驱动构架 in a Nutshell, 2004. http://www.theserverside.com/articles/article.tss?l=MDA_Haywood

 

风险承担人不关心模型,业务不关心模型,LDMLogical Data Model逻辑数据模型)不重要,那么PIMPlatform-Independent Model平台无关模型)不重要。

业务不稳定,靠技术作为搅拌器以创造业务过程,或业务变化与技术变化一样快。

基础软件构架开发是整个业务的核心。

产生式软件制作方法为时过早。

 

(2)      什么时候模型驱动构架

摘自-Jorn Bettin, Model-Driven Software Development模型驱动的软件开发, 模型驱动构架 Journal(David S. Frankel 主编),2004

企业更专注模型 and 商业过程足够稳定(20年如一日的核心商业过程) not 使用技术搅拌器来创造商业过程。

基础软件构架一般在一个组织的竞争边界之外,除非整个商业专注于基础软件构架开发。

专用领域标记增加了重要的价值:如果开发超越传统的最低级别的公分母(如:基础软件构架),这些公分母在竞争者间不是主要的竞争力。

模型驱动的产生器(model-driven generators 成为基础信息构架(for工业化软件开发)的主要部分。

未来属于开源模型驱动产生器工具(Open Source model-driven generator tool kits, 不仅基本产生器是Open Source,而且公众所需的模型转换器也是Open Source的。

所有软件如果没有封装唯一的商业模型或竞争优势,则最好通过采购或来自Open Source

 

(3)      模型驱动构架所处的位置-领域概念到领域实现的桥

摘自- Markus Völter. 模型驱动构架 Praktisch, 2004

Say something about MDA

从右向从左读:

主要是图标记的图语言的表面语法:UMLprofile,图标记

图语言的语义定义:MOFMeta Object Facility元对象设施)、精确可执行模型(OCLObject Constraint Language对象约束语言,Action Semantic动作语义)

转换与编译:QVTQery/View/Transformation查询/视图/转换)。

PIMPSM:一个维抽象级别的分类:PIMPlatform-Independent Model平台无关模型),PSMPlatform-Dependent Model平台相关模型)。

(4)      UML语义强度—MOF簇语言的语义强度

摘自-Michael C. Daconta,Leo J. Obrst,Kevin T. Smith, The Semantic WebA Guide to the Future of XML, Web Services, and Knowledge Management. Wiley Publishing, Inc., 2003

Say something about MDA

上图给出了从语义最弱的分类(Taxonomy)到最强的模态逻辑(Model Logic)的图示。UML在图中与DAMIL+OILOWLOntology描述语言)接近,与它们的主要差距在于:UML缺乏语义推理的支持,如对导出关系的自动推理。


(5)      MOF自描述性

摘自-我在mdaChina.net发的帖子,元建模者的恶梦:3.MOF自描性的真相,

http://www.mdachina.net/forum/dispbbs.asp?boardID=2&ID=200&page=3

Say something about MDA
从图可以看到:MOF在用MOF::Class描述MOF::Class。(MOF::ClassMOF::Namespace的子类,所以它可以包含MOF::AttributeMOF元模型元素间关系,如包含关系等,必须保留,否则就不满足MOF语言的静态语义规范)。MOF::Class描述了MOF::Class的最基本结构(“三档Box”:参见“元建模者的恶梦2”):类名特征、属性特征、方法特征(这里没有),以及各种约束等。
图中没有连接的问号,不是很清楚,一个猜测是这两个属性是OptimalJMOF加的反射。

(6)      metaGME的自描述性

摘自-Vanderbilt University, The General Modeling Environment(GME),2004


Say something about MDA

图中的上部分是metaGME范式用于描述GME通用建模工具的元元模型-metaGME,并且该范式可被该工具解释并重新装载。图中红线表示概念的描述,如:Atom描述Atom

(7)      模型转换-经典的编译方法

摘自-Mikaël Peltier, On levels of model transformation, 2003.


Say something about MDA

第一空间为元模型空间(MOF族语言空间):用扩展的MOF语言所定义的源语言的元模型(Meta-model M1),目标语言的元模型(Meta-model M2)和它们间转换(Transformation Rules)。该转换主要是规范源语言中的概念项如何映射到目标语言中的概念项。转换规则本身又是由扩展的MOF语言(QVT)所编写,经过编译和代码生成,转换规则被翻译到第二空间的XSLT语言所编写的转换规则。第一空间的扩展MOF语言初略相当于用于编写文法的语言EBNF。而Meta-model M1初略相当于源语言的文法。

第二空间为模型的物理表示空间:Model M1表示用源语言所编写的模型(Model M1,即Meta-model M1实例),其物理表现就是XMI文件。模型转换规则已被翻译为XLST语言的编写的转换程序,故可用于转换源模型(XMI文件)到目标模型(XMI文件)。

 

扩展MOF的含义是指:为MOF语言增加语言设施以支持模型转换的定义。

 

(8)      模型转换-图文法(图重写)的方法

摘自- Vanderbilt University, Graph Rewriting and Transformation (GReAT),2003

Say something about MDA

上图是将SFSignal Flow转换到FSF(Flat Signal Flow)的图转换规则定义。GReAT以图标方式定义模型转换,InHost--表示源图输入,InDest--表示目标图输入。该图语言支持递归和条件,所以是图灵完备的语言,可以写出与其它QVT建议(如:QVT-partner)所建议语言的等价的模型转换程序。GReAT转换规则定义被翻译成C++程序以操作源和目标模型的物理表示(以 XML文件表示)。

一个规则的定义:
Say something about MDA
Say something about MDA

左边的项依次为:

1)   MachersRoom1=House.KitchenRoom2=House.LivingRoomAdjacentTo=House.AdjacentTo

2)   Out VariablesOrderItem PurchaseOrder.Door Order

3)   In/Out VariablesHouse House

4)   In VariablesPurchaseOrder

Say something about MDA

上图是模型转换规则的Debuger环境,以调试模型转换规则。

 

(9)      一个建议的开发方法:PIM-PSM映射只是众多精化方面的一维,

摘自- Raul Silaghi and Alfred Strohmeier, Integrating CBSE, SoC, 模型驱动构架, and 面向方面编程 in a Software Development Method, 2004


Say something about MDA

上面集成了:CBSEComponent-Based Software Engineering基于组件的软件工程), SoCSeparation of Concerns 分离关注点)模型驱动构架Model-Driven Architecture模型驱动的构架)面向方面编程Aspect-Oriented Programming面向方面的编程)。经典的模型驱动构架主要着重于纵向精化,即推进型转换(即引入实现细节)。而横向精化,则采用Soc面向方面编程为代表的方法(其实更多的是:MDSOCMulti-Dimensional Separation of Concerns 多维分离关注点的方法),是一种相同抽象级别的模型演化和组合方法。

 

(10)      工具

摘自-我即将发表的论文, Pattern Semantic Link: A Reusable Pattern Representation in 模型驱动构架 Context, 2004


Say something about MDA

试图整合:模型驱动构架, 产生式编程Generative Programming产生式编程),aop的开发环境。水平层配有面向方面编程支持。层间转换由产生式编程,mda产生。最关键的是图中显式区分了元模型及其实例(如:m3 meta-model及其实例m3 meta-model inst),以及两个意图:建模者意图(如:m2 meta-model view)与语言定义者意图(如:m3 meta-model)。

 

相关模型驱动构架工具列表:

GME,GReAT—MIC(模型集成的计算)方法学支撑工具。

EclipseEMF/GMT—MDSD方法学支撑工具。

OptimalJ,ArcStyler—MDA精化派的主导工具。

xtUML(Executable and Translatable UML)—MDA翻译派(可执行UML)的代表工具。

PEAK-基于Python的企业开发工具,支持产生式编程面向方面编程

AHEAD-FOPFeature-Oriented Programming),面向特征的编程工具。

 

(11)      模型驱动构架作为产生式编程的标准基础

摘自-David Frankel, The Eclipse Modeling Framework and 模型驱动构架® Status and Opportunities, 2004


领域专用语言

MOFUML profileMOF-HUTN文本语言。

不足:MOF缺乏定义图语法的能力。

活动源

包装在建模frameworkMOF基础的语言,及部件,编辑器,产生器,调试器,呈现支持。

可扩展的开发环境中的源图

– JMI, 及其MOF反射。

定义产生器

– MOF QVT

物理程序交换

– XMI

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-29
  • 2022-12-23
  • 2021-09-15
  • 2022-02-05
  • 2021-09-24
  • 2022-12-23
猜你喜欢
  • 2021-10-09
  • 2021-07-15
  • 2021-08-16
  • 2021-08-24
  • 2021-11-25
  • 2021-05-28
  • 2021-11-15
相关资源
相似解决方案