基于RSA模型转换框架的开发1

Posted on 2015-12-24 12:52  飞猫网  阅读(595)  评论(0编辑  收藏  举报

相关文章

http://www.ibm.com/developerworks/cn/rational/r-rsa-transformation/

1 MDA概述

模型驱动架构(MDA)是OMG提出的新的方法学, 是一种新的系统开发方法,它强调整个系统开发过程由对软件系统的建模行为驱动,完成系统需求分析、架构设计、构建、测试、部署和运维工作。与传统的UML模型相比,MDA能够创建出机器可读和高度抽象的模型,这种模型通过转换(Transformation)技术可自动转换为代码、测试脚本、数据库定义以及各种平台部署描述。从此,建模语言不仅仅是分析设计语言,更可用作为一种高级编程语言。 MDA通过抽象层次的不同,定义了计算独立模型(CIM)、平台独立模型(PIM)和平台相关模型(PSM)。计算独立模型类似于我们常说的业务模型和用例模型,是一个抽象层次较高、独立于任何实现技术的系统模型,它着眼于操作环境中的系统以及系统需求的描述,而不关心系统本身的结构和功能实现细节;平台独立模型类似于系统分析模型,它处于中间抽象层次,关注系统的整个架构实现,但却忽略掉与平台相关的部分。平台独立模型可以转换成多个平台相关模型;平台相关模型则与设计模型相像,它把业务独立模型与具体使用平台的细节相结合,包含了具体平台的特定实现技术。软件开发过程中架构师会跟据系统架构的质量要求,选择一种或几种平台技术具体实现系统。

图1.1、MDA的模型及其转换技术

图1.1、MDA的模型及其转换技术

不同模型间可以通过模型转换技术(Model Transformation)实现相互转化,例如使用模型转换技术,我们可以将计算独立模型(CIM)转化为平台独立模型(PIM),平台独立模型(PIM)转化为平台相关模型(PSM)。由此可见,模型转化技术是实现MDA的关键。模型转换技术一般包括标记(Markings)和映射(Mapping),映射包含了由一种模型向另一种模型转化的规约说明,而标记则用来在源模型中加入额外的信息,用来在转换时告诉映射如何将源模型中的特定模型元素映射到目标模型。

通过MDA技术的使用,可以有效解决传统软件开发过程中的生产效率问题、系统移植问题、互操作问题以及文档和系统后期维护问题,因此它一出现就受到业界的广泛关注,并且越来越多的工具厂商对其提供支持,我们坚信:它的广泛应用只是时间问题。

 

2 在RSA中实现MDA

2.1 RSA概述

IBM Rational Software Architect(RSA)是一套设计与开发工具,它构建在开放的、可扩展的Eclipse3.0平台之上,实现了多项行业最新标准,提供了灵活的插件扩展机制。借助UML2.0技术,它实现了模型驱动的软件开发模式,可以帮助开发团队创建更加强壮的软件架构。同时,RSA作为IBM Rational业务驱动软件开发平台的核心构件,提供了与需求管理工具、测试工具、配置和变更管理工具和项目管理工具的完美集成 ,从而真正实现了企业内部的核心软件开发流程、开发平台和软件生产线。

2.2 使用RSA实现MDA中的模型转换

IBM在RSA中缺省提供了UML到Java、UML到C++、UML到EJB的模型转化实现,其整个实现架构基于Eclipse 3.0和Eclipse Model Framework(EMF)、UML2、Graphical Editing Framework(GEF)和插件开发环境(PDE),为模型驱动软件开发(MDA)的模型转换方面提供了四个方面的工具支持:

图2.1、RSA对MDA及其转换技术的支持架构

图2.1、RSA对MDA及其转换技术的支持架构

1) 转换服务(Transformation Service):支持转换的交换和发现功能,为其它转换工具支持提供基础。

2) 转换引擎(Transformation Engine):为层次化的转换源提供遍历引擎,尤其对UML模型有较好支持

3) 转换应用的GUI界面支持:使用户能够浏览、查找并应用各种转换。

4) 制作转换的GUI界面支持:为转化制作中的创建、打包和维护转换的各种任务,提供很多自动化支持;

