概念之争:什么是MDA?

日前和IBM大牛谈到 什么是MDA,有所感,记录下来吧。

概念之争:什么是MDA?
* Key standards that make up the MDA-omg suite of standards include Unified Modeling Language (UML); Meta-Object Facility (MOF); XML Meta-Data Interchange (XMI); and Common Warehouse Meta-model (CWM).

如果说到MDA最正宗的定义,当然是来自 www.omg.org/mda

其中说的是,MDA是为应对业务和技术的变化提供的一种开放的、中立的开发方法。
然后说到了MDA的目的:将业务/程序逻辑与底层平台技术分离开来,这是为了保护软件开发投资方的利益。
但如何实现这一点呢?其实说得也有够清楚了,基于OMG提供的各种标准。这些核心标准包括:UML、MOF、XMI、CWM等(其实现在很重要的标准QVT应该纳入其中,QVT正在制定中)。

其它很多地方谈到的MDA的定义,包括说它是一个方法论什么的也有,很多是从MDA的目的去说,包括:
MDA的目标是模型的可执行。
MDA是使模型成为开发的核心工件。
……
这些都没错。

IMHO,我觉得MDA的定义,或者说ModelDriven的定义可以分为两种:
1) 广义的模型驱动
按目的来看,凡是在模型自动生成代码、模型可执行、以模型为中心的开发方面的工作,都可以说是模型驱动的。
在这个定义下,微软的VSTS是模型驱动的,不论它是否支持UML标准,或者用什么形式来支持OMG的标准。国内的KCOM( http://www.kcomsoft.com) 也是模型驱动的……
2) 狭义的模型驱动
从实施的方法来看,狭义的模型驱动是指基于OMG制定的这一系列标准所做的工作。这里,核心的概念有两个:four-layeredmodelarchitecture和MOF。四层模型结构以MOF为基础以一致的形式管理各种元模型和模型,并且为这些元模型和模型提供了各种模型操作的标准:如XMI、JMI、QVT等。根据统一定义的标准,有专门的厂商或开源组织去开发这些标准的执行引擎。这样MDA应用的开发中需要进行模型存储、数据交换、模型转换的地方都可以直接使用这些引擎,而不用自己去大包大揽。这其实就是标准化带来的好处,也是OMG这样一个标准化组织该干的事情。
从这个意义来说,我认为MDA包括了OMG对模型和元模型的基于MOF的统一管理,以及提供的各方面的模型操作标准。
这个定义下的MDA工具和应用目前也有不少,如Eclipse下的GMT、还有OptimalJ等……, http://www.modelbased.net/列出了不少。

按照这个狭义的定义得到的MDA,并不是一定要用在模型可执行等前面所说的那几个目的上,同样可以用在其它领域、其它目的上。
按前面所说,标准化带来的MDA给模型操作带来的诸多好处,涉及模型操作的很多应用都可以从中收益良多。例如MDA在MIC(ModelIntegratedComputing)、MDA在过程建模领域(法国Nante大学的Jean教授有好几篇论文)的应用。那么这些算不算MDA?笑……
其实概念之争没有太大意义 ,关键是希望从这些辨别中产生更多的想法和加深理解。
如果对我的看法有不同意见,欢迎来信和我讨论:yuandafengatgmail.com。

Ps:原来写过一篇《模型驱动架构MDA综述》,其实只写了一半,见“模型驱动架构MDA综述,《非程序员》第32期,www.umlchina.com”。

你可能感兴趣的:(eclipse,数据结构,IBM,领域模型,UML)