UML/MDA技术研究

研究UML/MDA/软件工程技术,欢迎同道人互相交流。

袁峰
袁峰的公告
如非声明,均属原创
转载请注明出处,谢谢!

  
   管理

与我联系

栏目

最近评论
qpzkzp:wow power leveling
qpzkzp:wow power leveling
papam:想拥有你自己的手机软件下载主页吗?风格,背景,幻灯片,广告位全部可定制化,独立子域名!

想制作自己个人DIY的手机写真集和手机电子书吗。

中国手机网姐妹站胖胖网
http://www.papam.cn
给您提供发布软件的最佳平台,优秀的软件还可能获得网站推广宣传哦!

欢迎前来交流!
yuandafeng:对啊,涵涛是这方面的专家,下次我买手机之前一定要好好咨询资讯你 :)
gehantao:欢迎尝试WindowsMobile!
欢迎光临我的博客http://blog.csdn.net/gehantao
文章分类
收藏
    相册
    网站
    JavaEye软工版
    MDACHINA
    OMG-MDA
    UMLCHINA
    相关英文blog
    Alan Cameron
    Andrej Koelewijn
    Cockburn
    Don Box
    Grady Booch
    H.S. Lahman
    Jean Bézivin
    Keith Short
    MartinFowler
    Stefan Tilkov
    Steve Cook
    Stuart Kent
    相关中文blog
    J2EE与ERP禅话
    MDA之路(RSS)
    矇矇的秘密基地
    阿飞外传
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

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

    新一篇: [新闻] IBM向Eclipse捐赠RUP | 旧一篇: Mediawiki安装纪要

    转自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文件外,另一个很重要的节点就是节点,指明了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文件外,另一个很重要的节点就是节点,指明了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         每个插件可以根据项目的特殊需要进行定

    发表于 @ 2005年10月10日 17:27:00|评论(loading...)|编辑

    新一篇: [新闻] IBM向Eclipse捐赠RUP | 旧一篇: Mediawiki安装纪要

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 袁峰