一、概述

上世纪90年代以来,软件产业的一个基本现象,就是基础平台和工具技术的更迭和变革愈演愈烈,超出任何人的预期和意愿,也完全超出个人所能够应付的范围。同时,企业界也在发生着翻天覆地的变化,互联网技术的应用,全球化运作模式,虚拟企业等新的商业理念催生了无数的系统整合和改造的需求。然而,如何应对企业与技术的快速变化,一直是软件界的专家学者们伤脑筋的问题。2002年由OMG(Object Management Group)所提出的MDA(Model-Driven Architecture)技术,便是为了解决这个变化的问题。

MDA所提出的解决方案是将企业及应用系统与实现技术平台分离,且以统一建模语言UML来表达与平台无关的PIM(Platform Independent Model),然后再设计出适用于特定平台的模型PSM(Platform Specific Model)。如此一来,因为分隔且封装了企业与技术两方面的变化,所以降低了两者的牵动。

二、核心内容及应用简介
     MDA并没有额外提出其他的标准和技术,它善用且整合多项已存在的标准及技术,如图1,这是MDA官方网站首页上的图片,充分呈现了MDA的期望与相关技术。

图1:MDA核心思想

从图1最内圈看起,MDA主要使用了UML(Unified Modeling Language) ,MOF(Meta-Object Facility)及CWM(Common Warehouse Metamodel)这三项建模标准,作为PIM及PSM的建模基础。不过,据著名建模专家邱郁惠表示,对于一般的开发人员而言,只要熟知UML统一建模语言,就可以开发MDA项目了。

MDA的第二内圈,代表公开标准或私有的实现技术平台,有CORBA,XMI/XML,.NET,JAVA及WEB SERVICE,等等。也就是说,MDA希望能制定出各式独特的具体平台专属的PSM转换规则,并且最好可以由厂商配合设计出MDA开发工具,以便能够将中立的PIM自动转出特定平台的模型PSM。

MDA的第三内圈,代表跨平台的通用服务(Pervasive Services),MDA定义了四种服务,目录服务(Directory Services),事务服务(Transaction Services),安全服务(Security Services)以及分布式事件及通知服务(Distributed Event and Notification Services)。OMG计划定义该四项通用服务,让任何平台上的应用程序或客户端都可以通过MDA环境,取得跨平台的服务。

MDA的最外围,则代表MDA可以应用在各式不同的领域环境中,诸如电子商务(E-Commerce),电信(Telecom),医疗保健(HealthCare),运输(Transportation),航空(Space),制造(Manufacturing),金融(Finance)等领域。

对于使用MDA进行开发的过程,根据邱郁惠在其著作中的建议,可以分为四个阶段:

  • CIM(Computation Independent Model)- 聚焦于系统环境及需求,但不涉及系统内部的结构与运作细节。
  • PIM(Platform Independent Model)- 聚焦于系统内部细节,但不涉及实现系统得具体平台。
  • PSM(Platform Specific Model)- 聚焦于系统落实于特定具体平台的细节,如EJB,J2EE或.NET都是一种具体平台。
  • Coding – 最后程序员依据PSM的UML模型内容,按图施工,编写出适用于特定具体平台的代码。

MDA描述的软件开发生命周期和传统生命周期没有大的不同,主要的区别在于开发过程创建的工件,包括PIM、PSM和代码。PIM是具有高抽象层次、独立任何实现技术的模型。PIM被转换为一个或多个PSM。PSM是为某种特定实现技术量身定做。例如,EJB PSM是用EJB结构表达的系统模型。开发的最后一步是把每个PSM变化为代码,PSM同应用技术密切相关。传统的开发过程从模型到模型的变换,或者从模型到代码的变换是手工完成的。但是MDA的变换都是由工具自动完成的。从PIM到PSM,再从PSM到代码都可以由工具实现。PIM, PSM,和Code 模型被作为软件开发生命周期中的设计工件,在传统的开发方式中是文档和图表。重要的是,它们代表了对系统不同层次的抽象,从不同的视角来看待我们的系统,将高层次的PIM 转换到PSM 的能力提升了抽象的层次。能够使得开发人员更加清晰地了解系统的整个架构,而不会被具体的实现技术所“污染”,同时对于复杂系统,也减少了开发人员的工作量。

