概念之争:什么是MDA?
日前和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?相关推荐
- 模型驱动架构(MDA,Model Driven Architecture)浅述
前言 西西弗斯是古希腊神话中的科林斯国王,他被罚将一块巨石推到山上,但无论西西弗斯如何努力,每次石头到达山顶之前都不可避免地滚下来,周而复始,永无休止. 在<应用 MDA >一书中,作者 ...
- 云计算:技术疲劳玩概念 伪云项目横行于世
2010年,云计算概念漫天飞舞,层出不穷:2011年,云计算是否真的如愿,落地成雨.回归理性?笔者汇总整理了<IT时代周刊>第七届CEO年会上的精彩观点,以飨读者. 年会现场 赞同派-- ...
- [架构之路-92]:《软件架构设计:程序员向架构师转型必备》-2-解析软件架构的概念
前言: 什么是软件架构?不同的人,有不同的答案.因为架构无处不再,架构又有不同层面. 很多人都给架构定义,不同的人,对架构有不同的理解,很难统一. 本文是按照作者个人的理解,来展现一个程序员如何向架构 ...
- Scrum vs Kanban,如何选择?
两大方法 虽然敏捷诞生只有20年的时间,但却帮助了很多企业取得了成功,在这期间也出现了各种敏捷方法论和思想体系,这篇文章,我们试图去讨论一个问题:对于准备实施敏捷的团队,在Scrum和Kanban两种 ...
- 2021 re:Invent ,我们到底该关注哪些发布?
作者 | 王一鹏 2021 亚马逊云科技 re:Invent 刚刚落下帷幕,许多开发者都在讨论今年亚马逊云科技 re:Invent 的重磅发布. 这并不奇怪,每年亚马逊云科技 re:Invent 都会 ...
- MDD(模型驱动开发)
前言导读 当下企业软件应用开发面临着需求复杂多变.新的需求和系统不断增长,软件系统变得越来越复杂,普通的软件开发方式难以快速满足用户需求.为了解决这些问题,就出现了很多新的方法,其中最突出的一个就是模 ...
- 阅读论文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 作者.出 ...
- 数字货币步伐加快,苏州将于双十二推出数字人民币红包测试
11月23日消息,据澎湃新闻报道,一位知情人士表示,苏州将于双十二推出数字人民币红包测试,成为继深圳后第二个进行数字人民币红包测试的试点城市. 该知情人士还称,目前苏州相关城区已有很多商家安装NFC( ...
- 能源互联网涉及的领域:能量输送与能源信息
能源互联网概念的诞生源自于传统经济和社会发展模式的变革,同时也得力于可再生能源和信息技术的迅速发展,杰里米.里夫金在<第三次工业革命>一书中提出了能源互联网的愿景,而在能源互联网的定义上采 ...
最新文章
- easybcd安装Ubuntu
- Java I/O演进与Linux网络I/O模型
- WPF 4 Ribbon 开发 之 应用程序菜单(Application Menu)
- java前后端用json传值_前后端——json的传值与接收(springMvc)
- 从零开始学习docker(十三)Docker Compose--scale
- 【全】Docker(二)-在Docker中部署Nginx实现负载均衡视频教程
- Java中的List你真的会用吗
- 【英语学习】【English L06】U06 Banking L6 Do you use online banking?
- MPEG2简单码流分析
- element引入的组件大小高度不对_ElementUI 在 按需引入时定义 default size?
- linux7重启network,mmp的 rhel7 network重启一直失败,求原因!!!
- cad导出pdf_CAD批量打印插件神器CAD导出PDF插件
- 在html中实现word中打批注的功能
- File Juicer for Mac(文件内容提取工具)
- 【算法】Leetcode438. 找到字符串中所有字母异位词(每日一题)
- JavaScript判断手机号运营商是移动、联通、电信还是其他(代码简单
- esp8266基于arduino一键配网掉电保存WIFI账号密码
- 蓝魔手机回归产品本身 老战友魅族OPPO怎么看?
- 新建UEFI启动分区
- arm linux 中littlevgl支持tslib的方法
热门文章
- MySQL 到Oracle 实时数据同步实操分享
- 快速找出QQ群成员中不在名单内的人
- Slysoft All-in-One 1.9 (21/03/2007)
- 第六章 面向对象编程基础总结
- 数字电子技术实验ICC作业——引讲视频(攻略)
- 联想万全r520服务器安装系统,联想万全R520 BIOS设置.pdf
- 怎样在xampp中使用mysql以及配置xampp
- 房贷15年提前10年还清划算吗?
- 解决:[DCC Fatal Error] **.dpk : E2202 Required package '***' not found
- visualstudio 2013 mysql entityframework :实体模型无法添加,闪退