UML软件工程组织

 

 

IBM Rational Modeling Extension for Microsoft .NET
 
作者:Lalitha K. Kishore , Darpan Saini 出处:IBM
 
本文内容包括:
本文面向那些对利用 IBM® Rational® Modeling Extension for Microsoft® .NET 来对基于 C# 语言的 .NET 应用程序进行建模、设计,及开发感兴趣的开发人员和架构师。本文假定您已经对 IBM Rational 建模工具(IBM® Rational® Software Modeler、IBM® Rational® Systems Developer、IBM® Rational® Application Developer,或者 IBM® Rational® Software Architect)以及在 Eclipse 环境中进行程序设计有了基本的了解。

IBM Rational 建模工具

Rational Software Modeler、Rational Application Developer、Rational Systems Developer 和 Rational Software Architect —— 这些全都是 Rational 建模工具 —— 构建于 Eclipse 集成开发环境(integrated development environment,IDE)之上。它们提供可视化的绘图工具,以帮助您了解现有应用程序,或者更容易地创建和理解新的应用程序。

扩展了 Rational Modeling Extension for Microsoft .NET(简称 Rational Modeling Extension)的 Rational Software Modeler(或者 Rational Systems Developer 或者 Rational Software Architect)提供由 UML 模型生成 C# 代码的功能。它还提供代码绘图工具,以帮助您了解现有的 Microsoft .NET 应用程序。本文将介绍如何在 Rational Software Modeler(或者 Rational Systems Developer 或者 Rational Software Architect)中处理 Microsoft .NET 解决方案,以及如何利用代码建模技术从现有的 C# 代码和 .NET 汇编生成各种图(Class、Sequence 和 Browse Diagrams)。本文没有涉及到从 UML 模型生成 C# 代码的内容。以下,Rational Modeling Extension 指的是安装在 Rational Software Modeler 里面的 Rational Modeling Extension。

Code Modeling(代码建模)是什么?

我们所称的code modeling(代码建模)简单地说就是 IBM Rational 建模工具中的一种技术,它可以帮助您利用 UML Notation,并且在不依赖于本别地保留的 UML 语义(抽象语法)的情况下,图形化地描述代码级概念。用 UML 表示代码元素有很多好处。最重要的是,UML 是开放的标准,并且是软件开发团体所知道的。通过创建可视地表示系统的内部构件的图和视图,可以很容易地了解任何复杂的系统。在 3GL 领域,例如,Java 和 C++,利用代码建模技术很容易做到这件事。

代码建模与像 IBM Rational Rose 或 IBM Rational XDE™ 这样的产品所提供的传统的双向工程(Round Trip Engineering,RTE)是不同的,因为它具有以下特征:

  • 使用 UML 标记(具体语法)
  • 不需要了解 UML 语义(抽象语法)
  • 不需要了解 3GL 语义如何映射到 UML 语义
  • 与传统的 RTE 相比较,消除了 3GL-to-UML 映射同步的开销
  • 总是如实,并即刻地用 UML 标记描述代码,将变更映射到代码,并且当通过图进行编辑时,可以马上对代码进行更新
  • 与传统 RTE 相比较,大大地简化了团队工作流
  • 能够用于 Mixed-Modeling(混合建模),就是依靠真正的 UML 语义元素,以及 DDL(表)描述,和其他语义范畴来描述代码元素

Rational Modeling Extension for Microsoft .NET 简介

Rational Modeling Extension 用来补充 Microsoft Visual Studio® 2005 的功能,以及 Visual Studio 中的 Class Designer 特性的功能(Class Designer 也是上面描述的代码建模的一种实现)。Rational Modeling Extension 不是要代替 Class Designer 特性。所以,Rational Modeling Extension 不提供完整的可视代码编辑功能,就像 Rational Systems Developer、Rational Application Developer,或 Rational Software Architect 中的 Java 或 C++ 代码建模支持。

在 .NET 中,这是 Class Designer 的工作,Rational Modeling Extension 只是提供 C#(基于源代码文件)和 CTS 类型(基于汇编中包含的二进制码)的只读的可视化表示。通过用 Class Designer 不支持的可视化特性来补充 Class Designer,已经足够提供重要的价值了。

虽然 Rational Modeling Extension 允许您像 Class Designer 那样使用类图来可视地描述 C#(Classes、Interfaces、Structs、Delegates,等),但是它还支持您通过观察 Browse 和 Topic 图中的各种 .NET 元素之间的关系来审阅应用程序的结构。此外,它还能让您在序列图中描述 .NET 类之间的典型或者 what if 的交互。Class Designer 不支持 Topic、Browse,或序列图。

在 Rational Modeling Extension 中处理 Microsoft Visual Studio 工程

