一、概述
上世纪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.