如何使用Enterprise Architect或Rational Software Architect从源代码创建类图?

时间:2012-09-14 21:10:10

标签: c++ uml enterprise-architect

我不熟悉UML,但我想基于现有的C ++代码创建一个类图。其他StackOverflow问题表明,两个程序--Enterprise Architect和Rational Software Architect - 相当擅长“逆向工程”C ++代码(即,基于现有的C ++代码创建UML类图)。

我已经下载了这两个应用程序的试用版。但是,我无法理解如何在这些应用程序中创建类图。

在Rational Software Architect中,我创建了一个UML项目,但我无法在程序中找到任何方法来选择和反向工程我现有的C ++代码。

在Enterprise Architect中,我能够导入我的C ++代码,但所有元素(类)都出现在图中无用的重叠对角线上。我尝试了其他设置,例如圆圈,但是这些设置同样不可读,因为图表太大(由于属性和方法占用了大量空间),所以没有任何平移和缩放是有用的。我想要的是隐藏除了类名之外的所有内容(即,不显示任何方法或属性),以便所有20个类在一个屏幕中方便且清晰地显示。

但是,我无法找到隐藏除类名之外的所有内容的方法。相反,当我发现一个选项(在Enterprise Architect中)似乎可能隐藏除了类名之外的所有内容时,由于某种原因,这些元素在类图中都消失了,并且没有重复步骤和数量。删除并重新添加包使类图重新出现。

注意:我的C ++代码(至少我选择导入Enterprise Architect的那些文件)只有大约20个类。

可悲的是,仔细搜索这两个程序的文档仅提供了一般性 - 就我所能找到的任何一个程序而言,没有给出关于逆向工程的具体说明。

如果有人能告诉我创建易读,易于导航的图表的基本步骤,我将不胜感激。反向工程(即C ++ - to-UML)只显示类名,因此大约20个类在一个屏幕上适合(清晰),使用Enterprise Architect或Rational Software Architect - 或任何其他任何能够使用的工具这样做(我建议EA和Rational只是因为它们已经在其他StackOverflow答案中突出显示为可用于此目的的最佳程序)。

1 个答案:

答案 0 :(得分:14)

这个答案适用于EA。

您可以递归或不导入单个文件或整个目录。目录导入是目前最常见的情况;单个文件导入不允许您自动创建图表。

导入源目录时,可以选择为每个UML包创建图表,或者根本不创建图表。您还决定是否为每个源代码目录,命名空间(默认)或文件创建包。

如果您的代码只包含20个类,那么它们很可能位于单个目录和/或命名空间中,因此请使用该选项(“导入源”对话框中的“包结构”)来获取正确的图表数量。

在同一个对话框中,有一个按钮" New Diagram Options,"这将打开另一个配置对话框,您可以在其中选择图表是否应包含类'属性和/或操作。您还可以在可见性的基础上做出决定,例如仅显示公共成员。

此对话框仅影响创建图表时显示的内容。成员仍然导入,只是没有显示。这听起来就像你追求的那样。

您可以通过双击任何图表的空白区域或右键单击并选择“属性”来更改任何图表的显示选项。听起来你进入了这个对话框并改变了一些东西,但我无法说出什么。您所描述的情况,即您无法按原样显示的情况,不是我在EA中遇到的情况。

也可以通过在图表中右键单击并选择“功能可见性”来逐类选择显示选项。我不建议你在逆向工程图中使用它,我只是提到它的完整性。

您描述的布局,所有类都在无意义的对角线上,向我表明图表在创建后没有正确布局。图表创建分为两步;首先将所有类放到它上,然后应用布局。

这很奇怪,因为EA自动列出生成的图表,但我还没有找到允许您取消选择此行为的选项。如果仍然存在,请向Sparx Systems发送错误报告。您始终可以通过打开图表并从顶层图表菜单中选择布局图来布置图表。

最后,如果您的类分布在不同的命名空间中,以便EA为它们生成多个图表,您必须手动合并它们。通过打开两个图表,选择全部(Ctrl-A),复制(Ctrl-C)和粘贴(Ctrl-V)到另一个图表,然后再次向EA询问布局图来执行此操作。

所以:

  1. 在项目浏览器中右键单击空包,选择“代码工程 - 导入源目录”。
  2. 在对话框中,选择根目录和源类型。
  3. 勾选"为每个包创建逻辑图"并选择最适合您的源结构的包结构。
  4. 点击"新图选项"并在新的对话框中取消显示"显示属性," "展示运营"和"显示属性方法"如果适用的话。
  5. 确定两个对话框。
  6. 如果已创建多个图表,请将所有类复制到一个图表中。
  7. 如果布局看起来不好,请选择Diagram - Layout Diagram。
  8. 希望这有帮助。