UML 建模:Reverse Engineering Java Applications
由
Sherry Barkodar
创建,
Cindy Castillo
和
Bob May
维护。 2007 年 11 月 [修订号:V1-3] 本文适用于 NetBeans IDE 6.0 发行版
在本教程中,您将了解如何对现有 Java 应用程序源代码执行逆向工程,以将其转换为 UML 项目。在 UML 项目中,所有类以及其他应用程序元素均显示在“项目”窗口的 UML 项目节点下,而原始的 Java 代码则会保留为原来的状态。本文档将按照“目录”中列出的主题链接内容,指导您逐步完成一些基本的任务。
预计时间:25 分钟
目录
前提条件
要使用本教程,您必须在系统上安装 IDE,并且应该对 IDE 的基本部分比较熟悉。此外,您还应具备 Java 编程语言和 UML 方面的基本知识。有关 IDE 的基础知识,请参阅在线帮助中的 IDE Basics 主题。官方 UML 资源页面提供了许多有用的 UML 技巧和理论,地址为 http://www.uml.org/ 。
系统需求
本教程假定您的系统满足 NetBeans 6.0 发行说明 的“系统需求”部分所指定的需求。
本教程所需要的软件
开始之前,需要在您的计算机中下载并安装以下软件:
创建示例 Java 和 UML 项目
在本节中,使用“新建项目”向导创建随 IDE 提供的示例 Java 项目和 UML 项目。
从 IDE 的主菜单中,选择“文件”>“新建项目”。 此时将打开“新建项目”向导。
In the Choose Project page, expand the Samples node in the Categories pane and select the UML node. The Projects pane is updated with the available UML sample project.
在“项目”面板中,选择“UML 空白应用程序示例”并单击“下一步”。
在“名称和位置”页面中,将 Java 项目名称保留为默认值 UMLBankAppSample 。
对于“项目位置”字段,单击“浏览”导航到想要保存示例项目文件的文件夹。 注意,当更改“项目位置”字段中的值时,IDE 会自动更新“Java 项目文件夹”和“UML 项目文件夹”字段中的值。
将 UML 项目名称保留为默认值 UMLBankAppSample-Model 。
单击 Finish 按钮。 将显示“正在打开项目”进度对话框。 “项目”窗口中出现 UMLBankAppSample 和 UMLBankAppSample-Model 项目。
观看演示
回到顶部
在“项目”窗口中浏览 UML 项目
本节将指导您在“项目”窗口中浏览表示 UMLBankAppSample 应用程序元素的各个功能,以了解该应用程序的各个部分。
从主菜单中,选择窗口 > 属性 ,打开“属性”窗口。
在“项目”窗口中,展开UMLBankAppSample-Model> Model > bankpack 节点。
展开BankAccount 节点及其属性 节点。 BankAccount 类的所有属性都包含在此文件夹中。如果属性的数目少于三个,那么这些属性将直接显示在类节点下,而不是“属性”文件夹中。
选择标记为private double balance 的属性 节点 。 “属性”窗口将显示该属性的名称及其属性。
在“项目”窗口的 BankAccount 类节点下,展开操作 节点 。. BankAccount 类的所有操作均显示在此节点下。
在 BankAccount 类下,展开关系 节点 。 将显示三种类型的关系节点:特化、聚合以及实现。
展开特化 节点 ,然后展开三个泛化 节点。 “泛化”链接显示了 BankAccount 类与其他元素(Checking 、Platinum 和 Saving 类)之间的关系。
(可选)在继续执行下一部分之前,请折叠 BankAccount 类下展开的节点。
观看演示
回到顶部
通过逆向工程创建另一个 UML 项目
在本教程的第 1 部分中,您装载了 UMLBankAppSample Java 项目和 UMLBankAppSample-Model UML 项目,它们是使用逆向工程特性生成的。在本部分中,通过对前一部分中使用的同一个 UMLBankAppSample Java 项目进行逆向工程,逐步创建另一个 UML 项目。
在“项目”窗口中,右键单击UMLBankAppSample 节点,然后选择“逆向工程”。 将显示“逆向工程”对话框。 注意,“选择节点”字段包含不可编辑的 UMLBankAppSample 值。
保持“逆向工程”列中的复选框处于选中状态。
选择“创建新 UML 项目”按钮。
在“项目名称”字段中,接受默认名称 UMLBankAppSample-Model1 。
对于“项目位置”字段,保留默认值,这是保存 UML 示例项目的目录。 如果想要使用一个不同的文件夹,单击“浏览”导航到该 文件夹,然后单击“打开”。
单击 OK 按钮。 将显示“正在打开项目”进度对话框。 “项目”窗口中会出现 UMLBankAppSample-Model1 项目。
观看演示
回到顶部
生成类图
在本部分中,为在上一部分中导入的
UMLBankAppSample
应用程序生成类图。
在“项目”窗口的 UMLBankAppSample-Model 节点下,展开“模型”节点,然后展开该节点下的 "bankpack" 节点。
通过在选择时按住 Shift 键或 Ctrl 键,选择 bankpack 文件夹以及该文件夹下的所有元素。
右键单击选定的元素,然后从弹出菜单中选择“通过选定的元素创建图”。 将显示“创建新图”向导。
在“图类型”列表中选择“类图”。
在“图名称”字段中输入 BankClassDiagram ,
保留“名称空间”字段中的 UMLBankAppSample-Model ,然后单击“完成”。 IDE 将执行以下操作:
在模型 节点下创建 BankClassDiagram 节点
在图编辑器中显示新图
打开 Modeling Palette
注意: 新的 BankClassDiagram 图包含了步骤 2 中选择的所有元素。
观看演示
回到顶部
浏览图编辑器
在本部分,您将使用图编辑器的图工具栏按钮查看不同 UML 布局下的应用程序。
双击位于图编辑器顶部的“BankClassDiagram”选项卡。 此操作将会放大类图编辑器,使其占据整个 IDE 的窗口空间。 注意: 这是一个切换操作:要撤消此操作,请再次双击BankClassDiagram 选项卡。
在展开的图编辑器中,单击图工具栏上的“适应窗口大小”按钮 。,以在展开的编辑器中全屏显示该图。 注意:注意: 请注意图工具栏中的缩放级别百分比字段。您可以在此字段中键入不同的数字来控制图的大小。
选择图工具栏上的“对称结构布局”按钮 ,然后在“布局”警告对话框中单击“是”。 IDE 会将 BankClassDiagram 图排列成对称布局样式。
选择图工具栏上的“分层结构布局”按钮 ,然后在“布局”警告对话框中单击“是”。 IDE 会将 BankClassDiagram 图重新排列成分层布局样式(所有元素都位于 bankpack 包的下面)。
选择图工具栏上的“正交结构布”按钮 ,然后在“布局”警告对话框中单击“是”。 IDE 会将 BankClassDiagram 图重新排列成矩形布局样式。
观看演示
回到顶部
使用“概览”窗口
在本部分,将使用“概览”窗口的功能来获得图编辑器中图的可缩放视图。
双击位于已展开的图编辑器顶部的 "BankClassDiagram" 选项卡。 IDE 将重新呈现多窗口视图。
在图工具栏上,从缩放下拉列表中选择 "50%",然后单击“适应窗口大小”按钮 。 通过使用“适应窗口大小”按钮,图将从 75% 大小的版本进行缩放,以便您可以更好地阅读选项卡。
单击图工具栏上的“概览”窗口按钮 以打开“概览”窗口。 将出现一个显示整个图的小型可缩放窗口。窗口中的蓝色方框指示图编辑器中显示的内容。 注意: 您可能需要放大“概览”窗口,或者在缩放下拉列表中选择更大的百分比来查看该蓝色方框。
将蓝色方框拖至 BankAccount 元素上。 此操作会在图编器的中心位置显示 BankAccount 元素。
要放大元素,请单击位于蓝色方框任意边角的句柄并缩小方框。调整方框的位置可以放大图的特定部分。
要缩小元素,请单击位于蓝色方框任意边角的句柄并放大方框。 请注意,IDE 此时会缩小图的比例。
单击位于“概览”窗口右上角的 "X",或者再次单击“概览”窗口按钮以关闭“概览”窗口。
再次单击图工具栏上的“适应窗口大小”按钮 。
观看演示
回到顶部
生成类的依赖关系图
现在,将为 BankApp 应用程序中的一个类生成依赖关系图。
双击 "BankClassDiagram" 选项卡以切换至该图的全屏视图。
右键单击图编辑器中的 BankAccount 类,然后从弹出菜单中选择“生成依赖关系图”。 IDE 将创建一个依赖关系图,并在图编辑器中打开一个“BankAccount依赖关系”选项卡以显示新图。现在,请将注意力集中在图编辑器中显示 BankAccount 依赖关系图的选项卡上。BankAccount 依赖关系图显示了以下依赖关系链接:
与 Account 接口之间的实现关系
与 History 类之间的可导航聚合链接
注意: 使用此选项可以创建一个图,其中显示了任意给定对象的所有依赖关系。
再次双击 "BankClassDiagram" 选项卡以切换至 IDE 的多窗口视图。
在“项目”窗口中,展开“UMLProject”>“模型”>“bankpack” 文件夹下的 "BankAccount" 类节点。 您会看到已添加了“BankAccount依赖关系”节点 ,该节点表示刚创建的依赖关系图。
观看演示
回到顶部
生成操作的序列图
现在为应用程序的withdraw 操作生成一个序列图。检查它作为图和“项目”窗口的 UML 项目中的元素的表示方式。
单击图编辑器中的BankAccount依赖关系 选项卡。
选择 BankAccount 元素,然后调整缩放比例,以便您可以轻松阅读其操作选项卡。
在图编辑器中,右键单击 withdraw 操作,然后从弹出菜单中选择“逆向工程操作”。 将显示“创建新图”对话框。
在“图类型”列表中,选择“序列图”。
在“图名称”字段中,键入 withdrawSD 。
接受“名称空间”字段中的默认值,然后单击“完成”。 图编辑器中将显示一个序列图。
展开图编辑器,然后调整缩放比例,以便可以轻松查看新的序列图。 该序列图显示了控制流、行为序列以及并发的进程和激活。
在“项目”窗口的 "BankAccount" 类节点下,展开“操作”节点,然后展开 "public void withdraw" 操作节点。 您会看到新的 withdraw 序列图节点 。
展开 "withdraw" 节点,以在“项目”窗口中显示序列图元素。
观看演示
回到顶部
关于合并标记的一点说明
UML 使用合并标记来帮助您保持源和模型的同步。当从 UML 项目调用“代码生成”操作时,默认情况下 IDE 会添加合并标记。如果 UML 项目是通过对现有 Java 项目执行逆向工程创建的,则没有针对现有源元素的合并标记。
要添加合并标记:
创建或打开 Java 项目。
右键单击 Java 项目节点,并选择“逆向工程”选项。确保选中“创建新 UML 项目”。单击“确定”。
确保能够完成逆向工程。输出窗口会显示 "Task Successful"。
右键单击新创建的 UML 项目节点 -> “生成代码...”
从“目标项目”下拉列表中选择 Java 项目。选择“将合并标记添加到现有源元素”。单击“确定”。
现在源和模型已经同步了,而且所有源元素都拥有合并标记。可以安全地在源和模型之间来回转换。但是,每次转换之前,需要适当调用“逆向工程”或“代码生成”。
回到顶部
结束语
回到顶部
未来计划
回到顶部
>> 更多 UML 建模文档