ROSE生成的代码框架和MDA工具生成的代码有什么不同?
2010-03-28 11:57
197 查看
这个问题的提问方式似乎有点问题。首先,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界面。)
但是问题还是要讨论的,不过提问的方式可以改成“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界面。)
相关文章推荐
- 数据库逆向框架代码生成工具:MyBatis Generator的使用
- 从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
- 数据库逆向框架代码生成工具:MyBatis Generator的使用
- 代码在线自动生成工具,在线生成java代码,springmvc框架,mapper,实体类,控制器,页面代码
- Web API应用架构在Winform混合框架中的应用(4)--利用代码生成工具快速开发整套应用
- 如何利用NB代码生成工具和NBear框架,快速开发WEB项目
- 如何利用NB代码生成工具和NBear框架,快速开发WEB项目
- 代码生成工具更新--快速生成Winform框架的界面项目
- 如何利用NB代码生成工具和NBear框架,快速开发WEB项目
- 数据库逆向框架代码生成工具:MyBatis Generator的使用
- WCF开发框架形成之旅---结合代码生成工具实现快速开发
- 数据库逆向框架代码生成工具:MyBatis Generator的使用
- android mvp快速开发框架介绍(自动生成android代码工具介绍)
- 数据库逆向框架代码生成工具:MyBatis Generator的使用
- 数据库逆向框架代码生成工具:MyBatis Generator的使用
- 基于Metronic的Bootstrap开发框架经验总结(18)-- 在代码生成工具Database2Sharp中集成对Bootstrap-table插件的分页及排序支持
- 黄聪:C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名
- 基于数据库的自动化生成工具,自动生成JavaBean、数据库文档、框架代码等(v5.8.8版)
- Sculpture 一个开源的优秀的代码生成工具(MDA开发模式)