MDA之路

MDA,UML,XML,Eclipse及Java相关的Blog
posts - 53, comments - 494, trackbacks - 0, articles - 2
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理
    这个问题的提问方式似乎有点问题。首先,ROSE是否是一种MDA工具还有待商榷。虽然Rose是出现在MDA概念出现之前的一种CASE工具,但是也不能主观的把它排除在MDA工具之外。所谓MDA(模型驱动架构),就是以模型为中心的开发方法的架构。其中的模型有4个层次的概念,MOF的四层模型结构详细描述这四层模型结构,但是目前应用最多,影响最大还是M1层模型,因为它可以直接转换为代码,极大的提高软件开发的速度和质量。而在M1层模型中,遵循UML规范的模型又是事实上的标准,因此OMG(对象管理组织,MDA的提出和倡导者)吸纳了UML作为MDA的核心部分,MOF也把UML元模型作为M2层的代表之作。因此,UML的领军开发环境RationalRose似乎可以归入MDA的工具之列了。
    但是问题还是要讨论的,不过提问的方式可以改成“Rose生成的代码框架和如今流行的MDA工具生成的代码有什么不同?”如今流行的MDA工具,除了ROSE之外(好像Rose给人们的印象根深蒂固了,就是CASE工具的代表之作,而不是MDA工具),还有ArcStyler,OptimalJ和EMF(Eclipse Model Framework)以及ArgoMDA等等。这里我只接触过ArcStyler和EMF,因此以它们为例来说一下。
    首先还是先说说Rose,Rose可以从UML模型生成代码框架,不过只有类图可以生成代码,也就是说例如用况图(我是按国家标准使用“用况”这个词的啊,不信的人去查查,虽然一般都叫“用例”),时序图等等都不能生成代码。也就是说只有软件的结构特性可以直接生成代码,而软件的处理流程是不能生成代码的。而类图生成的代码也忠实的保持了类图中的信息,不多不少,也就是说它正好是UML类图的信息等价体。(这一点我也是按照我的经验说的,望有知着教我。)
    而现在的MDA工具就是在两个方向突破,例如ArcStyler,它不止能够将软件的结构特性生成为代码框架,还可以将软件的部分处理流程生成代码。例如它的WebAccessor可以将Web应用的部分典型流程通过建模的方式表达出来,然后直接生成代码表现这些流程,不止如此,还可以自动生成编译和配置文件。关于ArcStyler的WebAccessor的使用简介,可以到www.mdachina.net上面查找我曾经写过的文章。
    EMF选择了另一个方向作为突破口,它也是只能将类图转换为代码框架,不过它生成的代码有了扩充的功能,也就是说,它的代码增加了许多不能在UML类图中表达的功能。我将这些功能总结如下:包括反射机制(不同于java的反射机制,而是ECORE模型的反射机制)、通告服务(当对象改变时会通告给监听者,这又叫做观察者/适配器模式?)、工厂模式(所有对象都使用对象工厂产生出来,保持接口和实现的分离)、存储机制(自动将对象存储为XMI文档,并可以从XMI中读取数据来构建对象)。还有为Eclipse的SWT界面库所生成的部分界面代码,利用此界面代码可以方便的生成本地UI界面控制生成的对象。
    所以说,现在的MDA工具在代码生成部分(除了代码生成,应该还有元建模,模型转换等部分),向着两个方向努力,这些努力提供给开发者Rose的代码框架所不能提供的一些功能。遗憾的是,关于MDA并没有一个统一而可行的代码生成标准,因此每使用一个新的MDA工具都必须熟悉它的一套机制,否则也只能望代码而兴叹。路漫漫其修远兮~~
    (最近正在使用EMF,因此忍不住说一句,EMF生成的代码实在是很帅,方便易用,它提供的几个额外功能都能极大的便利java程序的开发。而且,对于SWT兴趣很浓的我,它提供的几个界面Provider也实在可以方便的做出好看的界面,可以是插件界面,也可以是脱离Eclipse的java界面。)

评论

# re: ROSE生成的代码框架和MDA工具生成的代码有什么不同?  回复  更多评论   

2005-01-31 10:16 by 海天一鸥
目前完整的MDA开发环境好像还处于开发阶段,成熟的市场产品还没有。

但是,针对各个行业的快速应用环境,却慢慢出来了。Workflow,CRM,Portal这类可以依靠有限度的定制与扩展工具平台,来生产的系统已经有很多成熟产品了。

这方面,微软的Biztalk开发平台做的是最好的--虽然它主要应用于多系统应用集成。

至于工作流平台,通过简单建模并规定流程,生成系统的平台已经非常多。微软,IBM,中国的NEUSOFT等等,都有这样成熟的系统。

建立通用MDA开发平台,恐怕是任重而道远。

# re: ROSE生成的代码框架和MDA工具生成的代码有什么不同?  回复  更多评论   

2005-01-31 16:08 by wxb_nudt
MDA试图建立软件建模业的“大统一场”理论,把前景规划得无比美好,然而很多理论和实践的基础还不成熟,于是很多公司和开发者从MDA的各个侧面入手,争取在MDA领域占领制高点。但是这样的结果是个个号称自己是MDA,然而从理论基础到实用软件相去甚远,导致很多初学者迷失在MDA理论和工具的汪洋大海中。成为“技术炮灰”,sigh!

只有注册用户登录后才能发表评论。


网站导航: