模型驱动架构(Model Driven
Architecture,MDA)是由OMG定义的一个软件开发框架。它是一种基于UML以及其他工业标准的框架,支持软件设计和模型的可视化、存储和
交换。和UML相比,MDA能够创建出机器可读和高度抽象的模型,这些模型独立于实现技术,以标准化的方式储存。MDA把建模语言用作一种编程语言而不仅
仅是设计语言,MDA的关键之处是模型在软件开发中扮演了非常重要的角色。Trufun
Kant系列产品就是一款非常便捷的MDA工具,它是基于Trufun Plato
UML2.x建模工具基础上开发出来的,因此它的可以实现整个项目的分析、设计、开发过程。可以实现与平台无关的模型,并可将此模型转换为平台相关模型。
(
注:Trufun Kant系列产品有Trufun Kant for Java ,Trufun Kant for vs.net, Trufun Kant for C++以及涵盖了以上三个产品功能和数据库建模的Trufun kant Studio大集成产品)
MDA源自于众所周知的把系统操作的规范从系统利用底层平台能力的方式细节中分离出来的思想,MDA工具提供了一种途径(通过相关的工具)来规范化一个平
台独立的系统、规范化平台、为系统选择一个特定的实现平台,并且把系统规范转换到特定的实现平台。Trufun
Kant系列产品则是完全遵照这些规范的MDA工具,为系统提供了一个统一的实现平台。MDA的三个主要目标是:通过架构性的分离来实现轻便性、互操作性
和可重用性。
模型驱动架构(MDA)是OMG组织近年来一直热炒的一个新的技术体系,也是众多搞软件模型研究人员的一个新热点,其核心的思路是希望通过对商业模型(比
如企业信息化或建筑领域的解决方案)的领域研究。进而提炼出一个相对核心的领域模型,同时抽象出一个PIM(平台无关模型)。之后根据不同的开发平台(例
如.net或Jave),应用平台(windows或unix)形成相应的 PSM(平台相关模型)。Trufun Kant
系列MDA工具已经可以完整地生成相应的代码框架,保障了项目从需求开始到后面的实现框架的统一和稳定。
模型驱动架构(MDA)的发展阶段理论还处在一个探索期,很多工具的也是跟着MDA的思想在一步步完善,从目前的趋势而言,要完全实现OMG提出的MDA
思想,MDA工具至少还需要数年的努力才能完全成熟。目前MDA工具的实现还局限于类图与代码的对应,代码框架的生成,但是大多数工具还无法实现两者之间
的反复正反向同步,而Trufun
Kant产品则已经很好的解决了这一问题,使无论修改模型还是修改已经生成的代码都能够保障实时同步到另一边,保障项目过程中模型和开发的始终统一。
MDA目前在以下领域得到了应用:
*银行业
*保险业
*公共企业(特别在金融管理领域)
*嵌入式系统
*后勤保障系统
目前Trufun Kant系列产品的应用已经基本覆盖以上领域。
您也会看到,MDA的确在其中起到了作用。MDA的实现主要集中在以下3个步骤:
1
首先,您用UML对您的应用领域进行高度抽象的建模,这个模型和实现它的技术(或者底层技术)完全没有关系。这个模型我们称之为平台无关模型(PIM)。
Trufun Kant 系列产品是基于UML2.1最新标准的UML建模工具——Trufun
Plato实现的,因此对于这一点的支持是毋庸置疑的。
2
然后,PIM将被转换为一个或多个平台相关模型(PSM)。这个转换过程一般是自动实现的。PSM将用一个特定的实现技术来描述您的系统。Trufun
Kant系列产品实现这一过程的自动转换,并且可以将PIM模型转化为10多种面向对象的语言相关的PSM。这一步是MDA流程中最难的,它要求您对您要
应用的基础技术具有丰富且巩固的知识,另一方面,源模型(PIM)必须具备自动生成PSM所要求的足够信息量。
3 最后,PSM将被转换成源代码。Trufun Kant 系列产品利用了桥接器技术和代码框架技术来实现这块功能,其中代码框架可以正向完成模型到代码的转换,而桥接器则保障了模型和代码的实时同步。
使用MDA的前提
* 业界(甚至是整个世界)一个被广泛接受的事实是:只有变化是永恒的。技术永远在革新。这在中间件领域尤其明显,当然还有数据库技术,操作系统,甚至是编程语言都经常变化。这些技术明显比应用领域的基本概念要变化的快。
* 如果您在某一特定的应用领域工作,在这个领域中的项目都具有一定的相似性。整个应用程序族或者不同的项目都属于同一个应用领域,那么,MDA或者生成流程将特别适合于您。
MDA的优点
* 您对建模的投资将更加持久的有效--远长于您目前实现它所应用的技术。这将更有利于保护您的投资。
* 您具有了技术上的灵活性。
* 您将不再受技术或应用所具有的不同变化周期的影响--在MDA的帮助下,您可以中立的保持两方面的多样性。
MDA的缺点
* MDA意味着更多的"组装"而不是"开发"--在为一个应用建立PIM的时候,您基本上没有技术上的周旋空间。这对于今天的很多开发人员来说,还是难以想象的。
* 软件开发的创造性在一定程度上减弱了。开发人员常常觉得,就一种新技术展开争论,在技术的前沿工作,是十分吸引人的。可是在MDA流程下,大量的工作是建立模型,这和具体的技术相距甚远,但符合OMG的建议。
* 潜在的不成熟性。UML2.x初长成,基于此的MDA工具出现的时间也相对较短,后期的发展还会不断。
MDA的软件开发周期
在MDA中软件开发过程是由软件系统的建模行为驱动的。下面是MDA的软件开发周期:
MDA生命周期和传统生命周期没有大的不同,主要的区别在于开发过程创建的工件,包括PIM(Platform Independent
Model,平台无关模型)、PSM(Platform specific
Model,平台相关模型)和代码。PIM是具有高抽象层次、独立任何实现技术的模型。PIM被转换为一个或多个PSM。PSM是为某种特定实现技术量身
定做。开发的最后一步是把每个PSM变化为代码,PSM同应用技术密切相关。传统的开发过程从模型到模型的变换,或者从模型到代码的变换是手工完成的。但
是在Trufun Kant系列MDA工具中,这些变换都是工具自动完成的。从PIM到 PSM,再从PSM到代码都可以由工具自动实现。PIM,
PSM,和Code
模型被作为软件开发生命周期中的设计工件,在传统的开发方式中是文档和图表。重要的是,它们代表了对系统不同层次的抽象,从不同的视角来看待我们的系统,
将高层次的PIM 转换到PSM
的能力提升了抽象的层次。能够使得开发人员更加清晰地了解系统的整个架构,而不会被具体的实现技术所“污染”,同时对于复杂系统,也减少了开发人员的工作
量。
MDA的出现,为提高软件开发效率,增强软件的可移植性、协同工作能力和可维护性,以及文档编制的便利性指明了解决之道。MDA被面向对象技术界预言为未
来两年里最重要的方法学。当今建模的主要问题在于,对于很多企业来说它只是纸面上的练习。这就造成了模型和代码不同步的问题,代码会被不断修改,而模型不
会被更新,或者,需求变动了,模型也修改了,但是代码修改不是从模型过来的,这样模型和代码就无法保障从始至终的统一,模型不能反映系统,不是代码最终的
实现,模型也就失去了意义,这方面的问题一方面是开发过程管理问题,一方面是有些MDA工具还无法保障这两者的统一,而Trufun
Kant系列工具则已经很好了解决后者这个问题,为我们实现这一操作提供平台。弥补建模和开发之间的鸿沟的关键就在于将建模变为开发的一个必不可少的部
分,并且使其成为我们可以重新利用和参考的有价值的部分,是我们的开发不因为代码因为开发人员的变动而增加额外成本。MDA
是模型驱动开发的框架,MDA 的愿景是定义一种描述和创建系统的新的途径。MDA 使得UML
的用途走得更远,而不仅仅是美丽的图画。很多专家预言MDA 有可能会带领我们进入软件开发的另一个黄金时代。
MDA最大的好处就是业务模型的持久价值,但是付出的代价是增加了抽象层,Trufun产品在建模技术方面,提供了OCL最新版本的精确建模支持,可扩展更多的机制来支持精确建模和分析模型。也可以根据用户的实际需要进行业务模型的定制。
MDA的相关标准
为了实现MDA这一宏大构想,OMG制定了一系列的标准:
UML:UML被MDA用来描述各种模型。它并不是为MDA而生,但是作为目前最为风行的建模语言,UML已经占据了全球建模语言领域90%的市场份额,
成为了建模语言事实上的标准,因此OMG将它作为MDA技术的基础是自然而然的明智选择。它是MDA的基础,也是MDA最有力的武器。
MOF:MOF(Meta Object Facility
元对象机制)是比UML更高层次的抽象,它的目的是为了描述UML的扩展或者其它未来可能出现的类UML的建模语言。虽然MOF也不是为MDA而生的,但
是我们可以体味到OMG的工程师们良苦的用心和长远的目光。
XMI:XMI(XML-based metadata
Interchange)是基于XML的元数据交换。它通过标准化的XML文档格式和DTDs(Document Type
Definitions)为各种模型定义了一种基于XML的数据交换格式。这使得作为最终产品的模型可以在各种不同的工具中传递,这一点是非常重要的,它
保证了MDA不会在打破了一种束缚之后再被加上一层新的束缚。Trufun
Kant系列产品支持生成标准的XMI文档,并且可以导入标准的XMI文档,也可以通过它的转换来导入其他uml模型。
CWM:CWM(Common Warehouse Metamodel
公共仓库元模型)提供了一种数据格式变换的手段,在任意级别的模型上都可以使用CWM来描述两种数据模型之间的映射规则,比如将数据实体从关系数据库变换
为XML格式。在MOF的框架下,CWM使得通用的数据模型变换引擎成为可能。
在OMG的蓝图中,UML、MOF、XMI、CWM等一系列标准分别解决了MDA的模型建立、模型扩展、模型交换、模型变换这几个方面的问题。OMG试图
通过标准化的定义,扩大MDA的应用范围。同时通过这样一个可扩展的建模语言环境,IT厂商可以自由实现自己的建模语言,以及语言到可执行代码的映射,然
而不管怎么样,都必须处于OMG的标准化框架之下。