保健励志美文体育育儿作文
投稿投诉
作文动态
热点娱乐
育儿情感
教程科技
体育养生
教案探索
美文旅游
财经日志
励志范文
论文时尚
保健游戏
护肤业界

从Java代码逆向工程生成UML类图和序列图

  前言
  本文面向于那些软件架构师,设计师和开发人员,他们想使用IBM?Rational?SoftwareArchitect从Java?源代码来逆向工程生成UML类和序列图。逆向工程经常被用来从已有的源代码中以一种抽象模型UML格式来获得丢失的设计文档,其可以用来研究一个系统的静态结构和动态行为,并用于扩展新的特性到产品。作者详细说明了使用IBMRationalSoftwareArchitect进行逆向工程的限制,并阐述了克服这些限制的技术。您将从使用这些技术技巧和窍门中受益,以识别组件,并从Java类中产生像UML类和序列图这样的高层抽象。
  软件结构师、开发人员及测试人员都熟知统一建模语言(UML),该语言适用于文档化用例、类图、序列图和其他图表。也可以通过其他许多软件辅助工具来帮助软件工程师来完成这些工作,或者是正向工程或者是逆向工程的。
  正向工程是对一个系统物理结构实现的高层抽象性、逻辑性及独立性设计的传统处理过程。
  逆向工程是对一个已存在系统的分析处理,以鉴别它的组成部分及它们的内在联系,从而以高层抽象性来构建一个系统的框架。在大多数情况下,逆向工程用于以抽象的模型UML格式从已存在的源代码中,提取已丢失的设计文件,从而同时可得知一个系统的静态结构及动态行为。
  类及序列图问题的实质
  IBM?Rational?SoftwareArchitect在很多工业中得以广泛采用,因为它提供了很多的特性以帮助逆向工程师。问题是当您以Java?代码逆向构建UML类及序列图时,RationalSoftwareArchitect不能自动地产生有用的UML类及序列图。但是已经存在改善RationalSoftwareArchitect输出产物的技术。本篇文章论证了怎样使用这里介绍的技术技巧,从Java代码中识别其组成部分及对UML种类和序列图进行高层的抽象。
  使用逆向工程,您可以很容易就从正向工程中得到您想要的,本篇文章将介绍在逆向工程以下领域中存在的问题:
  1。发现其抽象类及识别它们的等级结构
  2。产生具有聚合及关联关系的高层抽象性的类图
  3。构建序列图
  接下来的部分为每个问题提供一个解决方案,并论证了怎样产生有意义的类及序列图。例子向您展示了怎样从一个已给Java项目的源代码中,识别一个系统的继承关系及组成部分,以对UML类图及序列图进行高层的抽象。
  注意:
  本篇文章中的例子产生于RationalSoftwareArchitect7。0版本
  识别一个UML类图的继承树
  继承关系是一种普遍的对象型的模式。它允许一组类共享共同的状态和行为,从而子类可以从父类那里继承共同的状态和行为。从一个已存在系统中发现整个的继承树结构是相当有用的,因为它能向您揭露在树中什么是顶级类以及什么是子类。而且,您可以识别一个继承树中有哪些共同状态及行为,以及这些共同行为怎样起作用。您可以在探索过程中以以下三种方式使用RationalSoftwareArchitect。
  从一个工作场所或工作集中发现其抽象结构
  从抽象结构表中选择一个类从而显示其抽象类图
  在一个浏览表中研究树状结构,您会发现显示在Abstraction之下的一系列抽象类。
  第一步是在一个已存在系统中自动得到其顶级类。这样您就能使用这些类作为切入点以研究继承树中的类。您可以按以下步骤来完成此项。
  打开RationalSoftwareArchitect中DiagramNavigation视图。
  在ObjectorientedPattern下,右键点击Abstraction,然后点击DiscoverArchitecture(如图1所示)。
  这可以揭示整个工作空间的架构。
  图1。发现整个工作空间的架构
  图2显示了得到一个抽象类图的树状结构所需的剩余步骤:
  通过右键点击位于Abstraction之下的类Car来打开内容菜单。
  显示右边面板中Car类图,通过选择菜单中的ShowDiagram选项。
  通过选择并右键点击右边面板中类图Car来打开内容菜单。
  通过选择内容菜单中ExploreinBrowseDiagram选项来产生抽象类图的树状结构。
  做完第六步,您将在右边面板中见到Car类图的树状结构。
  图2。从整个工作场所中发现其抽象结构
  结果有以下缺陷:
  结构树中被发现类的同类及子类可能被丢失。
  除去被发现的抽象类之外,其他类没有属性及操作。
  要得到第六步产生的树状结构,还需其他的步骤。您需要增加分离度(如图3所示),这决定了从被发现类扩展的层。
  图3。改变分离度
  默认度是1,这就是为什么在继承树中一些子类会丢失的原因。在本例中,分离度被增加至2。
  第二个问题是除了在树状结构中被发现的类,其他类没有属性和操作。这不利于使用者出于再使用的目的来研究已存在的普遍模式。
  接下来的例子将向您展示,怎样识别具有任意属性及操作的整个继承树。
  向RationalSoftwareArchitect载入一个Java项目。
  切换至DiagramNavigation视图,按以上步骤所述,从工作场所中发现其抽象结构。
  从您感兴趣的第二步中找出一个抽象类。
  通过寻找模型搜索器中的类,找出等级树状结构类,双击打开编辑器中的类,按下F4以打开等级树。确保typehierarchy已被选择。
  右键点击类,并将其转变为一个可视的类图,通过选择VisualizeAddtoNewDiagramFileClassDiagram,如图4所示。
  通过右键点击并选择VisualizeAddtoCurrentDiagram来向当前的图添加剩余的类。
  图4。将类可视化为新的类图
  图5展示了产生一个继承树类图的过程:
  打开并按下F4以显示类的等级。
  选择每一个类并将其添加到类图中。
  检查并完成右边的图。
  图5。产生一个继承树类图的机理
  类图以RationalSoftwareArchitect默认格式产生。有几个有用的修改可以帮助您将图表进行可视化。例如,您可以修改连接路径样式以使用树状样式路径,并且您可以通过在工作区右键点击来打开内容菜单然后点击Arrangeall。到此产生的类图要比自动产生的看上去更好。如图6所示。
  图6。带有属性的继承树状图及树状路径连接
  图6中的类既显示了属性又显示了操作。属性及操作显示的好处在于,您可以研究它们共同的状态及行为,从而进一步了解一个已存在系统是如何被实现的,这将有助于系统的再使用。
  产生一个高层的UML类图
  RationalSoftwareArchitect能让您通过从一个Java项目中,选择多个Java文件,来产生类图。
  在模型搜索器中,使用Visualize来将它们添加到一个新图或当前的类图中。
  如果多个类已经被添加到当前的图中,那么它们之间的关系也将被显示。
  图7是一个从Java代码中自动产生的类图的例子
  图7。一个自动产生的类图
  如图7所示,您可以从模型搜索器中选择多个Java文件来将它们在新的类图中可视化。如果您想添加更多的类,您可以选择更多的Java源代码来将它们在当前的类图中可视化。本图显示类包括在项目及它们的基本关系中。这有利于在项目中自动发现UML类,但是自动发现的关系在这里用处不大。
  在图7中,几乎所有的关系是use除去继承关系。使用关系太过平常以至于不能给出有用的设计信息,越来越多的特别的聚集及组成关系被隐藏了甚至当所有的关系在图中都出现过。聚集关系表现为一对多关系当一个类含有其他类的很多项目时,组成关系用于描述一多一关系当一个类仅含有其他类的一个例子时。这个高层的抽象意味着对类之间更精确的关系发现,并为本设计的执行提供了有用的信息。这个类图如果没有抽象关系的细节将不再像以前那样有用。
  这里,我们尝试并探索了,以半自动方法产生UML类图的高层抽象方案。UML类以和以前同样的技术发现,并且类间的关系由人为指定。高层的抽象方案基于研究已有源代码所必须的知识。
  图8的例子显示了,怎样应用这个方法来得到高层的UML类图。
  图8。使用UML模型向导建立一个空白模型
  为了得到一个高层的类图,您必须首先建立一个空白模型。
  按图8所述步骤建立一个新的空白模型:
  在文件种类下,选择UMLModeling。
  在模板下,选择BlankModel。
  在文件名区域,输入BlankModel。
  对于目的文件夹,输入example。
  默认的图检查框Createadefaultdiagraminthenewmodel应该被检查。
  对于默认的图种类,选择Freeform。Diagram。
  点击Finish。
  接下来的一步是从自动生产类图中总结选择的类。RationalSoftwareArchitect中的总结,能让您从一个类中拷贝一个类并粘贴到另一个类图中,这必须在一个空白模型中完成。如果您将总结的类粘贴到同一个类图,或本空白模型以外另一个类图中时,那么该类的属性和功能将丢失。
  通过图9所示的步骤,从自动生成的类图中总结已选择的Java类:
  从classdiagram2。dnx中选择类FuelTank,Engine,Passenger以及Car
  在一个已选类上右键点击以打开内容菜单
  选择Harvest菜单
  将已总结的类粘贴至分离的创建于步2的类图中。
  在类间创建聚集及组成关系。
  图9。一个类图中的总结类
  下一步,在类间创建关联关系,这使您能够在聚集及组成关系中选择一个。图10显示了一个高层的类图。
  图10。半自动方法产生的UML类图的高层抽象
  通过将图10与图9进行比较,您可以发现半自动方法能精确显示类间关系。本图可用于独立设计执行文件,或已有系统远期改善。
  着重点:
  如果不经过总结,聚集及组成关系将不能应用于RationalSoftwareArchitect。
  创建一个序列图
  序列图是应用最为广泛的UML动态建模方法。它致力于识别一个系统的行为。一个序列图通常应用于建模用例,以显示一个系统的方法及功能。
  RationalSoftwareArchitect不能从Java代码中自动创建一个序列图。下面的步骤会告诉您怎样去创建一个:
  创建一个空白模型。
  创建一个序列图:
  在BlankModel上右键点击。
  从dropdown(context)菜单中,选择AddDiagram然后选择SequenceDiagram(如图11所示)。
  向序列图添加类。
  在两个类间对方法标记进行排序。
  保存序列图。
  图11。创建一个序列图
  当您完成创建一个序列图,一个序列文件产生于Collaboration:Interaction标签下。您可以从Java代码中向序列图添加类。二者均见于图12。
  图12的主要工作区显示了一个序列图的例子。
  图12。产生于Java源文件的序列图
  一个方法调用意味着信息从召集者传向被召集者。被召集者是方法所有人,它从方法召集者那里收到信息。信息可以是单道的也可以是双道的。一个序列图由在处于一组方法所有者及一个初始发起者之间的,一系列方法标记组成。第一个标记必须从发起第一个方法标记的地方开始。
  总结
  本篇文章论证了怎样通过应用RationalSoftwareArchitectv7。0,从Java代码中使用逆向工程创建UML类及序列图。层级类图代表着一种方式,该方式能发现在一个项目或工作集中,发现整个类间的层次关系。这将有助于开发人员向一个已有系统扩展或添加新功能。高层的类图能直观显示类间的聚集及组成关系。这有助于开发人员扩展或修改一个已有设计。这对开发人员们开发大型应用系统意义非凡。序列图显示了在执行特定任务时类间的动态方法标记。这为系统中提供了清晰的运行原理图。