三、发展现状
     目前,MDA 还处在一个发展的过程中,MDA还在不断的演进。虽然MDA正朝气蓬勃地走来,但是人们也能看出它所存在的问题。MDA最大的好处就是业务模型的持久价值,但是付出的代价是增加了抽象层,而目前看来,层之间的转换并不是我们所期待的那样顺畅,至少,从PIM到PSM,从PSM到代码,这个实现的过程要远比从3GL(third-generation language)生成机器代码来得困难。在建模技术方面,UML正在暴露其固有的缺陷,它需要扩展更多的机制来支持精确建模和分析模型,虽然目前OCL(Object Constraint Language)为精确建模提供了一定的支持,但是这种支持距离可执行模型的理想还很遥远。回顾MDA的历史,我们可以看出UML的巨大成功为MDA的产生奠定了坚实的基础,同时也感觉到:在由软件工艺到软件工程的漫漫长路中,MDA只不过是向前迈进了一小步,但却给整个软件业掀起了一场波澜,它在模型定义、开发过程等诸多方面都将对未来IT技术产生深远的影响。

在MDA开发工具市场上的情形是:由于从PIM 到PSM转换方法的标准化尚未完成,IBM、Borland等大型厂商大都持谨慎态度,虽然也纷纷在他们的开发工具中提供部分的MDA功能,但并没有完全遵循OMG定义的MDA规范。虽然如此,IBM除了在Rational中增加MDA功能之外,在开源项目Eclipse中,也提出了EMF(Eclipse Modeling Framework)这一创新的MDA代码生成系统项目,由此可见IBM对MDA这一发展中的技术的重视程度。Borland公司宣称他们也在关注MDA技术,并且准备在Together中配置基于MDA的模型自动生成功能。相对于业界大厂的冷静和矜持,一些中小厂商反而特别活跃,像Interactive Objects公司著名的ArcStyler、Compuware公司著名的OptimalJ,还有开放源码的AndroMDA等遵循OMG标准规范的MDA工具已在一些项目中得到了广泛的运用,并取得了显著的成效。

四、总结
     MDA的出现,为提高软件开发效率,增强软件的可移植性、协同工作能力和可维护性,以及文档编制的便利性指明了解决之道。MDA被面向对象技术界预言为未来两年里最重要的方法学。当今建模的主要问题在于,对于很多企业来说它只是纸面上的练习。这就造成了模型和代码不同步的问题,代码会被不断修改,而模型不会被更新,这样模型就失去了意义。弥补建模和开发之间的鸿沟的关键就在于将建模变为开发的一个必不可少的部分。MDA 是模型驱动开发的框架,MDA 的愿景是定义一种描述和创建系统的新的途径。MDA 使得UML 的用途走得更远,而不仅仅是美丽的图画。很多专家预言MDA 有可能会带领我们进入软件开发的另一个黄金时代。

五、参考资料
1. MDA官方网站:http://www.omg.com/mda/
2. 《系统分析师UML实务手册》,邱郁惠,机械工业出版社
3. 维基百科:http://en.wikipedia.org/
4. 博客园:http://www.cnblogs.com

IT John.

转载于:https://www.cnblogs.com/gzitjohn/archive/2009/03/13/1410220.html

