Rational Software Architect 的 UML 对 CORBA 的转换

本文将描述如何创建和使用CORBA模板,并且进一步介绍如何创建您自己的CORBA模型。

导言

IBM®Rational®Software Architect(RSA)是一种遵循统一建模语言(UML)2.0标准的建模工具。该工具能够被用来进行设计、开发和测试软件,也能够将模型从一个抽 象层转换到另一个抽象层。将模型中的元素从一个抽象层转换到另一个抽象层这一过程被称作MDA(模型驱动体系结构)转换技术。RSA支持这一技术。一个成 功的转换能够将模型元素转换为源代码。这些转换面向Java™、C++、共同对象请求代理体系结构(CORBA),等等。本文将为您提供一种关于从UML 到CORBA转换的总的看法。

UML-to-CORBA 转换将UML 2.0模型中的元素转换到CORBA接口定义语言(IDL)。它提供一个可选的精巧的配置文件 ,您能够使用该建模并且生成大部分CORBA元素。CORBA转换同样伴随着CORBA模板模型。CORBA模板模型提供了一种应用RSA或者 IBM®Rational®软件建模工具(RSM)快速建模CORBA系统的方法。该模板模型包含一个包括组件和接口元素的完全格式化的CORBA模型, 以及一条通过UML 2.0原型创建CORBA类型的捷径。

本文将描述如何创建和使用CORBA模板,并且进一步介绍如何创建您自己的CORBA模型。另外,将向您展示如何验证您的模型,如何在您的模型上运行转换来生成CORBA IDL文件,以及CORBA转换是如何集成在IBM®Rational®ClearCase®中的。

转换流程

创建一个UML项目

在使用UML 2.0到CORBA的转换之前,您应当熟悉一下如何创建和编辑UML 2.0模型和项目。这一小节将描述CORBA转换的一般流程。第一步就是创建一个UML建模项目,然后在该项目中加入CORBA模板模型。

  1. 启动 RSA,点击File -> New -> Project ,选中UML Project
  2. 点击Next ,将项目命名为UMLtoCORBA
  3. 点击Next

您将看到UML模型的模板列表,如图1所示。

图1. 项目可用的模板列表
A list of available templates for your project

  1. 在列表中选择Corba Template Model ,将File name 命名为UMLtoCORBA ,点击Finish

于是您在项目UMLtoCORBA 中创建了一个Corba模板模型,并将建立一个类似图2所示的模型结构。

图2. 项目的模型结构
Model structure of your project

初始化您的模型

该 CORBA模板模型包含不同的UML元素,例如包、组件、接口等等。该模板模型也包含那些能够被您自己的模型使用的CORBA原始类型的结构。模板模型中 的类图和指示包含了如何使用该模型的信息。一旦您创建了一个新的CORBA模板模型,您就能够重命名并组织该模型结构从而用CORBA元素创建您自己的 UML模型。依照如下步骤创建一个例子模型。

  1. 在CORBA转换中,组件映射为IDL文件,所以将这个组件重命名为NamingAuthority ,并将其拖至该模型(UMLtoCORBA )的根目录下。转换过程将为这个组件生成一个IDL文件。
  2. 将这个组件的接口重命名为translation_library 。此接口为NamingAuthority 组件提供了接口。转换过程将在NamingAuthority.idl 文件中生成一个相应的接口定义。
  3. 创建一个NamingAuthority 组件内部的包,命名为NamingAuthority 。这个包中包含所有构成命名权限组件的类和接口。转换过程将在NamingAuthority.idl 文件中生成相应于这个包的模块定义。
  4. translation_library 接口从组件中拖至NamingAuthority 包中。
  5. NamingAuthority 包中创建RegistrationAuthority 枚举。这个枚举包含了那些定义了命名权限的定义语言类型的枚举文字。在DNS、IDL、ISO、DCE和OTHER中创建这些枚举文字。

此时,您的模型应当类似于图3所示。

图3. 模型的变化后的反映
Changes reflected in your model

设计特定CORBA类型

为了进一步建模,您需要某种方法来设计特定CORBA类型。特定CORBA类型可以在套用格式的帮助下进行设计。如果您将CORBA转换配置文件应用于这 个模型的话,这些套用格式就将可用。在这个配置文件的帮助下,您能够建模特定CORBA类型,例如结构体、变量类型、类型定义等等。这个配置文件包含关于 应用在套用格式中的约束的相关信息。

  1. 要将CORBA转换配置文件添加到您的模型中,选择模型根目录(换句话说,在UMLToCORBA.emx 之下的UMLToCORBA ),并且观察属性窗口。在左手边有一个打开Profiles 窗口的标签。
  2. 选中这个标签,您将会看到在该模型中已经应用的配置文件列表,并且包括一个Add Profile 按钮,如图4所示。

