计算机专业论文栏目提供最新计算机专业论文格式、计算机专业硕士论文范文。详情咨询QQ:1847080343(论文辅导)

浅议有关MDA模型转换工具

日期:2018年01月15日 编辑: 作者:无忧论文网 点击次数:2549
论文价格:免费 论文编号:lw201004262310386381 论文字数:2000 所属栏目:计算机专业论文
论文地区:中国 论文语种:中文 论文用途:职称论文 Thesis for Title

摘 要  模型驱动架构MDA (ModelDriven Architecture)是由OMG提出的,用于解决企业间应用集成问题的软件开发方法。自提出以来,MDA方法得到很多软件供应商和研究人员的强力支持,在工业界和学术界出现了很多支持MDA开发方法的模型转换工具。这些工具使用了不同技术和实现方法,各有千秋。这些工具的出现有力地促进了MDA开发方法的发展。从模型描述方法、模型转换方法和模型转换工具在软件生命周期中的位置等三个方面分析比较了当前流行的MDA模型转换工具。根据这些分析结果,进一步讨论了MDA模型转换工具的发展前景,并指出了进一步改进MDA模型转换工具的研究方向。
关键词  MDA MDA工具 模型转换

0 引 言

在信息技术高速发展的今天,人们需要开发的系统日益复杂,而且牵涉到的领域也越来越广。开发者必须掌握许多不同的技术、架构和协议,通过复杂的实现,才能将来自于业务领域的需求转换成为最终解决方案。如何最大限度地降低开发风险、提高效率、快速实现不同应用系统之间的互操作是当今软件开发面临的问题。而将业务逻辑模型与底层实现平台分离是解决这个问题的可行思路,同时也将成为一种趋势[ 1 ]。
MDA模型驱动体系架构正是OMG组织为了应对业务和技术的快速变化提出的一种开放的、供应商中立的软件开发方法[ 2 ]。MDA将业务/应用逻辑和底层实现平台分开,将应用系统使用结构化的方法定义成:计算无关模型(CIM) 、平台无关模型( P IM)和平台相关模型( PSM) 。开发者可以针对不同实现技术与平台制定多种映射规则,然后使用这些映射规则及辅助的模型转换工具在不同层次的模型之间进行转换,不断求精直至形成最终代码。
OMG只定义了MDA的规范、标准和开发原则,MDA工具的具体实现则需要各个软件供应商或研究组织完成。这就造成了各个工具开发者对于MDA工具的实现有各自的理解。现今的MDA工具很多,它们使用的模型表述方式、模型转换方法等各不相同。本文从三个方面对这些MDA工具进行比较和评价,指出了MDA工具的可改进之处和进一步的研究方向。

1 MDA工具的评价标准

1. 1 工具使用的模型和原模型

MDA的基本思想是将模型作为软件开发工程中的核心制品。在MDA 中, 模型是系统的部分功能、结构和行为的表现[ 2 ]。同时,模型的表述和存储方法也会间接决定模型转换的方法和类型。评价一个MDA工具时,我们首先需要考虑的就是MDA工具描述模型和元模型的方法。MDA是由OMG组织提出的,所以OMG组织倡导使用UML作为模型的表示工具,同时OMG还提供了Profile的标准扩充机制,用于扩充UML 的表述能力。从语法角度来看,模型是由它的元模型定义的,通过元模型定义新模型也成为一部分开发者的选择。

1. 2 模型转换方法

MDA模型转换工具的另一个重要因素是模型转换方法,这也是评价一个MDA工具的重要标准。以一个或多个源模型作为输入,产生一个或多个目标模型作为输出,将一个模型转换到另一模型的过程叫做模型转换[ 3 ] 。根据转换结果,模型转换方法主要分为模型到代码的转换和模型到模型的转换;用于逆向软件工程的工具还要考虑到根据代码生成模型。

1. 3 在软件生命周期中的位置

在MDA标准的最初草稿中, OMG组织就提出:MDA的要点之一是能覆盖软件生命周期的全过程,包括分析、设计、编码(测试,构建或者集成)与部署/管理[ 2 ]。因此一个MDA工具覆盖了整个软件生命周期的哪些部分是我们评价该工具的又一个标准。我们把软件生命周期简单地划分为四个阶段:需求分析、设计、实现/代码的生成和验证测试[ 6 ]。当前的MDA工具主要关注实现/代码生成阶段,对于其它阶段的支持还有所缺陷。

2 MDA工具的介绍

这里将介绍一些具有代表性、在学术和工业界流行的模型驱动工具或工具研发项目。我们将按照先前提到的三个标准对它们进行评述。

2. 1 EclipseM odeling Project