在RSA中,MDA的模型转换以插件的形式存在。RSA提供了向导(Wizard)功能,指导用户完成模型转换框架插件项目的创建过程,下面举例说明具体的MDA的模型转换开发过程:

1) 新建插件项目:在RSA中选择"File-> New ->Project…"新建插件项目,选择"带转换的插件"模板,它是RSA为构建新的转换提供的实现机制。

图2.2、建立带转换的插件项目

图2.2、建立带转换的插件项目

选择之后Wizard会自动提示输入新建转换源和目标模型类型及相关联的属性,并为转换创建规则定义,如图四所示:在我们例子里将创建 ClassRule 和OperationRule;

图2.3、建立转换规则

图2.3、建立转换规则

2) 基于RSA提供的模型转换框架,实现具体的模型转化规则。RSA的模型转换插件项目向导(Wizard)会自动生成模型转化框架,如图五所示:

图2.4、模型转换实现框架

图2.4、模型转换实现框架

基于这一框架,用户需要根据具体转换实现需求,完成ClassRule和OperationRule的具体实现,完成具体的Transformation的转换逻辑。

 

3 在RSA中使用Transformation实现模型驱动的软件开发

我们实现了三个示例转换Analysis to Design, BM Business to Use Case,BM Use Case to Analysis,并以插件的方式嵌入倒RSA(如图3.1)。

图3.1. 三个示例转换

图3.1. 三个示例转换

以下是使用RSA进行模型驱动开发的步骤:

1.首先建立一个RSA项目及一个简单的业务模型,也就是CIM;

2.通过BM Business to Use Case转换,将业务模型(CIM)转换为用例模型(PIM1);

3.进一步通过BM Use Case to Analysis将上一步骤产生的用例模型(PIM1)转换为分析模型(PIM2);

4.再将设计模型(PIM2)转换为设计模型(PSM);

5.最后将设计模型(PSM)转换为代码。

3.1 创建RSA项目及业务模型

首先创建模型项目(图3.1),然后在此项目里添加一个业务模型;添加业务模型的方法是选择空白模型模板,并命名为BusinessModel(图3.2)。

图3.1. 创建模型项目

图3.1. 创建模型项目

图3.2. 创建业务模型

图3.2. 创建业务模型

然后,将已经导入的概要文件应用到模型项目上去。概要文件里面包含了一些已定义好的版型,作为对UML的扩展。点击BusinessModel目录,打开其属性,选择概要文件->添加概要文件,选择Business Modelling Sample Profile(图3.3)。

图3.3. 应用概要文件

图3.3. 应用概要文件

在BusinessModel模型下创建SalesPerson类(如图3.4所示),我们将在之后的转换中逐步的把SalesPerson类转成目标模型中相应的元素。

图3.4. 创建SalesPerson类

图3.4. 创建SalesPerson类

修改SalesPerson类的版型(Stereotype),具体过程为选择SalesPerson类,打开其属性,选择版型->添加版型,在弹出的应用版型窗口里选择BusinessWorker(来自于Business Modelling)(图3.5)。

图3.5. 应用版型

图3.5. 应用版型

修改SalesPerson的版型后,其图标也变为相应版型的图标。接着,给SalesPerson增添两个方法,processAnOrder()及takeAnOrder()(图3.6)。到此阶段,业务模型已经产生好,通过应用概要模式到模型及版型到类,我们对业务模型进行了精确的定义,有了这样的精确定义,我们就可以通过转换(transformation),将业务模型转换为系统模型。

图3.6. 增加两个业务方法

图3.6. 增加两个业务方法

3.2 从业务模型(CIM)转换为用例模型(PIM1)

在转换之前首先创建目标模型,在这里为用例模型(图3.7)。

图3.7. 创建用例模型

图3.7. 创建用例模型

创建了目标模型后,我们可以开始转换的工作。首先点击源模型BusinessModel,选择工具栏上Modeling选项,再选择Transform->Configure Transformations(图3.8)

图3.8. 配置转换

图3.8. 配置转换

因为是从业务模型转换到用例模型,在配置转换窗口选择BM Business to Use Case,

图3.9. 选择BM Business to Use Case转换

图3.9. 选择BM Business to Use Case转换