图4. 模型配置文件
Your model profiles

  1. 点击Add Profile 。一旦CORBA转换配置文件被创建,您就能够建模特定CORBA类型。
  2. NamingAuthority 包中创建一个类AuthorityID
  3. 现在在属性窗口中选中这个类,点击Stereotypes 标签。
  4. 点击Add Stereotypes 按钮。
  5. 选择CORBAStruct并且点击OK ,如图5所示。至此转换过程生成了一个用于IDL文件中AuthorityID类的CORBAStruct定义。

图5. 将套用格式应用在您的类中
Applying a stereotype to your class

  1. 为了在这个CORBAStruct中添加属性,将属性naming_entry 加入到AuthorityID类中,并且将其类型改为CORBAPrimitive type String。
    1. 现在再创建一个属性authority ,并将其类型设置为RegistrationAuthority 枚举。属性的类型可以在属性窗口中被设定。
    2. NamingAuthority 包中再创建一个类QualifiedName,并且应用CORBAStruct套用格式。
    3. 创建一个名为authority_id 的属性,并将其类型设置为AuthorityID CORBAStruct。
    4. 再创建一个属性local_name ,并将其类型设置为String。
  2. 模型的最后一部分是实现translation_library 接口。
    1. 在这个接口中创建一个操作authority_to_str() 。将返回值设置为String型,参数类型设置为AuthorityID
    2. 在接口中再添加一个操作str_to_authority() ,将返回值设置为AuthorityID ,参数类型设置为String。
    3. 类似的创建一个方法qualified_name_to_str() ,返回值类型为String,参数类型为QualifiedName
    4. 创建最后一个方法str_to_qualified_name() ,返回值类型为String,参数类型为QualifiedName

至此,您的CORBA模型已经创建完毕,并且所有需要的套用格式都已经被应用。如果您将所有元素拖至图标的表面上,那么最终的模型应当类似图6所示的那样。

图6. 您的最终模型
Your finished model

现在您可以不依照此模型运行CORBA转换,或者验证模型是否违反所应用的套用格式的约束条件。要验证该模型,您需要选中它,右键单击它,并选中Run Validation ,如图7所示。您也可以在选中模型后点击Modeling -> Run Validation

图7. 确认您的模型
Validating your model

如果在验证过程中出现任何错误或警告,您就应当在进行转换前将您的模型修改正确。如果模型不正确的话,转换过程可能不能被完成,或者不能生成IDL文件。

转换

一旦您获得了一个既没有错误也没有警告的正确的模型,您就能够进行转换了。

  1. 右键单击模型的根目录,选中Transform -> Run Transformation -> UML to CORBA ,如图8所示。您也可以通过点击Modeling -> Transform -> Run Transformation -> UML to CORBA 达到同样的效果。

图8. 运行转换操作
Running the transformation

  1. 此操作将开启对话框Run Transformation ,如图9所示的那样使用对话框。您可以指定名称、源文件、转换后的目的文件、映射模型,以及例如记录日志文件等普通操作,等等。所有这些选项都将在后面的章节中被详细讨论。

图9. 运行转换向导
Run Transformation wizard

  1. 转换的Name 栏中可以填写任何唯一的名称。不同的转换配置可以被存放在不同的转换名称之下。这些转换名称能够在Run Transformation 菜单中被显示出来(您需要在普通页面中选中Show in transformation menu 复选框)。并且在那里被直接执行。
  2. Source : 您可以指定一个UML模型、组件、包,或者这些元素的结合来作为转换的源文件。转换过程为每一个UML组件生成一个单一的IDL文件。每一个IDL文件包 含专用于相应的UML组件的特定代码。转换过程忽略了那些UML组件所没有包含的元素。如果您指定任何一个其它元素作为转换的源文件,转换进程就将在确认 过程中被终止。
  3. Target 将存放CORBA转换中生成的IDL文件。任何Eclipse项目都可以作为CORBA转换的有效目标。一个拥有IDL文件的新的Eclipse项目仍然可以被点击Create new target container
  4. 在您指定名称、源文件和转换的目标之后,您就可以定义映射表了。使用mapping 可以做到这一点。默认情况下,生成的IDL文件将会使用UML组件的名称作为CORBA元素的名字。使用映射模型,您能够在生成的代码中重命名模型的元素。除了组件之外,您只能使用简单的标识符重命名UML元素。

    默认情况下,映射操作是不可用的,您需要选中Enable Mapping 复选框来使其可用。正如图10种所示的那样,您既可以使用一个已经存在的模型进行映射,也可以通过点击New 创建一个新的映射模型。