Eclip seModeling Project[ 7 ]是Eclip se社区中专注于模型开发技术的项目,它提供了统一的模型框架、工具和实现标准。有许多的开源和商业工具是在其的一些子项目的基础上实现的。所以我们首先介绍这个项目:
Eclip se Modeling Project 采用了EMF ( Eclip se ModelingFramework) [ 8 ]作为元模型。EMF是基于OMG组织的MOF[ 4 ]规约实现的,可以被认为是对于MOF AP I的核心子集的高效Java实现。EMF模型的元模型本身也是EMF模型。为了避免混淆,MOF规范中的元元模型在EMF中被称作Ecore。EMF用XM I作为模型的规范存储格式。用户可以自定义生成和编辑EMF格式的模型。
Eclip seModeling Project有两个子项目,分别是实现模型到代码转换的M2T (Model2To2Text) [ 9 ]和实现模型到模型转换的M2M (Model2To2Model) [ 10 ]。M2T项目提供了遵循行业标准和Eclip se标准的实现引擎,包括有一些语法模板式转换语言(如JET, xPand,MTL) 。M2M项目包含了一个名为ATL ( the AtlasTransformation Language) [ 10 ]的子项目。ATL 是根据MOF /QVF标准制定的模型间转换语言。它是一种说明式( declarative[ 4 ] )和命令式( imperative[ 4 ] )混合的转换语言。
利用EMF、M2T、M2M,用户可以快速地构建模型,同时这个框架也提供了一部分模型查询、模型转换和验证的功能。除了需求分析阶段, Eclip seModeling Project中的各个工具基本上实现了对于整个软件生命周期的支持。

2. 2 AndroMDA

AndroMDA[ 11 ]是一个开源的代码生成框架MDA工具。最新的版本中, AndroMDA 以插件的形式集成在Eclip se中,所以AndroMDA中模型和元模型的管理采用了Eclip se的EMF。同时这个工具支持以XM I的标准格式导入和导出模型。
AndroMDA中,模型到模型转换采用了Eclip se的ATL来描述转换规则,而模型到代码转换采用MOFScrip t描述( Eclip se开源社区下的GMT[ 12 ]项目。该项目已经提交给了OMG组织,成为元模型到代码转换的RFP的候选方案之一) 。在代码生成过程中,AndroMDA采用了具有可扩展能力的Cartridges[ 11 ] 。用户可以通过丰富的Cartridges,生成Java、J2EE、. Net等平台上的代码,也可以用Cartridges创建自己的代码转换规则。
AndroMDA的主要功能在模型到代码的转换和对模型的验证,不支持需求分析和模型设计方面的功能。

2. 3 OpenArch itectureWare

OpenArchitectureWare[ 13 ]也是辅助代码框架的生成工具。OpenArchitectureWare完全基于Eclip se,采用EMF的方式存储模型数据,也可以导入各种UML建模工具生成的模型数据。
OpenArchitectureWare中模型到模型的转换采用了它自己定义的XTend,而模型到代码的转换同样采用了模板转换语言Xpand。OpenArchitectureWare只能生成Java、J2EE等固定种类的代码。同时OpenArchitectureWare有着很强的工作流引擎,可以自己定义和组合模型转换的步骤。
OpenArchitectureWare完美地集成在Eclip se 中,可以通过Eclip se的GMF ( GraphicalModeling Framework)进行模型设计,加上模型转换和EMF验证技术的运用,支持了大部分软件开发周期过程。

2. 4 ArcStyler

在ArcStyler[ 14 ]中,模型遵循UML1. 4的标准,以XM I的形式存储。这个工具还能够导入其它建模工具以XM I格式存储的模型,或者从现有的J2SE和J2EE代码中生成模型(ArcStyler中叫做harvesting) 。
ArcStyler没有明确区分P IM 和PSM,它的PSM 是通过在P IM基础上增添标记得到的。ArcStyler中的模型到代码的转换采用了Cartridges技术(与AndroMDA相似) 。ArcStyler支持转换到Java、EJB、. Net等各种平台。
ArcStyler与上面的几个开源工具不同,它提供了一个完整的集成开发环境,从而提供了从分析、设计、开发、部署,到管理的全生命周期支持。

2. 5 Optima lJ

Op timalJ[ 15 ]以XM I的格式存储模型,也支持各种UML模型的导入和导出。在Op timalJ中,模型被精确定义成三个层次,分别是领域模型、应用模型和代码模型,分别对应于P IM、PSM和生成代码。Op timalJ 是按照J2EE平台建模的,转换目标平台为J2EE。
Op timalJ 采用模板模式语言TPL ( Temp late Pattern Language) [ 15 ]来描述转换,其中模型到模型的转换通过technology pattern实现,而模型到代码的转换通过imp lementation pattern实现。用户也可以通过TPL自己编写转换规则。Op timalJ的一个很大的特点是支持代码和模型的同步,确保了模型和代码的一致性。
从某种意义上说, Op timalJ 可以对软件生命期的验证阶段提供部分支持。但和上