点击右下方的New按钮,新建一个BM Business to Use Case的转换,并在Target页面选择UseCaseModel作为目标模型(图3.10),

图3.10. 选择UseCaseModel作为目标模型

图3.10. 选择UseCaseModel作为目标模型

选择Common页面,选择创建源模型到目标模型的追踪关系,这样我们在转换的同时也保持了源模型与目标模型之间的追踪关系。最后点击RUN,开始执行转换(图3.11)。

图3.11. 创建源模型到目标模型的追踪关系

图3.11. 创建源模型到目标模型的追踪关系

图3.12显示了转换后的用例模型,对应业务模型的SalesPerson和其两个操作,产生了一个SalesPerson主角及两个用例processAnOrder和takeAnOrder。图3.13显示了转换自动生成的业务模型和用例模型间的追踪关系。

图3.12. 由业务模型产生的用例模型

图3.12. 由业务模型产生的用例模型

图3.13. 用例模型与业务模型的追踪关系

图3.13. 用例模型与业务模型的追踪关系

3.3 从用例模型(PIM1)转换为分析模型(PIM2)

我们进一步将用例模型转换为分析模型(图3.14)

图3.14. 使用BM Use Case to Analysis转换

图3.14. 使用BM Use Case to Analysis转换

经转换后产生的分析模型如图3.15所示。可以看到,通过转换,RSA自动产生了对应用例的分析类和用例实现,并建立用例模型到分析模型间的追踪关系。

图3.15. 由用例模型产生的分析模型

图3.15. 由用例模型产生的分析模型

分析模型与用例模型的追踪关系(图3.16)

图3.16. 分析模型与用例模型的追踪关系

图3.16. 分析模型与用例模型的追踪关系

3.4 从分析模型(PIM2)转换为设计模型(PSM)

我们进一步通过 IBM Analysis To Design 转换将分析模型转换为设计模型(图3.17)

图3.17. 使用BM Analysis To Design转换

图3.17. 使用BM Analysis To Design转换

经转换后产生的设计模型包含设计类,子系统,接口等,如图3.18所示:

图3.18. 分析模型转换为设计模型

图3.18. 分析模型转换为设计模型

3.5 设计模型(PSM)转换为代码

最后通过RSA本身提供的UML to EJB转换,将设计模型转换为EJB代码。

图3.19. 使用UML到EJB的转换

图3.19. 使用UML到EJB的转换

经转换后产生的Session Bean,如图3.20所示。

图3.20. 使用UML到EJB的转换生成的Session Bean

图3.20. 使用UML到EJB的转换生成的Session Bean

4 小结

Rational Software Architect是IBM Rational新一代的建模工具,它基于Eclipse 3.0, UML2.0及MDA技术,它的推出让我们拥有了强大的模型驱动开发工具。本文介绍了如何通过Rational Software Architect实现模型驱动的软件开发,包括如何在RSA中建立转换(transformation)和如何通过这些转换实现模型到模型、模型到代码的转变。从中我们看到,通过MDA技术,我们提高了开发的效率,如通过转换能迅速的实现不同模型之间的转换;同时,我们的业务模型独立于任何实现技术,提高了系统的可移植性,保留了企业宝贵的资产;另外,在转换过程中,追踪关系能同时产生并被保留,简便了我们后期的维护工作。同时我们看到,模型转化技术是实现MDA的关键。在其后的文章中我们将会就模型转化技术作进一步的讨论。

从最早的程序语言的出现至今,软件从业人员一直致力于以代码为核心的软件开发方法的进步。模型驱动的软件开发(MDA)以建模活动为核心,驱动整个软件系统的开发过程,第一次将整个开发团队的视角提高到软件的需求分析和分析设计阶段的模型层面,提出模型不仅是文档,更是代码的观点。它的出现,必将推进整个软件行业的新一轮革命,让我们拭目以待……

参考资料

  • MDA Guide Version 1.0.1
  • IBM Rational Software Architecture工具帮助
  • MDA Explained: The Model Driven Architecture: Practice and Promise By Anneke Kleppe, Jos Warmer, Wim Bast
  • A Process for Creating IBM(R) Rational(R) Software Architect Transforms By Paul Elder / Todd Dunnavant