日前和IBM大牛谈到 什么是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”。

概念之争:什么是MDA?相关推荐

  1. 模型驱动架构(MDA,Model Driven Architecture)浅述

    前言 西西弗斯是古希腊神话中的科林斯国王,他被罚将一块巨石推到山上,但无论西西弗斯如何努力,每次石头到达山顶之前都不可避免地滚下来,周而复始,永无休止. 在<应用 MDA >一书中,作者 ...

  2. 云计算:技术疲劳玩概念 伪云项目横行于世

    2010年,云计算概念漫天飞舞,层出不穷:2011年,云计算是否真的如愿,落地成雨.回归理性?笔者汇总整理了<IT时代周刊>第七届CEO年会上的精彩观点,以飨读者. 年会现场 赞同派-- ...

  3. [架构之路-92]:《软件架构设计:程序员向架构师转型必备》-2-解析软件架构的概念

    前言: 什么是软件架构?不同的人,有不同的答案.因为架构无处不再,架构又有不同层面. 很多人都给架构定义,不同的人,对架构有不同的理解,很难统一. 本文是按照作者个人的理解,来展现一个程序员如何向架构 ...

  4. Scrum vs Kanban,如何选择?

    两大方法 虽然敏捷诞生只有20年的时间,但却帮助了很多企业取得了成功,在这期间也出现了各种敏捷方法论和思想体系,这篇文章,我们试图去讨论一个问题:对于准备实施敏捷的团队,在Scrum和Kanban两种 ...

  5. 2021 re:Invent ,我们到底该关注哪些发布?

    作者 | 王一鹏 2021 亚马逊云科技 re:Invent 刚刚落下帷幕,许多开发者都在讨论今年亚马逊云科技 re:Invent 的重磅发布. 这并不奇怪,每年亚马逊云科技 re:Invent 都会 ...

  6. MDD(模型驱动开发)

    前言导读 当下企业软件应用开发面临着需求复杂多变.新的需求和系统不断增长,软件系统变得越来越复杂,普通的软件开发方式难以快速满足用户需求.为了解决这些问题,就出现了很多新的方法,其中最突出的一个就是模 ...

  7. 阅读论文Formal verification of smart contracts based on users and blockchain behaviors models

    1 题目(Formal verification of smart contracts based on users and blockchain behaviors models) 1.1 作者.出 ...

  8. 数字货币步伐加快,苏州将于双十二推出数字人民币红包测试

    11月23日消息,据澎湃新闻报道,一位知情人士表示,苏州将于双十二推出数字人民币红包测试,成为继深圳后第二个进行数字人民币红包测试的试点城市. 该知情人士还称,目前苏州相关城区已有很多商家安装NFC( ...

  9. 能源互联网涉及的领域:能量输送与能源信息

    能源互联网概念的诞生源自于传统经济和社会发展模式的变革,同时也得力于可再生能源和信息技术的迅速发展,杰里米.里夫金在<第三次工业革命>一书中提出了能源互联网的愿景,而在能源互联网的定义上采 ...

最新文章

  1. easybcd安装Ubuntu
  2. Java I/O演进与Linux网络I/O模型
  3. WPF 4 Ribbon 开发 之 应用程序菜单(Application Menu)
  4. java前后端用json传值_前后端——json的传值与接收(springMvc)
  5. 从零开始学习docker(十三)Docker Compose--scale
  6. 【全】Docker(二)-在Docker中部署Nginx实现负载均衡视频教程
  7. Java中的List你真的会用吗
  8. 【英语学习】【English L06】U06 Banking L6 Do you use online banking?
  9. MPEG2简单码流分析
  10. element引入的组件大小高度不对_ElementUI 在 按需引入时定义 default size?
  11. linux7重启network,mmp的 rhel7 network重启一直失败,求原因!!!
  12. cad导出pdf_CAD批量打印插件神器CAD导出PDF插件
  13. 在html中实现word中打批注的功能
  14. File Juicer for Mac(文件内容提取工具)
  15. 【算法】Leetcode438. 找到字符串中所有字母异位词(每日一题)
  16. JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单
  17. esp8266基于arduino一键配网掉电保存WIFI账号密码
  18. 蓝魔手机回归产品本身 老战友魅族OPPO怎么看?
  19. 新建UEFI启动分区
  20. arm linux 中littlevgl支持tslib的方法

热门文章

  1. MySQL 到Oracle 实时数据同步实操分享
  2. 快速找出QQ群成员中不在名单内的人
  3. Slysoft All-in-One 1.9 (21/03/2007)
  4. 第六章 面向对象编程基础总结
  5. 数字电子技术实验ICC作业——引讲视频(攻略)
  6. 联想万全r520服务器安装系统,联想万全R520 BIOS设置.pdf
  7. 怎样在xampp中使用mysql以及配置xampp
  8. 房贷15年提前10年还清划算吗?
  9. 解决:[DCC Fatal Error] **.dpk : E2202 Required package '***' not found
  10. visualstudio 2013 mysql entityframework :实体模型无法添加,闪退