图10. 转换中的映射
Mapping in the transformation

  1. 如果您点击Edit Mapping ,对话框(图11所示)将会提示您将UML 2.0中的元素映射到生成的IDL文件中的元素。

图11. 将UML中的元素映射为新的名称
Mapping UML elements to new names

  1. 您可以选中UML元素,并为其指定Mapped Name 。您可以将UML组件重命名为简单标识符,也可以使用有效的相对路径,指向生成的IDL文件中的目标容器。该路径应该以IDL文件的名称作为结束。例如,如果您将ComponentA 重命名为dirA\A ,转换过程将在名为dirA的目录下生成A.idl,而不是在目标容器的最顶层生成这一文件。
  2. common 标签下运行转换向导(如图12所示),您可以指定是否记录转换执行的日志文件,以及这一配置是否进入Transform 菜单。选中Log transformation execution 将打印出转换过程中执行的所有规则。这一日志文件被输出到控制台窗口。这将有助于利用IBM的技术支持调试转换过程以及记录错误报告(如果有的话)。

    选中Show in Transform 菜单将会将该转换配置作为Run Transformation 菜单的子菜单显示出来。这有助于该配置的直接运行,而不必在转换的每一个应用中引入该对话框。

图12. 运行转换向导中的Common标签
The Common tab of the Run Transformation wizard

  1. 现在您点击ApplyRun ,转换过程将会被执行,并且相应于CORBA模型的IDL文件将会依照在映射模型中指定的映射规则(如果指定了的话)被生成出来。在转换被执行之后,您能够在包浏览器中看到生成的IDL文件。
  2. 为了打开包浏览器窗口,您应当将Java开发器设置为可用。您可以在Window -> Preferences 中点击Workbench -> Capabilities 中的java Developer 实现这一点。一旦Java开发器可用,选中Window -> Show View -> Package Explorer 来观察包浏览器窗口。
  3. 双击生成的IDL文件。在文本编辑器中打开IDL文件。如果转换执行的顺利的话,生成的IDL文件应当类似于图13中所示的那样。

图13. 生成的IDL文件
The generated IDL file

注意到NamingAuthority.IDL 包含RegistraionAuthority 枚举的定义,两个CORBAStruct类和translation_library 接口的定义。一个完整的正确的IDL文件通过使用CORBA转换被创建出来。

下一小节将介绍CORBA转换是如何被集成到ClearCase中的相关的信息。

ClearCase集成

CORBA 变换被集成在ClearCase中用作生成的IDL文件的源控制器。CORBA变换同样支持CORBA IDL文件的并行开发。CORBA变换在一个简单的Eclipse项目中生成IDL文件。为了在ClearCase控制器下得到IDL文件,您必须在 ClearCase控制器中添加导出Eclipse项目。您可以根据如下步骤来完成这一任务。

  1. 创建一个Eclipse项目,将其命名为CCIntegrated
  2. 运行CORBA转换,目标容器被指定为CCIntegrated。
  3. 将此文件夹复制到一个使用Windows®浏览器的ClearCase VOB文件夹。
  4. 现在,将此项目从当前工作区中删除,其内容也一并从文件系统中删除。
  5. 点击File > Import Existing Project into Workspace
  6. 浏览并选中您所复制到ClearCase VOB文件夹下的项目,点击Finish 将该项目导入当前工作区。这一操作将源文件留在VOB文件夹中,并且仅仅保存了一个来自工作区的引用。
  7. 从当前工作台连接到ClearCase(如果还没有建立连接的话),如图14所示。

图14. 连接ClearCase
Connecting to ClearCase

  1. 一个对话框确定添加文件到ClearCase控制器下。点击OK ,于是该项目处在ClearCase控制器之下。(如图15所示)

图15. 将您的项目置于ClearCase控制器之下
Putting your project under ClearCase control

  1. 如果在第八步中没有出现对话框,您可以继续在导航窗口中用右键点击该项目,然后点击Team > Add to Source Control
  2. 至此,当您再一次运行CORBA转换时,您将会被提示检验IDL文件来重新生成它们,如图16所示。

图16. 提示检验适当的文件
Prompt to check out the appropriate file(s)

  1. 点击OK ,注意该IDL文件已经被检验并重新生成,如图17所示。

图17. 重新生成IDL文件
Regenerated IDL file

UML-to-CORBA映射关系

图18列出了UML 2.0模型中的元素到CORBA IDL的转换图。

图18. UML-to-CORBA映射关系
UML-to-CORBA mapping

本文的目的就是为您提供一种关于CORBA转换的总的看法,因此创建的模型都非常简单。如果使用CORBA转换中的所有特性,那么您就可以设计出非常复杂的CORBA模型。

你可能感兴趣的:(eclipse,浏览器,IBM,软件测试,UML)