IBMRationalSoftware Architect 从 Java源代码来逆向工程生成
UML 类和序列图。 逆向工程经常被用来从已有的源代码中以一种抽象模型 UML 格式来获得丢失的设计文档,其可以用来研究一个系统的静态结构和动态行为,并用于扩展新的特性到产品。
您将从使用这些技术技巧和窍门中受益,以识别组件,并从 Java 类中产生像 UML 类和序列图这样的高层抽象。
软件结构师、开发人员及测试人员都熟知统一建模语言(UML),该语言适用于文档化用例、类图、序列图和其他图表。也可以通过其他许多软件辅助工具来帮助软件工程师来完成这些工作,或者是
正向工程 或者是 逆向工程的。
正向工程是对一个系统物理结构实现的高层抽象性、逻辑性及独立性设计的传统处理过程。
逆向工程是对一个已存在系统的分析处理,以鉴别它的组成部分及它们的内在联系,从而以高层抽象性来构建一个系统的框架。在大多数情况下,逆向工程用于以抽象的模型
UML 格式从已存在的源代码中,提取已丢失的设计文件,从而同时可得知一个系统的静态结构及动态行为。
类及序列图问题的实质
IBMRationalSoftware Architect 在很多工业中得以广泛采用,因为它提供了很多的特性以帮助逆向工程师。
问题是当您以 Java代码逆向构建 UML 类及序列图时,Rational Software Architect
不能自动地产生有用的 UML 类及序列图。 但是已经存在改善 Rational Software Architect
输出产物的技术。本篇文章论证了怎样使用这里介绍的技术技巧,从 Java 代码中识别其组成部分及对 UML
种类和序列图进行高层的抽象。
使用逆向工程,您可以很容易就从正向工程中得到您想要的,本篇文章将介绍在逆向工程以下领域中存在的问题:
1.发现其抽象类及识别它们的等级结构
2.产生具有聚合及关联关系的高层抽象性的类图
3.构建序列图
接下来的部分为每个问题提供一个解决方案,并论证了怎样产生有意义的类及序列图。例子向您展示了怎样从一个已给
Java 项目的源代码中,识别一个系统的继承关系及组成部分,以对 UML 类图及序列图进行高层的抽象。
注意:
本篇文章中的例子产生于 Rational Software Architect 7.0 版本
识别一个 UML 类图的继承树
继承关系是一种普遍的对象型的模式。它允许一组类共享共同的状态和行为,从而子类可以从父类那里继承共同的状态和行为。从一个已存在系统中发现整个的继承树结构是相当有用的,因为它能向您揭露在树中什么是顶级类以及什么是子类。而且,您可以识别一个继承树中有哪些共同状态及行为,以及这些共同行为怎样起作用。您可以在探索过程中以以下三种方式使用
Rational Software Architect。
从一个工作场所或工作集中发现其抽象结构
从抽象结构表中选择一个类从而显示其抽象类图
在一个浏览表中研究树状结构,您会发现显示在 Abstraction之下的一系列抽象类。
第一步是在一个已存在系统中自动得到其顶级类。这样您就能使用这些类作为切入点以研究继承树中的类。您可以按以下步骤来完成此项。
打开 Rational Software Architect 中 Diagram Navigation视图。
在 Object-oriented Pattern下,右键点击 Abstraction,然后点击 Discover
Architecture(如图 1 所示)。
这可以揭示整个工作空间的架构。
图 2. 从整个工作场所中发现其抽象结构
结果有以下缺陷:
结构树中被发现类的同类及子类可能被丢失。
除去被发现的抽象类之外,其他类没有属性及操作。
要得到第六步产生的树状结构,还需其他的步骤。您需要增加分离度(如图 3 所示),这决定了从被发现类扩展的层。
图 4 . 将类可视化为新的类图
图 5 展示了产生一个继承树类图的过程:
打开并按下 F4以显示类的等级。
选择每一个类并将其添加到类图中。
检查并完成右边的图。
图 6. 带有属性的继承树状图及树状路径连接
图6中的类既显示了属性又显示了操作。属性及操作显示的好处在于,您可以研究它们共同的状态及行为,从而进一步了解一个已存在系统是如何被实现的,这将有助于系统的再使用。
产生一个高层的 UML 类图
Rational Software Architect 能让您通过从一个Java项目中,选择多个 Java
文件,来产生类图。
在模型搜索器中,使用 Visualize来将它们添加到一个新图或当前的类图中。
如果多个类已经被添加到当前的图中,那么它们之间的关系也将被显示。
图 7 是一个从 Java 代码中自动产生的类图的例子
图 8. 使用 UML 模型向导建立一个空白模型
为了得到一个高层的类图,您必须首先建立一个空白模型。
按图 8 所述步骤建立一个新的空白模型:
在文件种类下,选择 UML Modeling。
在模板下,选择 Blank Model。
在文件名区域,输入 Blank Model。
对于目的文件夹,输入 example。
默认的图检查框 “Create a default diagram in the new model”
应该被检查。
对于默认的图种类,选择 Freeform. Diagram。
点击 Finish。
接下来的一步是从自动生产类图中总结选择的类。 Rational Software Architect 中的总结,能让您从一个类中拷贝一个类并粘贴到另一个类图中,这必须在一个空白模型中完成。如果您将总结的类粘贴到同一个类图,或本空白模型以外另一个类图中时,那么该类的属性和功能将丢失。
通过图 9 所示的步骤,从自动生成的类图中总结已选择的 Java 类:
从 classdiagram2.dnx 中选择类 FuelTank,Engine,Passenger以及
Car
在一个已选类上右键点击以打开内容菜单
选择 Harvest菜单
将已总结的类粘贴至分离的创建于步 2 的类图中。
在类间创建聚集及组成关系。
图 10. 半自动方法产生的 UML 类图的高层抽象
通过将图 10 与图 9 进行比较,您可以发现半自动方法能精确显示类间关系。本图可用于独立设计执行文件,或已有系统远期改善。
着重点:
如果不经过总结,聚集及组成关系将不能应用于 Rational Software Architect 。
创建一个序列图
序列图是应用最为广泛的 UML 动态建模方法。它致力于识别一个系统的行为。一个序列图通常应用于建模用例,以显示一个系统的方法及功能。
Rational Software Architect 不能从 Java 代码中自动创建一个序列图。下面的步骤会告诉您怎样去创建一个:
创建一个空白模型。
创建一个序列图:
在 Blank Model上右键点击。
从 drop-down (context) 菜单中,选择 Add Diagram然后选择 Sequence
Diagram(如图 11 所示)。
向序列图添加类。
在两个类间对方法标记进行排序。
保存序列图。
图 12. 产生于 Java 源文件的序列图
一个方法调用意味着信息从召集者传向被召集者。被召集者是方法所有人,它从方法召集者那里收到信息。信息可以是单道的也可以是双道的。一个序列图由在处于一组方法所有者及一个初始发起者之间的,一系列方法标记组成。第一个标记必须从发起第一个方法标记的地方开始。
总结
本篇文章论证了怎样通过应用 Rational Software Architect v7.0 ,从 Java
代码中使用逆向工程创建 UML 类及序列图。层级类图代表着一种方式,该方式能发现在一个项目或工作集中,发现整个类间的层次关系。这将有助于开发人员向一个已有系统扩展或添加新功能。高层的类图能直观显示类间的聚集及组成关系。这有助于开发人员扩展或修改一个已有设计。这对开发人员们开发大型应用系统意义非凡。序列图显示了在执行特定任务时类间的动态方法标记。这为系统中提供了清晰的运行原理图。
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91322 人正在系统学习中 相关资源:阿P软件之划词复制v1.20绿色版-其它代码类资源-CSDN文库
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!