[转载] AndroMDA 3.0 M3--开源的MDA方案即将可用

转自http://dev.csdn.net/article/61/61807.shtm

因为有些IDE不支持,一直没有完整留意UML的扩展机制,所以也就以为UML不很适合做MDA。比如生成Hibernate的hbm文件,一些属性的辅助属性比如lazy-load,应该放在Class图的哪里呢?
最近AndroMDA在TSS上发广告,介绍说AndroMDA 3.0 M3作为正式版前的最后一个MileStone已经推出。就连过去看了一下。原来除了StereoType,UML另有Tagged Value的机制,可以把一些属性附在类的方法和属性上。

AndroMDA的结构应该说比较开放和实际的

1.AndroMDA使用过程

1.程序员通过Poseidon or MagicDraw 绘制UML图并导出XMI 或者使用 Schema2XMI工具从数据库生成XMI
在绘制的过程中需要加入AndroMDA所需的StereoType和Table tag,column Tag等。
MagicDraw似乎比较难看,而Poseidon还提供AndroMDA的plug-in,什么功能还没细看。

2.用户通过Ant运行AndroMDA
Ant脚本除了指明xmi文件外,另一个很重要的节点就是<namespace></namespace>节点,指明了Hibernate,Spring所需的一切项目级资料比如生成目录,数据源名称等。

3.AndromMDA解释XMI为相对高层的概念,然后调用Cartridge的Velocity语法模板的生成目标代码文件。
目前提供EJB,Hibernate,Spring等几个Cartridge。
如果要扩展Cartridge,只需要按照文档所教的方法,从内到外进行各种层次的增加,修改和替换。

2.五个核心部件
核心部件的设计代表了AndroMDA扩展的野心
1.Template Engines
目前使用Velocity作为模板语言,支持向其他语言的扩展。
2.MetaFascade
提供一个高层的Meta-Data访问API, 支持UML1.3、1.4、2.0等等语法的MOF model并可自行扩展。
3 Repositories
支持从XMI文件中读取MOF model,支持其他格式的扩展。
4.Cartridge
通过MetaFascade读取元模型,通过模板生成代码的核心。AndroMDA自带了Spring,Hibernate等Cartridge,也可自行扩展。
5.Translation-Libraries
把平台无关代码翻译成平台相关代码。比如Hibernate的getXXX()方法的HSQL语句,用者可以选择用Tagged Value写在模型里,也可以选择写成平台无关的OCL查询语言,然后用Query-Translation把它翻译成Hibernate HSQL,日后也可次翻译成EJB的EQL。
目前有Query和Valiations两个Library,亦可自行扩展。

3.AndroMDA的意义
AndroMDA带出的最重要的信息是,相对标准的,开源的MDA方案开始可用了,无数程序员不懈的代码自动生成的分散努力,有望纳入一个比较统一的框架内进行。
对比自己的简易版MDA方案:
1.模型的编写与维护
好处第一是, 以前的模型是自己制定的XML标准,现在是标准的UML语言,谁不想自己的东西标准化一点,谁不想被招安阿。
第二是模型可以使用图形化的工具维护模型了。
坏处也是,只能使用图形化工具维护模型了,没有了以前XML文件的文本级的简单。

2.代码的生成
大家暂时都是使用Velocity,只不过它有现成的Cartridge,估计还会不断增加,众人拾柴,比自己孤军奋战,一些大点的模板根本没法写(从经济学角度)好多了。
坏处就是以后修改扩展模板都要循规蹈矩,依足手续,比原来的随意扩展麻烦好多。

等他的正式版出来, 正好也是我们项目结束, 整理代码以作重用的好日子吧.

AndroMDA的结构应该说比较开放和实际的

1.AndroMDA使用过程

1.程序员通过Poseidon or MagicDraw 绘制UML图并导出XMI 或者使用 Schema2XMI工具从数据库生成XMI
在绘制的过程中需要加入AndroMDA所需的StereoType和Table tag,column Tag等。
MagicDraw似乎比较难看,而Poseidon还提供AndroMDA的plug-in,什么功能还没细看。

2.用户通过Ant运行AndroMDA
Ant脚本除了指明xmi文件外,另一个很重要的节点就是<namespace></namespace>节点,指明了Hibernate,Spring所需的一切项目级资料比如生成目录,数据源名称等。

3.AndromMDA解释XMI为相对高层的概念,然后调用Cartridge的Velocity语法模板的生成目标代码文件。
目前提供EJB,Hibernate,Spring等几个Cartridge。
如果要扩展Cartridge,只需要按照文档所教的方法,从内到外进行各种层次的增加,修改和替换。