浩瀚宇宙,人类能冲出银河系吗?上个世纪50年代随着人类第一颗人造卫星的发射成功,标志着人类正式走出了地球,开始探索神秘的宇宙,在人类没有真正走出地球之前,我们永远都不知道宇宙有多么的浩瀚。地球之外我们……中国航天威武,长五B遥三火箭问天实验舱已就位,7月就能发射图为中国太空站随着中国的问天实验仓,以及长5B遥三火箭均已经在海南发射场就位,并且开始组装,只需要等到7月到达窗口期间就能直接发射,很显然,中国航天的表现非常威武,那么,……六年级学生致校领导改善校园环境的建议书尊敬的校领导:你们好!我是六(5)班的一名学生,我每天都在校园里生活、学习,校园就像我的家,我爱我的校园。每天,我一走进校门,首先映入眼帘的就是那一片片绿油油……TauHerculids或会成为近些年来最强大的流星暴天文学家们对5月3031日可能出现的壮观的新流星雨感到兴奋。它是否壮观取决于地球穿越彗星轨道的时间。随着这一事件的到来,让我们来看看流星雨的前景、以往的流星暴中发生了什么等信息……我说异想天开E度网专稿未经允许不得转载仰望旷远的天空,我们想要翱翔,于是有了飞机;相隔异地,我们想要联系,于是有了手机。这些都是在当时看来异想天开的事情。我想说,异想天开不是不可以,……有照为证!原来,银河系中心的大号恒星宝宝也有餐盘天文学家还抓在恒星形成过程中,环绕着新生恒星的周围会产生吸积盘。这个吸积盘,也被称为原恒星盘。新生恒星通过吸积盘持续地从环境中聚集气体,逐渐长大。因此,吸积盘是名副其实的餐盘,把发育……我的荣耀9用了近5年的荣耀9(6128),在2020年之后虽然不再当作主力机用,但其小巧机身外出携带很方便,除了工作以外时间,平时外出基本都是带着耀9为主。平时喜欢拍照,所以当初买……4款天玑8100手机,抛开品牌只看产品,该怎么选?不知道大家有没有发现,现在在国内市场中最火的并不是骁龙8Gen1和天玑9000,在这个性能过剩的时代,普通用户根本没有必要选择最强悍的性能,同时他们的售价也不实惠。相比之下,骁……拍照轻旗舰!荣耀70系列登场全新推出的荣耀70系列,包含三个版本:荣耀70、荣耀Pro和荣耀Pro。荣耀70系列共有3款Soc,荣耀70Pro搭载天玑9000高端旗舰芯片、荣耀70Pro搭载天玑8000旗……地球即将两极反转?地球磁极正在移动,未来可能穿越中国指南针是根据什么运转的?当然是根据地球磁场啦,在指南针上有一根磁针,它可以在地磁场的作用下自由转动并保持在磁子午线的切线方向。指南针依据地磁场而转动正常的指南针一般……2016年中秋节寄语通用版天上月圆,人间月半,欢欢喜喜庆团圆。中秋节到了,语文迷为大家整理了通用的中秋节寄语,希望对你有帮助。(1)八月十五相思夜,坐着相思椅,望着相思月,相思夜里话相思,句句相思……坚持不懈的读书名言警句1、选择自己所爱的,爱自己所选择的。2、我们应有恒心,尤其要有自信心!我们必须相信,我们的天赋是要用来做某种事情的。居里夫人3、伟大的工作,并不是用力量而是用耐心去……
你的健康,到底该由谁来负责?世界卫生组织宣布,每个人的健康与寿命60取决于自己,15取决于遗传基因,10取决于社会因素,8取决于医疗条件,7取决于气候影响。可见真正的健康是掌握在我们自己手中的,我们完全不……体内的甲状腺结节会癌变么?不要慌张,尽量少吃这3类食物虽然结节发生癌变的可能性比较小,但并不代表不会癌变。所以,为了避免结节产生癌变,在日常饮食上一定要注意,这3种食物,能少吃就少吃。1、雌激素含量高的食物雌激素增高是……关于专心学习的名言专心,注重在一个专字上。不专心会让人什么都做不好,眼前的事儿做不好,脑子里想的事也不可能做好。学习也是如此,有哪些名言是关于专心学习的?以下是品学网小编分享的关于专心学习的名言……冷冻的馒头能吃吗?会产生黄曲霉素吗?不妨来看下导语:随着人们生活水平的不断提高,各种家用电器已成为每个家庭的必需品,它们的普及为人们的生活提供了许多快捷和便利,它可以适当延长食品的保质期,有助于减少一些浪费。馒头已成……中医常说的肝气郁结,到底是什么病?又有哪些表现呢?在日常生活中,喜欢中医的朋友都知道肝气郁结一词,他是肝脏所表现出来的症状,那么,肝气郁结到底是怎么来的?又有哪些表现?又该怎么调理呢?我们知道肝主疏泄、升发、藏血、喜条达……穿开衫不一定要搭配裙子,学沈梦辰穿成上短下长,显高又洋气由针织面料做成的针织开衫,并没有我们想象中的那么好驾驭,比如选款。面对短款针织开衫、长款针织开衫、套头针织开衫、V领针织开衫、黑色针织开衫等几十种款式,很多人都到无从下手,不知……感恩我的父母三年级作文亲爱的爸爸,是您背起了我们家的重任;亲爱的妈妈,是您把我带到这个世界上,给予我生命;爸爸妈妈,是你们一直以来对我付出无微不至的关怀,感谢你们!有时候我很调皮捣蛋,但是我一……走进中国互联网宇宙中心在北京西北郊的百望山下,有一个叫东北旺的村子,二十二年前,跟市郊的众多村子一样,东北旺村也是一个普通的不能再普通的村子。时光流转,沧海桑田,二十二年后的今天,这里已成为全北京城……提供给家长的一封信提供给家长的一封信1尊敬的家长:您好!我是一年级1班的班主任张永利,为了我们共同的目标:您的孩子,我的学生能快乐学习、健康成长,希望家长们配合学校做好以下工作……天空的美丽作文1000字天,真的美吗?她给我的,是无数次的点头,她知道,我能看见的,明白的。我并没有否认,天真的很美,它宽阔,辽广,无边无际,无半点瑕疵可寻,它是美的,最重要的,是它的无处……漫画大王的作文在平凡的学习、工作、生活中,大家都有写作文的经历,对作文很是熟悉吧,作文是人们把记忆中所存储的有关知识、经验和思想用书面形式表达出来的记叙方式。那么你知道一篇好的作文该怎么写吗……那一次我真委屈叙事作文我坐在沙发上,回忆着,思索着。虽然我真的很难相信,不过事实终究是事实,它犹如一道把明晃晃的钢刀一般,刺痛了我的心。我低下了头,泪水像断了线的珠子一样往下落。这还是昔日的伙伴吗?……
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网