AndroMDA 4.x架构
体系结构目标
Matthias Bohlen撰稿 winderain 翻译
星期三,2006年3月22日17:55

开发 AndroMDA 4 的几个原因。事实证明AndroMDA 3是当今代码生成任务最成功的架构,但已经可以看出,它难以应付未来新的任务。AndroMDA 4 架构目标有:

可配置和可扩展性

我们应该让我们的用户比以前更容易(重新)配置和扩展AndroMDA。用户应该能够把AndroMDA作为一个组件使用,可以组织、链接,扩展和部署,以实现他们的代码生成的目标。可配置和可扩展性,必须支持以下功能:

可与其他UML metamodels(元模型)配合工作

AndroMDA 3 是主要用于与UML配合使用。它可以和其他UML元模型配合工作,太糟糕了,没有人对其进行了测试。

有些事情不容易在UML表示,例如,图形用户界面。domain specific languages (DSLs)能够更好的表述、形容此类事情AndroMDA 4 应支持任意的基于metamodels (元模型的)模型输入。

重用,改造和chaining of off-the-shelf和定制cartridges

在AndroMDA 3中,有可能从头开始写一个cartridge ,使用一个已有的cartridge或在一定范围内扩展已有的cartridge。然而,一个cartridge输入模型几乎总是依赖一个特定的UML配置文件(profile),使用户被迫以某种方式建模。一个fledged的输入总是“完全成熟”的模型,输出总是“准备使用”源代码。这种方法可以被称为“百分百方法the always 100% approach”。大面积使用cartridges不可能用非常精细和复用,比如:cartridges A 做30%的工作,cartridges B 拿A的输出最为输入,完成50%工作,最后cartridges C完成20%的工作,这样就100%的完成了。

在AndroMDA 4中,用户应该能够在从模型到代码的转换中重用已有的cartridges建立blocks 一个cartridge 把输入模型转化为一个或更多的模型或者文本,任何基于元模型的内容,cartridges 建可相互配合、来完成工作。

一个典型的例子是:一个用户说:“行,我最喜欢Hibernate的 cartridge ,但我希望所有生成的实体实现某些接口”。 这个用户可以编写另一个cartridge 添加了必要的接口生成的实体类。最好的办法来处理,就是用模型到模型转换。

模型到模型转换

这些转化为1..n输入模式到1..m输出模式,每个模型包含在一个元数据储存库。对于转换,我们将使用开放源码框架ATL。然而,AndroMDA不应仅仅依赖于ATL的,但必须能够使用任何模型到模型转换引擎。

这里,可配置性也是一个重要方面。转型引擎应该能够访问AndroMDA配置,以便能够转换能够参数化。我们的解决方式是把AndroMDA配置作为一个模式,可以像任何其他模型一样进行转换。因此,AndroMDA必须有一个配置元模型。

支持基于构件的开发

模型往往是随着时间的推移逐渐变大。The generator 需要越来越多的时间来验证模型和生成代码。应该可以运行the generator 处理输入模型的部分内容(请注意,在一部分独立元模型上,这是可能的)。在AndroMDA 3中,唯一可能的是,限制只产生UML模型中的包的代码。在AndroMDA 4中,这应该只是一个特例。AndroMDA 4应该能够随心所欲的产生输入模型中部分代码,如:架构的一个切片(MD,怎么切啊)、一个子集,(实在是不会了)a time or one architectural tier at a time or one server at a time or whatever subset of the content of the input model(s)

这需要一个配置机制,来增加全局的限制,从而找到那些模型元素需要被转换。

更好的可测性

AndroMDA的每个组件应该很容易testable,as isolated as possible。在设计组件的界限和接口时,我们应该注意,一个组件应尽可能少的依赖其他组件的成功测试(其他组件需要测试通过后才能测试这个组件)。

性能和可伸缩性

AndroMDA应当有很好的性能和执行成绩,因为用户生成代码的规模和的形式在不断发展(要不产生代码越来越费劲,费时,谁还用啊)。两种可能的方案,以减少执行时间:

  • 仅生成部分模型(参见上面的CBD)
  • 增量生成,reacting to changes(未来的功能)
最后更新,2006年3月29日11:49
<< 开始 < 上一页1 2 3 4 5 6 7 8 9 10 下一页 > 尾 >>