模型驱动式架构(MDA)技术简介相关推荐

  1. 【惯性导航姿态仪】 05 捷联式惯性导航系统技术简介

    [惯性导航姿态仪] 05 捷联式惯性导航系统技术简介 引言: 惯性导航系统的基本原理 捷联的含义 自主式的导航方法 惯性导航是一门信息科学 惯性导航基本工作原理图 此文书摘自 : <捷联式惯性导 ...

  2. 插件式架构设计实践:插件式系统架构设计简介

    本系列博文将使用微软RIA技术解决方案Silverlight以及扩展性管理框架Managed Extensibility Framework(MEF),以插件式架构设计为导线,分享本人在从事基于微软S ...

  3. IT:后端进阶技术路线图(初级→中级→高级)、后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介、技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略

    IT:后端进阶技术路线图(初级→中级→高级).后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介.技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略 目录 后端 ...

  4. 3-docker 架构和底层技术简介

    3-docker 架构和底层技术简介 Docker Platform Docker 是一个平台. 提供了一个开发.打包.运行app的平台 把app和底层 infrastructure 隔离开来 根据上 ...

  5. 插件式架构设计实践一:插件式系统架构设计简介

    本系列博文将使用微软RIA技术解决方案Silverlight以及扩展性管理框架Managed Extensibility Framework(MEF),以插件式架构设计为导线,分享本人在从事基于微软S ...

  6. 支持百亿数据场景,海量高性能列式数据库HiStore技术架构解析

    支持百亿数据场景,海量高性能列式数据库HiStore技术架构解析 HiStore介绍 HiStore是阿里中间件团队研发的数据库产品,是一款基于独特的知识网格技术的列式数据库,定位于海量数据高压缩比列 ...

  7. 云计算基础架构平台构建与应用---openstack技术简介

    openstack技术简介: OpenStack是一个开源的云计算管理平台项目,几乎所有类型的云环境.以Python语言编写,整合Tornado 网页服务器.Nebula运算平台,使用Twisted软 ...

  8. 可伸缩性架构常用技术——之数据切分

    可伸缩性架构常用技术 --之数据切分(Data Sharding/Partition) 1 简介 本来想写一篇可伸缩性架构方面的文章,发现东西太多了,久久未能下笔,这里首先把大家最关注的数据切分(Pa ...

  9. AXI总线技术简介——ZYNQ PS和PL的互联技术

    AXI总线技术简介--ZYNQ PS和PL的互联技术 1.AXI总线介绍 2.AXI协议通道介绍 3.ZYNQ芯片内部的AXI总线 4.常用AXI接口IP介绍 5. 多个AXI接口互联交互 1.AXI ...

最新文章

  1. 比特币(包括BTC和BCH)的零确认到底安不安全?
  2. 比特币Cash Hard Fork辩论在压力测试后重新召开
  3. 没有与制定类型匹配的重载函数 cv::Vec<_Tp 实例
  4. function_core.php is missing下载,discuz中 function_core.php中的dmkdir有死环bug
  5. xmldocument如何创建一个不带结尾的节点_LDF文件是个啥?如何创建一个LDF文件
  6. Kubernetes应用部署模型解析(原理篇)
  7. .NET分布式框架 | Orleans 知多少
  8. tensorflow(GPU)使用
  9. .NET 开发系统 -知识 点
  10. Java中的String.hashCode()方法可能有问题?
  11. html语言中标记h1代表什么,HTML5中的标题标记(H1内部的P)中是否有段落元素是否有效?...
  12. SCPPO(八):登录实现逻辑
  13. 数据包接收系列 — IP协议处理流程(二)
  14. html 正则表达式密码判断,JS利用正则表达式实现简单的密码强弱判断实例
  15. VS报:dll标记为系统必备组件,必须对其进行强签名错误
  16. 在苹果笔记本如何使用python_苹果电脑系统如何运行python工具介绍
  17. 如何更改ElementUI组件的图标大小以及标签属性
  18. ECHART基本使用,折线图,柱状图,散点图,饼图,盒形图5分钟上手
  19. Java基础12 implement和extends的区别
  20. 基础树状数组和线段树

热门文章

  1. unsupported format character Y (0x59) at index 167
  2. Oracle clob怎么存储超过4000长度的数据,你了解吗
  3. 一次弄懂Event Loop(彻底解决此类面试问题)
  4. Dagger2 简介
  5. 电子战基本概念 (01)
  6. 线性代数基本定理(核空间与行空间)——The Fundamental Theorem of Linear Algebra
  7. 《一万年以后》一段充满癫狂想象力的奇幻之旅
  8. 微信小程序基础学习(4):自定义组件
  9. 基于python,虹软sdk3.0实现的实时人脸识别
  10. 【Jmeter基础篇】03:如何进行post接口压力测试