2.五个核心部件
核心部件的设计代表了AndroMDA扩展的野心
1.Template Engines
目前使用Velocity作为模板语言,支持向其他语言的扩展。
2.MetaFascade
提供一个高层的Meta-Data访问API, 支持UML1.3、1.4、2.0等等语法的MOF model并可自行扩展。
3 Repositories
支持从XMI文件中读取MOF model,支持其他格式的扩展。
4.Cartridge
通过MetaFascade读取元模型,通过模板生成代码的核心。AndroMDA自带了Spring,Hibernate等Cartridge,也可自行扩展。
5.Translation-Libraries
把平台无关代码翻译成平台相关代码。比如Hibernate的getXXX()方法的HSQL语句,用者可以选择用Tagged Value写在模型里,也可以选择写成平台无关的OCL查询语言,然后用Query-Translation把它翻译成Hibernate HSQL,日后也可次翻译成EJB的EQL。
目前有Query和Valiations两个Library,亦可自行扩展。

3.AndroMDA的意义
AndroMDA带出的最重要的信息是,相对标准的,开源的MDA方案开始可用了,无数程序员不懈的代码自动生成的分散努力,有望纳入一个比较统一的框架内进行。
对比自己的简易版MDA方案:
1.模型的编写与维护
好处第一是, 以前的模型是自己制定的XML标准,现在是标准的UML语言,谁不想自己的东西标准化一点,谁不想被招安阿。
第二是模型可以使用图形化的工具维护模型了。
坏处也是,只能使用图形化工具维护模型了,没有了以前XML文件的文本级的简单。

2.代码的生成
大家暂时都是使用Velocity,只不过它有现成的Cartridge,估计还会不断增加,众人拾柴,比自己孤军奋战,一些大点的模板根本没法写(从经济学角度)好多了。
坏处就是以后修改扩展模板都要循规蹈矩,依足手续,比原来的随意扩展麻烦好多。

等他的正式版出来, 正好也是我们项目结束, 整理代码以作重用的好日子吧.

另外,这里转载一个介绍:

http://blog.csdn.net/chenyun2000/archive/2005/01/05/240120.aspx

AndroMDA是一个遵循MDA规范的开源代码生成框架:从CASE工具获得模型生成所有可部署的应用程序和其它组件。


1
、什么是AndroMDA

l AndroMDA是开源MDA框架

l 它接受各种模型(通常是由CASE工具生成的保存在XMI中的UML模型),结合各种AndroMDA插件(cartridge and translation-libraries),生成各种自定义组件

l 可以使用各种语言,如Java.NetHTMLPHP或通过编写(或已存在的)插件支持的语言

2MDA和代码生成

l 使用MDA可以尽量简化开发者和架构师的工作,使他们更简单的数字化他们的想法(Mental ModelMM):使他们创建平台无关的模型(PIM),这种模型是MM在一种相当正式的语言(如UML)中的一种one-or-one映射

l 使用MDA的好处:

Ø 十分直接的转换过程

Ø 开发者和架构师将焦点集中的业务逻辑,而不是底层技术

Ø PIM可以重用,而不是绑定到任何存在的平台

Ø PIM是和其它想法沟通的有用媒介

l 下一步是转换PIM成程序代码:MDA的方法是逐步精炼模型成特定平台的模型(PSM),解析该模型成实际上要手工编写的代码

l 对于AndroMDA,存在不同的cartridge,会分析给定的PIM,通过用来生成代码的模板来创建PSM

l AndroMDA的转换过程由称为cartridge的插件来控制

l AndroMDA有助于消除那些厌烦的和重复的任务

3、为什么要使用AndroMDA

l 消除编写多余代码

l 项目模型反映代码

l 项目使用标准的平台无关的方法文档和图表化,使其更加简单和快速的适应快速变化的技术

l 你的模型允许更简单的与业务方面进行沟通

4AndroMDA能做什么?

l 目前AndroMDA主要用于J2EE技术的开发,能够创建使用UML生成代码的J2EE项目

l 可以选择使用HibernateEJBSpringWebServicesStruts来生成代码,代码的生成自动集成到build过程中

5AndroMDA如何工作

l AndroMDA读取模型到内存中,使这些对象模型对它的插件有效

l 这些插件准确定义什么是或不是AndroMDA要生成的

l 每个插件可以根据项目的特殊需要进行定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值