AndroMDA 4.x架构相关推荐

  1. AndroMDA 4.x架构(2)

    AndroMDA 4.x架构(2) AndroMDA 4 范围内的 Matthias Bohlen撰稿 winderain 翻译    星期四,2006年3月23日13:42 AndroMDA到其他软 ...

  2. NHibernate重要概念的解释和说明

    NHibernate 是一个面向.NET环境的对象/关系数据库映射工具. 对象/关系数据库映射(object/relational mapping (ORM)) 这个术语表示一种技术,用来把对象模型表 ...

  3. MDA(模型驱动架构)

    https://www.cnblogs.com/hobe/archive/2005/10/21/259583.html 1.         什么是MDA MDA(Model Driven Archi ...

  4. 模型驱动式架构(MDA)技术简介

    一.概述 上世纪90年代以来,软件产业的一个基本现象,就是基础平台和工具技术的更迭和变革愈演愈烈,超出任何人的预期和意愿,也完全超出个人所能够应付的范围.同时,企业界也在发生着翻天覆地的变化,互联网技 ...

  5. 模型驱动架构(MDA,Model Driven Architecture)浅述

    前言 西西弗斯是古希腊神话中的科林斯国王,他被罚将一块巨石推到山上,但无论西西弗斯如何努力,每次石头到达山顶之前都不可避免地滚下来,周而复始,永无休止. 在<应用 MDA >一书中,作者 ...

  6. 解救西西弗斯- 模型驱动架构

    前言 西西弗斯是古希腊神话中的科林斯国王,他被罚将一块巨石推到山上,但无论西西弗斯如何努力,每次石头到达山顶之前都不可避免地滚下来,周而复始,永无休止. 在<应用MDA>一书中,作者Fra ...

  7. 解救西西弗斯- 模型驱动架构(MDA,Model Driven Architecture)浅述

    这是应邀发表在<软件世界>2007年7月刊上的一个MDA介绍文章,入门者可以看看 :) ================================================== ...

  8. 转:解救西西弗斯- 模型驱动架构(MDA,Model Driven Architecture)浅述

    原文: 解救西西弗斯- 模型驱动架构(MDA,Model Driven Architecture)浅述 前言 西西弗斯是古希腊神话中的科林斯国王,他被罚将一块巨石推到山上,但无论西西弗斯如何努力,每次 ...

  9. 关于新技术的引入原则 ——从零开始学架构

    不以解决实际问题引入的技术都耍流氓. 新技术的引入不是为了证明自己,而是为了解决实际项目中遇到的问题.希望诸位能够控制住自己的心魔. 新技术的引入要求应该是解决的问题大于带来的问题. 再引入新技术,请 ...

最新文章

  1. pandas使用to_dict方法把datafraem保存为字典形式
  2. IOS开发1-动画 背景渐隐,view上移
  3. One Class SVM 对于样本不均衡处理思路——拿出白样本建模,算出outlier,然后用黑去检验效果...
  4. Java中的Annotation(2)----Annotation工作原理
  5. 最简单的基于FFMPEG的封装格式转换器(无编解码)
  6. Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled
  7. 【Python】PAT-1024-科学计数法
  8. HR数据抽取:通过 Read Master Data 转换规则读取时间相关主属性数据
  9. python字典排序及字典集合去重高阶教程
  10. js对象序列化为json字符串
  11. linux服务器_Linux 服务器为什么被黑?
  12. 二叉树遍历——深度优先遍历、广度优先遍历
  13. 何宾 单片机原理及应用_stc单片机原理及应用.pdf
  14. 【Python爬虫+js逆向】使用Python爬取腾讯漫画的逆向分析(典型签名验证反爬虫的解决方案)——以腾讯动漫《一人之下》第一话为例
  15. python实现论文查重系统_python 手把手教你基于搜索引擎实现文章查重
  16. open erp java_OpenERP API 接口
  17. win7台式计算机型号怎么查,win7怎么看电脑型号 win7电脑型号怎么查
  18. 视觉感知在数据可视化中的作用
  19. 使用TS开发小程序中遇到的问题
  20. apache php gzip压缩输出的实现方法

热门文章

  1. SQL外键主键脚本查询
  2. NSAssert与assert断言
  3. 针对ASP.NET页面实时进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)...
  4. python编程基础之六
  5. 解决多个py模块调用同一个python的logging模块,打印日志冲突问题
  6. 备份容灾相关概念总结
  7. atitit.集合的filt操作细分 filter总结
  8. 推荐:安全公司的一些面试题
  9. JAVA编程语言的基础知识(2)
  10. outlook 2010邮件传输接口错误解决一例