没有合适的资源?快使用搜索试试~ 我知道了~
生成故事图的GXL模式及问题概述
理论计算机科学电子札记94(2004)29-38www.elsevier.com/locate/entcs一种用于故事图的孟春燕 Kenny Wong2加拿大阿尔伯塔大学计算科学系摘要本文简要概述了生成故事图的过程,并描述了一个GXL模式来表示它们。这些图来自静态的、启发式的逆向工程分析,并结合了UML活动和协作图的数据和行为信息。本文还总结了潜在的问题,在表示和可视化的故事图。保留字: GXL,逆向工程,模式,故事图1介绍UML是一种流行的面向对象的建模符号,用于软件开发[9]。故事图是UML活动图和对象协作图的组合。这个图最初是作为正向工程的图形语法语言而开发的[6,7]。当用于逆向工程时,它可以用来更好地理解被分析软件的控制行为和对象级依赖关系[5]。例如,故事图可以表示在程序的控制流程中对象之间创建和删除链接的概念[2]。在我们从Java源代码生成故事图的项目中,我们使用GXL(图形交换语言[3])来表示故事图图形。GXL支持基于类型化、属性化、排序1电子邮件:chunyan@cs.ualberta.ca2电子邮件:kenw@cs.ualberta.ca1571-0661 © 2004 Elsevier B. V.根据CC BY-NC-ND许可证开放访问。doi:10.1016/j.entcs.2004.01.00630C.孟氏K.黄文辉/《理论计算机科学电子笔记》94(2004)29-38有向分层图[4]。软件图的实际种类(例如,抽象语法树)可以用UML建模,UML本身是一个图,因此可以用GXL表示。这种模式对于软件信息的交换特别重要[13]。第2节使用一个示例来说明如何使用GXL来表示方法级故事图,以及如何从源代码中提取信息来形成故事图。第3节总结了我们在设计GXL模式时遇到的一些问题。第四部分是论文的结论。2表示本节描述我们如何用GXL表示故事图。分析和可视化过程包括几个步骤:(i) 解析Java源代码,(ii) 在Java代码上生成XML标记,(iii) 在GXL中生成故事图,(iv) 展示GXL故事图,以及(v) 将故事图导出为SVG。这个过程的当前实现(见图1)分为两个部分:事实提取(前三步)和可视化(最后两步)。 步骤1创建内部Java抽象语法树(AST)。步骤2解析标识符并生成一个表示Java AST的可导出XML文档。第3步遍历XML文档,并根据GXL DTD 1.0和我们的故事图模式计算故事图作为保存在GXL中的一组对象。第4步也使用了这组步骤5利用Monarch库生成SVG文件,这是一个包含绘图指令的XML文档。2.1示例方法级故事图在下面,我们给出一个简单的单块方法的示例方法级故事图。该方法的Java代码如图2所示。故事图的GXL文件如图3所示。为了简洁起见,省略了一些节点和边。在方法级故事图中,控制流程被表示为类似流程图的活动图,而方法中每个块的行为在这个例子中,各种陈述导致C.孟氏K.黄文辉/《理论计算机科学电子笔记》94(2004)29-3831Java文件使用XMLSchema for JavaXML文件使 用 GXL 架 构 的故事图抽象以GXL方法类别--level levelSD SD进口SVG图模型拉约图表视图和代码视图JPEGGXL出口文件Fig. 1. 可视化工具public int findDuplicate(String s){Professor p = getProfessor(instructor);Course c1 = new Course(); p.setCourse(c1);//由于某种原因,更改课程:课程c2= newCourse(); p.setCourse(c2);p.deleteCourse(c1);}图二. Java示例方法对象之间形成的依赖关系。红色用于显示块中的对象依赖关系是否被破坏。图4给出了一个示例故事图。在故事图上,我们使用不同的颜色来表示不同的对象类型和边缘类型,如图5所示。例如,黄色边缘表示对对象调用的方法调用事实提取器Visualizer32C.孟氏K.黄文辉/《理论计算机科学电子笔记》94(2004)29-38<图ID<联系我们<属性名称=“声明”类型="”值=“开始”/>节点> <图ID...<联系我们节点>... <联系我们图三. 部分GXL故事表示见图4。 呈现的方法级故事图在GXL中生成故事图的过程包括三个主要步骤:(i) 组操作形成活动:将基本块中存在的对象协作视为活动,用节点表示C.孟氏K.黄文辉/《理论计算机科学电子笔记》94(2004)29-3833图五. 故事图具有用于对象上的方法调用和在对象之间形成或破坏的依赖关系的嵌套图。活动节点之间是表示条件或顺序执行的控制流程关系为了管理视觉复杂性,如果在块中存在太多对象协作,则可以进一步分解块以形成要在单独的顺序链接的节点中呈现的子活动。(ii) 提取对象协作:在活动节点(用方框表示)中,特定的操作由对象协作图说明。方法调用或语句根据它们被调用的顺序用数字标记对于每种方法,开始和结束节点描述了控制流程的入口和出口点(iii) 提取链接创建和删除:了解对象之间形成或破坏的数据依赖关系或链接可以帮助程序员理解详细的对象交互。启发式算法用于静态地提取这些链接。绿色边缘表示已经形成的链接,红色边缘表示现在断开的链接。以下小节描述了当前的物流。34C.孟氏K.黄文辉/《理论计算机科学电子笔记》94(2004)29-382.2链接创建和删除链接的创建和删除是将故事图与普通UML协作图分开的不同特性。由于对象之间的关系主要的方法是在方法调用对象的位置考虑方法名的关键字。如果调用包含参数,则根据以下规则检查引用的对象,以查看它与方法调用的接收对象之间是否存在潜在的链接。(i) 容器关系:一个对象被添加到容器对象中。这种依赖性可以与诸如add、put、insert等关键字区分开来,以及流行容器名称的数据类型。 链接边类型为(ii) 关联关系:一个对象与另一个对象有某种关系。例如,Course对象被设置为Teacher对象(教授课程的人)。可以将O层对象设置为Building对象的特定级别。这种依赖性可以与setAt、set和set*等关键字区分开来,其中 * 可能表示方法调用参数链接边类型为(iii) 起源关系:一个对象通过另一个对象返回。这种依赖性可以从关键字中发现,如get*,generate*和produce*,其中 * 可能表示方法调用返回的已定义对象类型。链接边缘类型为链接删除规则类似(关键字如remove、delete等), 使用set*(null)的情况。例如,如果发现一个Obj链接到其他某个对象,那么anObj.setComponent(null)将断开这两个对象之间的链接。2.3方法级故事图的GXL模式为了以一致的方式表示故事图,我们定义了一个GXL模式。参见图6。GXL模式用UML类diagram表示。这个模式描述了构成故事图元素的节点和边的种类。由于故事图是静态分析的结果,因此可以使用一些推理来推断对象之间创建或删除链接的实例。根据我们的模式,故事图的顶视图就像一个控制流程图。然而,故事图是一个嵌套图,而不是嵌套图,其中词汇块可能包含更多的词汇块,基本块C.孟氏K.黄文辉/《理论计算机科学电子笔记》94(2004)29-38351TrueFalseEdge0..21. *BlockNode10..*111测开始端0..*0..*方法调用边缘MethodCallObjectNode0.. *1链接创建/LinkDeletion0..*0..*0..*ThisObj程序定义对象控制节点方法在最低层。目前,我们正致力于在更高的抽象层次上为故事图的表示和可视化提供一个一致的模式。表示方面包括带有源代码片段的适当文本标签。视觉方面包括节点和边的形状和颜色。目前,该信息被存储为相应节点或边的属性0..*ObjCreationEdgeLocalObj实例对象GlobalObj见图6。方法级故事图模式3问题和今后的工作本节描述我们在使用GXL模式来呈现故事图时遇到的一些实现问题36C.孟氏K.黄文辉/《理论计算机科学电子笔记》94(2004)29-383.1将关系图链接到代码在故事图中,我们需要将原始源代码的片段表示为图中的标签。因此,需要将故事图链接到从中导出故事图的文本源代码我们有两个基于XML的组件:一个用于标记Java源代码,另一个是用于表示故事图的GXL。这些面向源代码和面向图的表示之间的关系很有趣,因为用户可能希望在源代码和故事图之间切换视图。例如,像SHriMP这样的系统可以支持类似的能力[8]。对于我们的目的,我们需要一些一致的配色方案来将源代码视图中的元素与故事图视图中的元素进行视觉关联。此外,为了正确地为故事图中的代码片段着色,我们需要携带Java的XML标记,作为附加到某些GXL节点的值。图7是图4中的故事图的示例代码视图。见图7。 方法级故事图XML标记可以与GXL对象一起携带,甚至可以用于更高级别的故事图,从而允许将用户从高级视图带到源代码视图。像SHriMP [11]这样的交叉引用机制可以考虑为不同抽象级别定义的模式,以使可视化工具更有用。C.孟氏K.黄文辉/《理论计算机科学电子笔记》94(2004)29-38373.2更高级别的故事图类级别的故事图是从XMLJavaAST文档的细节中提取的,而不是从抽象的方法级别的故事图中提取的。我们正在探索以“模块化”的方式扩展我们的模式的方法,以便在越来越高的抽象或粒度级别上合并故事图的分析概念。通过定义一个模块化和一致的模式,我们打算能够在不同的抽象层次上有选择地交换故事图信息Cox和Clarke [1]提出的多层次方法可以用来整合不同抽象层次的故事图的概念模式。挑战在于如何实现不同抽象层之间的接口,以及如何简化故事图信息的交换3.3复合图在生成GXL格式的控制流程图时,我们遇到了对复合子图的需求,其中边需要跨越不同级别的两个子图的边界(即,不完全包含在嵌套子图中)。根据[12],我们应该把这些边放在最小共同祖先图节点中。这种依赖关系会造成图形布局的变化。3.4评价此外,还需要做更多的工作来验证我们的算法,评估可视化的可伸缩性,并评估实现的可用性4结论GXL可用于使用本文中概述的模式表示方法级故事图。Java代码上的XML标记和GXL表示可以同时用于表示故事图的代码视图和图形视图。为更高级别的故事图扩展模式是正在进行的工作。此外,在复杂的复合图(如故事图)的图形布局中也会出现困难。引用[1] Cox,A.和C.陈文辉,多层次数据模型,2003年第一届国际逆向工程元模型与模式研讨会论文集,北京,北京。38C.孟氏K.黄文辉/《理论计算机科学电子笔记》94(2004)29-38[2] Fis cher , T. , J. 涅 尔 湖 Torunski 和 A.Zündorf , Storydiag r ams : Anewgraphgrammarlanguage based in the unified modeling language , in : Proceedings of the 6thInternationalWorkshop on Theory and Application of Graph Transformation-TAGT '98(Paderborn,Germany),1999,pp. 112-121[3] GUPRO,GXL(1.0)文件类型定义(Dagstuhl版)(2002)。网址http://www.gupro.de/GXL/dtd/print.html[4] 霍尔特河, A. Wi nter和A. 徐文,王晓刚,2000年162-171。[5] Jahn ke,J., H. Müller,N. Mansur ov和K. 王,软件演化环境中的数据中心可视化,第10届国际程序理解研讨会论文集-IWPC 2002(巴黎,法国)(2002),pp. 187-196.[6] Jahn ke,J. 和A. Zündorf,基于故事驱动建模的课程分布式规划和信息系统的定义和实现,见:软件规范和设计国际研讨会-IWSSD-9(Ise-Shima(Isobe),日本),1998年,第100页。78比86[7] Jahn ke,J. 和A. Zündorf,将语法分析应用于数据库重新设计,in:Handbook of Graph Grammars and Computing by Graph Transformation(1999),pp.267-286。[8] Michaud , J. , M.-A.Storey 和 H.Müller ,IntegratinginformationsourcesforvisualizingJavaprograms , in : Proceedings of the International Conference onSoftware Maintenance-ICSM 2001(Florence,Italy),2001,pp. 250-260URLhttp://citeseer.nj.nec.com/michaud01integrating.html[9] Rumbaugh , J. , I. Jacobson 和 G. Booch. “The Unified Modeling Language ReferenceManual,” Addison-Wesley,[10] Singleton Labs,Graph visualization and diagrams:MonarchGraph(2003).网址http://www.singleton-labs.com/mgraph.html[11] 商店,M.-一、K. Wong,F. Frac chia和H. A. Müller,关于有效软件探索的集成可视化技术,在:IEEE信息可视化研讨会论文集-InfoVis '97(亚利桑那州凤凰城),1997年,pp. 38比45[12] Winter,A.,与GXL交换图形,在:第九届国际图形绘制研讨会论文集-GD2001(维也纳,奥地利),2001年,pp.485-500[13] Winter,A.,B. Kullbach和V. Riediger,GXL图形交换语言概述,在:软件可视化-Dagstuhl研讨会(Dagstuhl,德国),2001年,pp.324-336
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- zigbee-cluster-library-specification
- JSBSim Reference Manual
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功