对于绝大多数 .NET 开发人员来说,Microsoft Visual Studio 是编写和调试 C# 代码的首选 IDE。Rational Software Modeler、Rational Systems Developer,和 Rational Software Architect 代表用 UML2 设计应用程序的市场导向的解决方案。Rational Modeling Extension 的设计预计到了这一点,并且提供了用户可以在 Rational Software Modeler(或者 Rational Systems Developer 或者 Rational Software Architect)中处理 Visual Studio 工程的方法。利用 Rational Modeling Extension,用户可以用 UML 可视地设计他们的 .NET 应用程序,然后使用转换来生成 Visual Studio 工程中的代码,并且由此,利用 Visual Studio(包括 Class Designer 特性)和 Rational Modeling Extension 中的代码可视化功能继续进行代码开发和调试。

从技术上说,Rational Modeling Extension 使用 Visual Studio 可扩展 API,从关于其内容(像工程所引用的 C# 文件和汇编)的 Visual Studio C# 工程中获得信息。Visual Studio 可扩展 API 只能从打开的解决方案中查询并返回信息。由于这一限制,只要 Rational Modeling Extension 在使用中,包含了将要在 Rational Modeling Extension 中进行建模的 C# 工程的解决方案就应该在 Visual Studio 中是打开的。

将 Visual Studio 工程导入到 Rational Modeling Extension 中

要处理 Visual Studio C# 工程,您首先要将工程导入到 Rational Modeling Extension 中。这可以通过使用 .NET Solution Import 向导很容易地做到,该向导可以从 File > Import > Others > .NET Solution打开(如图 1 所示)。

图 1. .NET Solution Import 向导
选择导入的源

Import 向导的第一页上应该填写解决方案文件的路径(如图 2 所示)。向导将解析该解决方案文件,从而找到包含该解决方案的 C# 工程,而拥有相同名称的相应 Eclipse 工程将在 Eclipse 工作区中创建(如图 3 所示)。导入器还将创建 Eclipse 到该工程所使用的 C# 文件和 .NET 汇编的链接。这些链接用于获取关于 C# 工程内容的信息。这些链接存储在相应 Eclipse 工程的 .project 文件中。

图 2. .NET Solution Import 向导,第 1 页
输入解决方案文件路径

图 3. .NET Solution Import 向导,第 2 页
工程列表

在您成功地将 Visual Studio .NET 解决方案导入到 Eclipse 中之后,Rational Modeling Extension 将切换到 .NET 透视图。您可以利用 Project Explorer 来查看工程内容。注意,工程内容只能通过 Project Explorer 视图(与透视图无关)来查看,不能通过其他视图来查看。

一个导入的工程实例显示如下。图 4 展示了 Visual Studio 中的 Solution Explorer 视图,图 5 展示了 Rational Modeling Extension Project Explorer 视图中的导入工程的相应视图。

图 4. MS Visual Studio Solution Explorer 视图
工程、属性、引用,和类
图 5. Rational Modeling Extension Project Explorer 视图
与 Rational Modeling Extension 中相同的视图

您可以扩展 .NET Assemblies 或 C# 文件,以查看其中定义的类型,并且您可以在图中将这些类型可视化(独立的图,和属于实际的 UML 模型中的图)。您还可以通过扩展封装它们的相应类型来可视地查看 C#(利用语句、C# 属性,操作,等等)。

可视化:Rational Modeling Extension 提供的可用性特性

Visualize 菜单

Visualize 菜单,如图 6 所示,允许您将所选的元素添加到新的序列图、Topic 图,或类图中。您还可以利用 Explore in Browse Diagram 命令来探究所选的元素。当然,可用的选项依赖于所做的选择。例如,如图 6 所示,如果所选的元素是 CTS Enumeration,那么序列图选项是不可用的。

图 6. Visualize 上下文菜单
添加到当前的,添加到新的,探究

Visualize 命令可视化 .NET 元素所需的时间总量依赖于以下因素:

  • C# 工程的大小
  • 所选的元素数量
  • 查询深度

在一些情况下,由于这些因素,可能需要若干秒来完成 Visualize 命令。

Browse 和 Topic 图

如前面所提到的,Visualize 菜单允许您在 Browse 图中探究 .NET 元素。图 7 例举了一个 Browse 图,它是提供了探究现有元素及其关系的快速方法的临时、不可编辑的图。Browse Diagrams 是为了了解代码结构和其相关性特性而走查代码的好方法。

图 7. 进行可视化的 Browse 图
Browse Diagram for Operations

Browse 图允许您选择想要查看的关系,当您点击 Apply 时,利用新的查询将生成新的 browse 图。您还可以利用工具栏上的导航按钮导航 Browse 图。由于 Browse 图是临时的,所以不能保存。然而,您可以通过访问图上的 File > Save As 弹出菜单,将 browse 图的快照保存为常规的 UML 图(.dnx)或 Image 文件。

Topic 图可以用于快速地创建 .NET 元素之间关系的动态视图。图 8 展示了 Topic 向导提供的预定义查询,以便您可以查看这些关系。

图 8. Topic 图预置
从列表中选择主题

Topic 图 —— 像 Browse 图一样 —— 是查询驱动的,并且不能编辑,但您可以定制查询(这将导致图的刷新)。您还可以只刷新该图,从而使代码变更反映在图上。

Sequence diagrams(序列图)

序列图展示了对于具体交互的 .NET 元素实例之间的消息流的顺序。Visualize 菜单也允许您创建序列图(图 9)和创建新的交互。

图 9. 序列图
序列图属性

如您所看到的,您可以在序列图中的生命线之间创建各种类型的消息,并选择现有的操作作为消息的标记。局限性是您不能创建新的消息类型,而只可以选择现有的消息。

Show Related Elements

Show Related Elements 是一个非常有用的特性,它可以帮助您查询图上的相关元素。在 Rational Modeling Extension 中,通过右键单击类图上的任意 .NET 元素可以进行 Show Related Elements 动作。Show Related Elements 选项出现在 Filters 子菜单中。

Rational Modeling Extension 还提供增强的 Show Related Elements 对话框,如图 10 所示。对话框提供了您可以用来快速查看相关元素的预定义的定制查询。默认 Details 是折叠的,对话框中只有左边窗格是可见的。单击 Details 按钮,您可以查看实际的关系,以及与所选查询相关的其他设置。对查询所做的任何变更都可以存储起来为将来使用。

图 10. .NET 元素的 Show Related Elements 对话框
定制查询和关系类型

您可以选择 IncomingOutgoing,或 Both 方向。例如,如果您想要看到所选元素的超类层次,那么选择 Outgoing。为了查看子类层次,选择 Incoming

还值得注意的是 .NET Show Related Elements Filters Preferences 页,如图 11 所示。

图 11. .NET Show Related Elements Filters 的 Preference 页
选择忽略或显示类型

当执行 Show Related Elements 动作时,参数可以让您选择滤出 .NET Assembly 类型。注意该设置将影响查询相关元素的所有操作(例如, Browse 图和 Topic 图上的查询)。

Visualize existing > .NET type 菜单

Visualize existing > .NET type 菜单,如图 12 所示,位于图的弹出菜单上。它允许您可视化图上任何现有的 .NET 类型。

图 12. Visualize existing > .NET type 菜单
选择 Java、.NET,或 C/C++ 类型
 

当您选择该菜单时,将启动 Visualize .NET type 对话框,它允许您选择想在图上可视化表示的 .NET 类型。该菜单可以让您免于首先在 Project Explorer 中找到 .NET 类型,然后将其拖到图中,或者访问 Visualize > Add to current Class Diagram 命令。Visualize .NET type 对话框只允许您选择工作区中的类型。

从 Rational Modeling Extension 中导航到 C# 代码

通过双击 Project Explorer 中的元素,或者双击从类图中可视化来的 C# 元素(注意这在 Browse 图中是不可行的,在 Browse 图中,双击操作有通过一系列图导航的特殊含义),您可以很容易地导航到 Visual Studio 中的 C# 文件中恰当行。当您双击 Rational Modeling Extension 中的 C# 元素时,控制将切换到 Visual Studio,并且光标将置于 C# 文件中的恰当行上。

将 C# 代码更新导入 Rational Modeling Extension

如本文前面所叙述的,Rational Modeling Extension 目前的版本不支持 C# 代码的可视化编辑,但用户可以在 Rational Modeling Extension 中刷新导入的工程和图,来快速地反映 Visual Studio 中所做出的任意代码变更。要这样做,您需要按照以下这些简单的步骤进行。

  1. 首先,在 Visual Studio 中对 C# 文件做出您的修改。
  2. 在 Visual Studio 中保存工程。
  3. 接下来,切换到 Rational Modeling Extension。
  4. 右键单击需要更新的 Visual Studio 工程的根文件夹,并单击 Refresh

当您单击 Refresh 时,就从 Visual Studio 中得到了更新了的工程内容,并且 Project Explorer 和各种图中相应的元素也更新了。

结束语

Rational Modeling Extension 提供了大量关于 MS .NET 可视化建模的特性。如前面所提到的,除了本文中所介绍的 C# 和 CTS 绘图及可视的探究能力,还有以下能力,它们是其他文章的主题:

  • 从 UML 转换到 C#
  • 从 C# 转换到 UML
  • 使用 UML 模型、转换,及代码建模的组合来实现对架构管理的 Mixed Modeling(混合建模)方法
  • 使用 UML 到 C# 和 C# 到 UML 转换的组合,以及 IBM Rational model fusing 技术来实现架构管理的 Architecture Reconciliation 方法

Rational Modeling Extension 为 .NET 开发带来了全新的体验,它极大地支持利用 UML 建模技术来设计应用程序。除了利用一些命令,例如 Show Related Elements,还有利用类图、序列图,Topic 和 Browse 图,您可以很容易地了解现有应用程序的结构和设计。

参考资料

学习
  获得产品和技术 讨论
 

组织简介 | 联系我们 |   Copyright 2002 ®  UML软件工程组织 京ICP备10020922号

京公海网安备110108001071号