没有合适的资源?快使用搜索试试~ 我知道了~
视觉信息学3(2019)18Clone-World:一个大规模软件克隆的可视化分析系统DebajyotiMondal,Manishankar Mondal,Chanchal K.作者:Kevin A.施耐德,李玉坤,王世松萨斯喀彻温大学计算机科学系ar t i cl e i nf o文章历史记录:2018年12月10日收到收到修订版2019年2月25日接受2019年在线预订2019年关键词:可视化分析软件克隆多元网络a b st ra ct随着大数据时代的到来,软件系统的数量,它们的依赖关系以及单个系统的复杂性变得越来越大,越来越复杂。因此,了解这些不断发展的软件系统是成本效益的软件管理和维护的主要挑战。在本文中,我们进行了一个案例研究与不断发展的代码克隆。程序员经常需要手动分析克隆片段的共同进化,以决定重构、跟踪和错误删除。然而,手动分析是耗时的,并且对于大量克隆几乎是不可行的,例如,有数百万个相似对,克隆在数百个软件版本中进化。我们提出了一个交互式的可视化分析系统,克隆世界,它利用大数据可视化的方法来管理大型软件系统中的代码克隆。克隆世界,提供了一个直观的但又是克隆分析问题的有力解决方案。克隆世界结合了多个信息链接的可缩放视图,用户可以通过实时交互式探索来探索和分析克隆。用户研究和专家我们相信Clone-World将简化克隆的管理和维护,并激发未来的创新,以适应可视化分析来管理大型软件系统。©2019由Elsevier B.V.发布代表浙江大学和浙江大学出版社。这是一CC BY-NC-ND许可下的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。1. 介绍代码克隆是软件系统代码库中完全或几乎相似的代码片段(Roy et al. ,2014年)。两个彼此相似的代码片段形成一个克隆对.一组相似的代码片段形成一个克隆类。代码克隆是一种常见但有争议的软件工程实践,经常被程序员在软件开发和维护过程中用于重复公共功能。一 个 丰 富 的 研 究 机 构 ( Barthel et al. , 2011; Göde andKoschke ,2011; Juergens et al. ,2009 年;Kapser 和Godfrey,2008年;Mondal 等人,2012a,b)分析了克隆对软件系统演化和维护的影响。虽然一些这项工作得到了萨斯喀彻温大学全球水资源未来(GWF)的部分支持。∗通讯作者。电子邮件地址:dmondal@cs.usask.ca(D.Mondal),mshankar. usask.ca(M.Mondal),croy@cs.usask.ca(C.K.Roy),Kevin. usask.ca(K.A.施耐德),moran.li @ usask.ca(Y。Li),shisong.wang @ usask.ca(S.Wang)。同行评议由浙江大学和浙江大学出版社负责。https://doi.org/10.1016/j.visinf.2019.03.003这些研究(Göde和Koschke,2011; Kapser和God-frey,2008;Krinke,2008)确定了代码克隆的积极影响,一些研究(Barthelet al. ,2011; Mondal et al. ,2012 a,b)已经显示了代码克隆的强烈负面影响的经验证据,例如隐藏的错误传播(Li和Ernst,2012),后期传播(Barthel等人,2013),,2011)、不一致性(Barthel et al. ,2011)和高不稳定性(Mondal et al. ,2012b)。由于这些负面影响,代码克隆被认为是软件系统代码库中最具威胁性的方面之一。在做出关于克隆管理的决策(例如克隆重构、跟踪、删除错误)时,程序员通常需要了解候选克隆在过去是如何一起进化的(Mondal et al. ,2014 b,a).由于没有合适的工具或接口,程序员需要手动检查每个候选克隆片段在过去的提交期间如何改变,这非常耗时。单个克隆片段的进化分析涉及在每个先前的修订中定位该片段的每个实例并分析差异(即,变更)之间的连续修订的实例。在这种情况下,自动支持一次可视化多个克隆片段的共同进化可以帮助程序员以时间有效的方式分析和管理克隆2468- 502 X/©2019由Elsevier B. V.发布代表浙江大学和浙江大学出版社。这是一个在CC BY-NC-ND许可证下的开放获取文章(http://creativecommons.org/licenses/by-nc-nd/4.0/)。可在ScienceDirect上获得目录列表视觉信息学期刊主页:www.elsevier.com/locate/visinfD. 蒙达尔,M。Mondal,C.K.Roy等人/视觉信息学3(2019)1819图1.一、克 隆 世界的快照:(左)克隆景观,以及克隆和文件社区和SPCP热图。(右)克隆进化观。1.1. 贡献我们的主要贡献是克隆世界(图1),一个可视化的分析系统,以帮助程序员可视化克隆类,它们在系统中的分布,以及来自相同或不同克隆类的多个克隆片段的共同进化。克隆-世界支持无缝的用户交互和多个可缩放的意见,是信息链接。Clone-World的灵感来自于大数据探索原则:克隆世界的一个主要优势是它的各种情节的顺利整合,其中一些(例如,曲面图和多变量网络)在不同的可视化环境中很常见,但从未用于分析软件克隆。Clone-World使用户能够以直观的方式探索软件中频繁更改的克隆,分析克隆更改的影响,了解各种克隆重构任务的克隆协同进化关系,以及所有这些。现有的版本控制系统(如SVN,GIT,CVS)帮助我们可视化特定源代码文件在过去提交期间的演变。 然而,这些系统中没有一个可以向我们展示考虑块级粒度的进化历史(这里,块是克隆检测器考虑的代码片段)。由于Clone-World可视化了克隆检测器检测到的克隆的进化历史,因此可以更深入地了解软件的评估通过用户实验和专家评审对《克隆世界》的评价,我们做出了进一步的贡献结果表明,克隆世界使用户能够有效地执行复杂的克隆分析任务。我们的研究为了解克隆在现实生活中的行为提供了重要的见解。专家们对克隆世界有积极的看法,并提出了一些令人兴奋的未来扩展。1.2. 组织本文的其余部分组织如下。第2节回顾了软件和克隆可视化的最新方法。第3节介绍了Clone-World的使用场景。第4-第6节描述了对有效性的一些可能威胁。最后,第7节对本文进行了总结。2. 初步定义和相关工作我们首先回顾不同类型的代码克隆,稍后将用于描述克隆世界的功能。然后,我们描述现有的方法来可视化软件系统,特别是克隆。2.1. 代码克隆代码克隆有四种类型:类型1-4。类型1克隆,是代码库中完全相同的代码片段,忽略了注释和缩进。类型2克隆是语法相似的代码片段。这些主要是通过重命名变量或更改数据类型从类型1克隆创建的。由于语句的添加、删除或修改,类型1或类型2克隆中出现了类型3克隆。最后,执行相同任务但以不同方式实现的代码片段被称为类型4克隆(语义克隆)。我们在本文中的研究包括前三个克隆类型,这被认为是在文献中的主要克隆类型。我们将使用多变量网络概念。这样的网络中的节点可以是克隆片段、克隆类或文件,并且边可以表示节点之间的类、目录或共同改变关系这样的网络中的一组社区最大化每个子集内的边缘密度,并降低不同子集之间的边缘密度。2.2. 代码和克隆的可视化许多隐喻,如城市(Wettel和Lanza,2008; Mr. ,2017),公园般的环境(Khaloo et al. ,2017年)和太阳系(Oberhauser,2017年)进行了探索,以可视化软件系统。代码映射(Code-map)是另一种流行的可视化代码库的技术,其中代码以文本的缩小表示(使用彩色像素线)进行可视化在一项调查中,Bacheret al. (2017)编制了几项使用代码映射方法的研究。软件克隆的可视化需要更多地关注分析任务。它们通常从网络可视化的角度进行探索,其中节点对应于克隆,链接(边)对应于成对关系(例如相似性或共同进化)(Adar和Kim,2007;Forbeset al. ,2012)。在一项调查中,Basit et al. (2015)在7个类别下编译了50个克隆分析任务,并检查了现有的可视化技术(约22种方法中)可能适合于帮助完成这些任务。存在许多工具( Voidian 和 Telea , 2005 , 2014; Reniers 等 人 , 2014 ) 。 ,2010),但是它们不支持用于克隆分析的综合任务集Adar和Kim引入了SoftGUESS(Adar和Kim,2007)来可视化克隆。SoftGUESS有一个“家谱浏览器”,从左到右排列克隆(每列代表一个版本)。一对节点之间的边反映了软件演化过程中的前趋者和后继者关系。另一个视图“封装浏览器”显示了克隆如何分布在系统的不同部分,其中系统本身显示为树结构。最后,20D. 蒙达尔,M。Mondal,C.K.Roy等人/视觉信息学3(2019)18一由Harder和Göde(2011)提出的CYCLONE可以可视化克隆进化。CYCLONE中的每个软件版本对应一行,其中每个克隆片段由一个小圆圈表示。每个克隆类,即,彼此是克隆的片段,由将相应片段分组的矩形示出。垂直线表示克隆片段的祖先。他们使用颜色来说 明 克 隆 类 型 或 更 改 类 型 。 类 似 的 支 持 在 VisCad 中 可 用(Asaduzzaman et al. ,2011年)。尽管现有的克隆可视化文献是丰富的,但是现有技术没有为复杂的克隆分析任务提供任何直观的解决方案(Basit et al. ,2015)。我们提出的系统克隆世界的设计遵循复合可视化(Javed和Elmqvist,2012)和大数据可视化(Shneiderman,1996)的指导方针。Clone-World通过呈现自然的概述简化了系统的复杂性,然后通过直观的交互吸引用户,特别是他们通常在基于Web的可视化界面中使用的交互。这是通过多视图信息链接界面对进化克隆进行可视化分析的第一步。3. 使用场景和分析任务在本节中,我们将介绍一些驱动克隆世界的使用场景。稍后,在第5节中,我们将根据这些使用场景设计我们的用户研究和实验。考虑这样一种情况:程序员收到来自客户端的他修复了bug,将更新的代码上传到产品中。然而,几天后,客户端再次报告另一个模块中的相同错误。程序员调查并观察到,客户端发现相同错误的第二个模块实际上包含与第一个模块类似的错误代码。项目经理建议程序员找出所有包含类似错误代码或功能的模块随着时间的推移,在观察到许多这样的情况之后,管理人员感到有必要识别类似代码片段的组然后,他要求程序员从代码库中识别出类似代码片段(克隆)的所有组(克隆类)程序员通过在线搜索找到克隆检测器,并将其应用于代码库以检测克隆类。他发现了大量的代码克隆,并意识到如果他可以在克隆类中合并/重构片段将是有益的。因为在这种情况下,只改变一个片段有时就足以修复一个bug。然而,由于资源限制,程序员需要确定哪些克隆类对于重构是重要的,或者跟踪以用于将来的错误修复。在这种情况下,程序员感到有必要使用一种工具来帮助他分析克隆类和片段的比较易变性,以便进行重构。上面的场景已经引发了一些主要问题:我们如何在代码库中分析克隆分发?这些克隆人有什么用?它们是否对应相同的功能?哪个包包含最多的克隆?哪些克隆是重要的或相对容易重构的,甚至在不可能重构的情况下跟踪?我们的克隆可视化框架Clone-World可以在上述所有场景中提供帮助。克隆世界的灵感来自于Basit等人的工作。(2015)(见第2节),汇编了7个类别下的50个克隆分析任务为了进行重点分析,我们仅演示以下五个使用场景S1-S5,它们最能代表不断发展的软件中的克隆管理任务。标识用于重构的克隆类. Clone-World允许用户轻松识别哪些克隆或克隆类是重要的,S2(克隆跟踪)。 当程序员改变一个特定的克隆片段时,克隆世界可以帮助他从同一个克隆类中确定其他类似的克隆片段。Clone-World还可视化了该特定克隆片段是否与不同克隆类的其他克隆片段耦合。这种跨边界耦合(Mondal et al. ,2014a)对于在对克隆片段进行改变时确定影响集是重要的。S3(可视化过去发生的变化)。当修复代码库中的错误或不一致时,程序员可能经常需要分析过去对克隆片段所做的哪些更改是错误的或不一致的更改。在这种情况下,Clone- World可以帮助程序员立即显示在过去的提交中,克隆片段或一组克隆片段S4(分析软件系统中的克隆分布). 由于克隆被认为是有害的,项目经理可能希望调查软件系统中的哪些部分或模块包含大多数克隆,以便可以考虑重构这些部分或模块。克隆世界可以帮助进行这样的调查。它立即集群选定的克隆片段,以这样的方式,用户可以很容易地了解他们是否是通过居住在文件或目录中的社区密切相关。S5(克隆使用&结构分析). 这是一个更深入的调查,开发人员可能希望了解克隆在系统中的用途。为什么要制造克隆人?它们是否体现了系统的功能?克隆世界允许用户收集这些问题的见解4. 使用克隆世界进行在本节中,我们将描述克隆世界的可视化组件、可视化编码、设计细节和使用场景。4.1. 系统接口Clone-World1通过多个信息链接的可缩放视图为克隆分析提供了一个交互式环境。所有视图上的交互都是同步的。用户可以在不同的上下文中看到相同信息的多个可视实例。他们可以浏览不同级别的细节,并根据需要应用实时过滤 图 2展示了克隆世界的总体框架。克隆横向视图:克隆横向视图使用横向比喻来捕获系统中的克隆分布。景观上的点对应着克隆体。每个克隆与改变计数相关联,即,克隆在所有以前的修订中更改的次数。景观是使用表面图生成的,其中克隆显示为点,表面由克隆变化计数加权克隆的颜色映射到从蓝色(低更改计数)到红色(高更改计数)的发散色标。图3表示了我们在本文中研究的软件系统的克隆景观。虽然曲面图通常用于可视化地理空间数据,但这是首次使用曲面图来生成对克隆体的变化倾向的直观概述。我们从图中可以看出。3、jEdit有许多容易更改的克隆分布在不同的目录中,而容易更改的克隆在Carol中,它们聚集在几个目录中。我们采用多维缩放方法生成景观根据他们所经历在过去。1https://youtu.be/9YOwxozQfVA。D. 蒙达尔,M。Mondal,C.K.Roy等人/视觉信息学3(2019)1821BC图二. Clone-World框架的插图。图3.第三章。五个软件系统的克隆-景观(从左到右)Ctags、Carol、Freecol、jEdit、JabRef。见图4。( 左)克隆社区(软件:Ctags)和控制面板。(右)选择了多个区域的SPCP-热图(红色)。悬停类节点会突出显示热图中相应的行和列(橙色)。(Klimenta和Brandes,2013),其中一对克隆片段之间的距离即使克隆密度很高,用户也可以缩放和平移以查看更多细节(类似于地图导航系统)。克隆社区视图:克隆社区视图(图。4(左))采用网络中的社区概念来捕捉克隆如何基于不同关系形成社区。克隆世界使用多变量网络方法来建模网络,即,用户可以选择该视图中的网络节点作为克隆或克隆类。如果节点是克隆,则边可以对应于相应克隆一起改变的次数相似性保持变化模式(Mondal et al. ,2014 b)得分(SPCP-得分),或者属于相同的文件或相同的克隆类。如果节点是克隆类,则边表示对应的克隆类命中公共文件,即,它们具有驻留在公共文件中的克隆。基于用户在横向视图中选择的范围实时构建克隆网络。据我们所知,这是第一次将多变量网络用于克隆可视化。我们使用Louvain方法(Blondel et al. ,2008年),一旦社区形成,我们使用力布局算法(Walshaw,2003)在画布上渲染它们。我们分别用菱形、正方形和星形表示1、2、3型克隆片段。认为与小地图相关联,以快速概述不同社区的规模。用户可以为节点着色,按类、目录或社区。右键单击一个克隆会弹出一个上下文菜单,它为用户提供了额外的选项,例如在面板F中打开相应的源文件。SPCP-热图视图:这是一个热图(图 4(右)),其可视化在克隆社区视图中选择的克隆的SPCP分数。Heatmap的行和列对应于克隆,其中它们按类型排序,然后按克隆类从左到右排序。热图中的每个细胞对应于一对克隆之间的SPCP分数,并且其颜色强度对应于分数。用户可以通过右键单击并拖动鼠标来选择/删除热图的区域为了进行更集中的分析,用户可以单击“reduce”按钮,从克隆社区视图中删除所有未被选择的克隆。用户可以查看以下详细信息选择的克隆,即,他们的家谱,他们一起改变的修订,改变的类型,等等,通过点击22D. 蒙达尔,M。Mondal,C.K.Roy等人/视觉信息学3(2019)18DEG|×--图五. 具有90,000个克隆片段的合成数据集的克隆景观。文件-社区视图:此视图类似于克隆-社区视图,不同之处在于节点对应于与用户选择的克隆相对应的文件,并且用户可以基于它们是否共享公共克隆类或位于公共父目录中来连接一对文件。这些文件根据其包含的克隆数量由大小不同的边缘越暗,文件一起更改的频率就越高。用户可以按目录或社区为节点着色。他们可以将鼠标悬停在节点上以查看文件路径,并根据需要缩放和平移视图。此外,用户可以将文件节点拖到三个代码视图面板中以查看源代码。控制面板:除了上面描述的用户控件,控制面板中还有两个额外的范围滑块。一个滑块用于设置克隆社区视图中出现的片段数量的上限。 另一个滑块用于设置SPCP分数的下限。控制面板还包括一个搜索框。用户可以搜索特定的克隆, 克隆类型的所有克隆或克隆类的所有克隆。 例如,搜索“ab, xyz '将添加类型为a和类b,以及具有类型x和类idy的克隆z,克隆人社区视图。搜索框还支持文件搜索,例如,搜索'克隆进化视图:进化视图从热图激活,用户在热图中选择一组片段并点击“克隆进化按钮”。演化视图将出现在新选项卡中。克隆进化视图采用平行坐标视图来显示软件修订版的更改计数。视图中的每条x单调线对应于一个克隆链,平行的垂直线对应于修订。每个版本的链高度对应于克隆从上一个版本经历的更改(添加、删除和修改)的数量。克隆更改通常是稀疏的,例如,可能有许多修订,其中感兴趣的克隆没有被改变。因此,我们添加了另一个“修订减少”控件来呈现所有修订,除了那些没有经历任何更改的修订。动态表I显示选定的克隆ID(按更改计数排序), 以及它们对应的开始和结束修订信息。演化视图支持通过将克隆网络划分为23网格(参见H1网格的列对应于克隆类型1、2和3。顶行仅包含连接来自同一类的克隆(边界内关系)。底部行包含表示已更改的克隆对的边4.2. 实施和可扩展性克隆世界的后端(数据访问和预处理)已经使用Java和R编程语言实现前端已经使用D3实现,D3是一个流行的JavaScript库,用于在Web浏览器中生成动态和交互式数据可视化虽然我们使用MySQL数据库(MySQL Data of Subject Systems,0000)来存储所有克隆及其关系信息,但对于具有数千个克隆的中等规模系统来说,这样的数据库并不是必需的。一个独立的前端实现我们的系统,集成了一个中等大小的数据集,和一个简短的文档已经在这里托管。2这个前端采用JSON文件格式的克隆和文件网络,并且没有任何数据预处理开销。因此,给定适当JSON格式的网络数据,Clone-World可以在其用户界面上轻松可视化数据集。克隆世界是独立的克隆检测工具。所有需要做的就是将数据转换为给定的JSON格式。为了支持实时缩放交互,我们在景观中使用预渲染的图像块。我们将图块存储在深度为5的树数据结构顶层对应于景观的总体概况。该系统可以扩展到更高的数量(我们用90,000个克隆进行了实验,见图1)。5),但随着数量的增加,景观变得非常混乱。为了解决这个问题,我们使用了一个更大深度的瓦片树。人们还可以根据Mondal和Nachmanson(2018)提出的技术,根据切片配额的优先级(更改计数)渲染克隆与处理大数据的横向视图的方式一样,同样的平铺图像方法也可以应用于其他视图。然而,这有点棘手,因为社区是动态过滤的。因此,我们需要一个复杂的预处理步骤来处理这个问题(例如,为规则间隔的各种阈值预先计算网络布局,并将图像缓存加载在当前的实现中,我们没有集成这种方法。相反,我们在控制面板上提供了两个滑块来选择top-k高度变化的克隆,用户可以根据他们的系统性能选择k4.3. 使用场景我们现在讨论如何在场景中与克隆世界S1S1(识别用于重构的克隆类):我们请读者参考图1. 六、开发人员通过绘制一个覆盖克隆景观中红色区域的矩形来选择一组易于更改的克隆。如果选择了许多克隆,则他可以使用范围滑块来关注具有高更改计数的克隆的一部分。然后,他与克隆和文件社区视图进行交互开发者可以基于克隆的SPCP分数(共同改变信息)进一步细化他的选择他可以选择具有高SPCP分数的细胞,并点击然后,他可以通过点击“克隆进化”按钮在克隆进化视图中进一步分析它们一般框架中的可能的工作流序列是[A,E,B,D,C,G]。S2(克隆跟踪):开发人员可以选择一组具有高SPCP分数的克隆对,方法与S1相同。他还可以在搜索框中搜索一个或多个克隆或克隆类,并在克隆进化视图中可视化这些克隆,以分析它们的边界内和跨边界关系(图2)。7)。具有跨界耦合的克隆体可能是但属于不同的克隆类(跨界关系)。2http://vga.usask.ca/cloneworld/。D. 蒙达尔,M。Mondal,C.K.Roy等人/视觉信息学3(2019)1823--见图6。使用场景S1的插图(软件:Freecol).(a)- (b(e)完善档案社区。见图7。 使用场景S2的插图(软件:Freecol).左边的三个单元格对应于边界内关系,右边的三个单元格对应于不同克隆类型的跨界关系很难重构(因为它们属于不同的克隆类),但对于处理未来的克隆更改或bug修复来说,跟踪它们很重要。一个可能的工作流程序列是[E,C,G,H]。S3(可视化过去发生的更改):这个场景是由bug修复任务驱动的。如果错误对应于克隆代码,那么开发人员搜索相应的克隆ID,使用上下文菜单添加与当前克隆一起更改的所有克隆片段,最后打开克隆进化视图。在克隆进化视图中,他选择“reducerevision”按钮,以获得仅经历克隆更改的修订版本的平行坐标视图(图2)。8(顶部))。然后,他使用刷和过滤的相互作用,以进一步分析克隆的共同进化。一个可能的工作流程序列是[E,B,C,G]。S4(分析软件系统中的克隆分布由于克隆被认为是有害的,开发人员可能希望调查包含易更改克隆的文件和目录。在这种情况下,开发人员首先与景观和Heatmap交互(如在S1中),但将重点放在文件社区视图上。一旦开发人员选择了一个所需的克隆集,他可以用父目录颜色来着色文件社区视图。社区和节点大小让他快速了解不同文件中 通过选择SPCP分数的边,他可以分析不同模块之间的耦合(图1)。 9)。如果来自不同目录的文件形成社区,那么这通常表明模块之间的高度耦合一个可能的工作流序列是[A,D,E]。S5(克隆使用结构分析):克隆世界与软件源文件集成在一起,这样用户就可以在源和分析界面之间不断切换。开发人员可以右键单击社区视图中的克隆片段节点,然后从上下文菜单中选择为了打开相关的一个或多个克隆的源文件(即,属于同一类,或一起改变)。的文件在新选项卡中打开,其中克隆代码突出显示以供进一步调查。5. 实验我们通过从一个名为SourceForge.net的在线存储库下载五个开源主题系统来进行我们的实验。表1包含这些系统的详细信息。 我们用NiCad表1主体系统。系统浪域LLR转速CtagsC代码定义生成器33,270774卡罗尔Java游戏25,0911700FreecolJava游戏91,6261950jEditJava文本编辑器191,8044000JabRefJava参考文献管理45,5151545LLR=最后修订版中的代码行,Revs=修订版数量克隆检测器(Cordy和Roy,2011),然后使用SPCP-Miner工具(Mondal et al. ,2015)来检测克隆谱系。不同克隆类型的系谱及其 变 化 信 息 存 储 在 数 据 库 中 , 并 可 在 线 获 得 ( MySQL DataofSubject Systems,0000)。5.1. 学科体系对于每个系统,我们分析了每个软件系统可用的最新版本。使用S1中描述的工作流程(图6),我们选择了一组高度变化的克隆片段,这些片段在最后一次修订中是活的。虽然视觉选择取决于用户我们经常发现克隆类包含10到20个克隆片段,这些克隆片段被本地化在几个文件中,因此可能更容易重构。然后我们进一步探索了它们的进化信息。我们注意到,与边界内关系相比,在低SPCP分数阈值的情况下,每个系统都描述了大量的跨界关系另一方面,较高的SPCP分数有利于更多的边界内关系。例如,随着SPCP分数阈值从1增加到5,Carol系统示出了以下(内/跨)边界关系比率:0. 13,0。12,0。16,0。37, 2。进化论观点揭示了克隆人如何进化的见解例如图8(底部)显示了在软件修订版1595中更改的Carol的选定克隆片段。我们观察到12个片段发生了变化,其中一些片段的变化量相似(因为它们在4组中进化这些片段对于重构或跟踪可能很重要,因为其中一些片段在随后的修订中更改了几次。我们在所有其他受试系统中发现了类似的情况。此外,经常存在由两个人组成的小团体,24D. 蒙达尔,M。Mondal,C.K.Roy等人/视觉信息学3(2019)18===-见图8。使用场景S3的插图(软件:Carol).图9.第九条。 使用场景S4的插图。不同系统中选定克隆的文件社区:(从左到右)Ctags、Carol、Freecol、jEdit、JabRef。表2所选克隆片段的覆盖率。系统碎片总数选择的片段涵盖的变更涵盖的共同变更Ctags29526.10%百分之四十九点二七40.05%卡罗尔1 3085.50%百分之十七点四二4.84%Freecol1 153百分之十三47.73%46.60%jEdit10 4813.26%33.09%百分之十点二五JabRef2 0743.80%百分之十六点三三百分之一点一七五个克隆片段,在多次软件修订中发生了密切变化。我们还研究了文件社区,其中一对文件的克隆之间的SPCP分数被编码为不透明度。因此,较暗的边缘颜色表示在许多以前的修订中,相应的文件一起更改。 因此,图9表明Freecol和jEdit在不同模块之间可能具有高耦合。5.2. 用户研究我们招募了16名参与者(11名男性,平均年龄27岁,S.D. 6.25),每个人都有至少2年的经验,工业软件开发或软件工程研究。虽然他们中的大多数人都有关于代码克隆的知识,但其中两人有可视化分析的经验。我们首先向参与者描述了Clone-World的视觉编码,然后要求他们执行以下任务,向他们介绍Clone-World支持的工作流程。任务没有时间限制。在每个任务之后,我们要求用户根据执行任务所花费的努力程度在最后,我们还要求对系统进行定性反馈。任务1:在一组高度变化的克隆中找到5个克隆类,使得每个类包含具有至少SPCP得分的克隆对α。有多少个文件对应于这些克隆类?【场景:克隆重构】任务2:搜索克隆类a、 b、 c、 d,并报告与跨界关系对应的所有类对。【场景:克隆人追踪】任务3:找到克隆x,并可视化所有在以前的修订版中随x更改的克隆。报告5个与x变化密切的克隆。【场景:克隆进化分析,修复BUG】任务4:找到一个文件x,并检索其中包含的所有克隆。报告修改这些克隆代码片段的软件修订版。[场景:由于版权问题,需要删除文件]任务5:查找显示高耦合的文件社区,即,这样的社区的许多节点将以不同的颜色着色。[场景:软件维护和结构化]虽然一些参与者之前有使用视觉分析系统的经验,但任务完成难度的中位数并不高(所有任务的中位数在2到3.5之间,图11(右))。总体用户评分(平均值2.38,s.d.0.86),积极的反馈对这样一个全面的框架是鼓舞人心的我们在下面描述细节。实验结果表明,被试的课堂选择任务(任务1)具有一致性。图10(第一)示出了参与者经常选择的前五个克隆类。这5个类别占总参与者投票的40%左右大约70%的参与者报告说,他们选择的课程最多有5个文件。对于任务2,我们测量了参与者在报告跨界关系时的准确性(图1)。11(左))。大约53%的参与者正确地报告了这些关系,其余30%的人正确地识别了除1个关系之外的所有关系(平均值2.30,s.d. 0.94)。任务3也受到“亲密度”和“耦合”的个人概念的影响如图10(第二)所示,前五个频繁选择的克隆片段覆盖了总参与者投票的约48%类似地,最常被选择的前五个软件修订版(在任务4中)占参与者投票总数的38D. 蒙达尔,M。Mondal,C.K.Roy等人/视觉信息学3(2019)1825==-==-图10个。 用户研究结果总结。A、B、C、D和E对应于相应任务中的前5个元素使用父目录颜色为克隆社区视图中的节点她说,专家B建议使用“直观的文件图标”。他还建议我们“尝试圆形包装”,这样一个克隆类就出现在一个圆形里面,克隆类根据目录被进一步分组到更大的圆形里面的更小的圆形里。我们喜欢这个想法,但一个陷阱是,对于一些克隆检测器工具,输出类不是不相交的,因此克隆类没有很好地定义为包含在一个圆内。两位专家都发现平行坐标的专家A评论说:见图11。(左)任务2和任务5的报告计数。(右)用户对各种任务的评分。(图10(第三次))。任务5的结果(图)11(左)),显示相对更多的变异性(平均值8.61标准差5.69),其中-硅氧烷归因于个体对耦合的感知差异。图图11(右)显示了参与者在使用克隆世界有多困难的问题上,只有1名参与者排名5(非常困难),4名参与者将其列为困难,其余的排名3或更少(平均3.17,S.D. 0.88)。克隆世界能够在参与者中留下积极的印象。在一个问题中,参与者对他们对克隆世界的印象进行了排名(1-非常积极,5-非常消极),只有一名参与者排名4,其余的排名在1和3之间(平均值2.38,s.d. 0.86)。几乎所有的部分-pants在定性反馈中表现出了热情。他们说,克隆世界习惯了克隆世界,但这个系统很容易使用。其中一人提到,“跟踪所有组件是困难的”。5.3. 专家为了调查专业开发人员是否愿意使用这样的工具进行软件维护,我们采访了一位软件开发专家(来自大学的专家A)和一位专业软件开发人员(专家B)。我们首先详细解释了我们的系统Clone-World,然后是上面介绍的使用场景。他们自己摸索了半个小时。他们都认为克隆世界将能够帮助开发人员探索软件系统。两位专家都喜欢这种相互关联的视图方法。专家A说,她也喜欢作为识别用于重构的克隆类,相同或不同类中的克隆在多次修订中改变的频率两位专家都提出了许多深思熟虑的改进和扩展范围。专家A说,用户可以选择景观中的区域,并且随后可能想要通过在搜索框中搜索特定克隆片段来检查该片段是否属于所选区域。类似地,可以搜索文件,并且可能希望查看它在所选环境中覆盖的克隆片段。由于搜索框目前独立于景观中的选择,因此将这两种交互结合起来以允许用户进行更复杂的查询是有意义的。她还建议用更多的互动选项来增强Heatmap工具例如,用户可以基于更改计数应用行和列的重新排序她提到,技术来组织捕捉集群的热图专家B建议将克隆世界集成到软件IDE中,以便开发人员可以实时使用它。他评论说“不同可视化之间的相互联系真的很有帮助”。他还建议集成代码编辑功能,这样就可以使用这个工具编辑和保存源代码,并实时分析效果。专家B指出,有时代码克隆可能来自于作者对软件包中的几个文件的处理。因此,扩展克隆世界6. 对有效性的我们的克隆可视化工具Clone-World在NiCad克隆检测器之上工作(Cordy和Roy,2011)。对于NiCad的不同设置,克隆检测结果可能不同,因此,我们从视觉分析中得到的结果也可能不同。然而,我们用于NiCad的设置被认为是标准的(Roy和Cordy,2008)。此外,根据最近的一项研究(Svajlenko和Roy,2014),NiCad是检测代码克隆的一个很有前途的选择。因此,在本发明中,我们相信,我们从应用NiCad获得的克隆数据的视觉分析中的发现是重要的。虽然我们使用NiCad进行克隆检测,但Clone-World可以很容易地与任何克隆检测工具集成。26D. 蒙达尔,M。Mondal,C.K.Roy等人/视觉信息学3(2019)18我们没有将克隆世界与其他方法进行比较,例如如何使用电子表格或现有的软件可视化工具执行相同的任务。原因在于,在不同的应用程序或电子表格中不断切换可视化,并分别过滤它们中的每一个,这使得克隆世界成为一个更好的选择。7. 结论我们提出了克隆世界,一个新的可视化分析框架,探索克隆在软件系统。Clone-World是一种大数据可视化方法,用于管理大型软件系统中的代码克隆。它为克隆分析问题提供了一个直观而强大的解决方案。为了对Clone-World进行解压缩,我们结合了多个信息链接的可缩放视图,让用户通过实时交互式探索来探索和分析代码克隆。我们的用户实验证明了克隆世界的价值,一个复杂的克隆分析任务。专家我们相信,我们的工作将激发未来的研究开发交互式多视图可视化管理代码克隆和许多其他软件功能。附录A. 补充数据与本文相关的补充材料可以在https://doi.org/10.1016/j.visinf.2019.03.003上找到。引用Adar,E.,金,M.,2007. SoftGUESS:可视化和在上下文中探索代码克隆。第29届国际软件工程大会(ICSE)。I E E E ,第762-766。阿萨杜扎曼,M.,Roy,C.K.,Schneider,K.A.,2011. VisCad:灵活的代码克隆分析支持NiCad。第五届ICSE国际软件克隆研讨会(IWSC)。ACM,pp. 七十七比七十八巴赫尔岛,Namee,B.M.,Kelleher,J.D.,2017.代码映射隐喻-在软件可视化中使用的回顾。 第12届计算机视觉、成像和计算机图形学理论与应用国际联合会议(VISIGRAPP-IVAPP)。SciTePress,pp.17比28巴特尔湖,Khomh,F.,Zou,Y.,中国科学院,2011.软件克隆中的后期传播。输入:程序在IEEE Int.Conf. 软件维护(ICSM)pp. 273-282。Basit,H.A.,Hammad,M.,科施克河,2015.面向目标的克隆数据可视化研究综述。第三届IEEE软件可视化工作会议(VISSOFT)。IEEE,第46比55Blondel,V.,纪尧姆,J.L.,兰比奥特河,Lefebvre,E.,2008.在大型网络中快速展开社区。J. Stat. 机甲理论实验图10:P10008。科迪,J.R.,Roy,C.K.,2011年。克隆探测器。在:ICPC工具演示.pp.219-220.Forbes,C.,凯万卢岛,J.,2012. Doppel-Code:一个克隆可视化工具,用于区分全 局 和 局 部 克 隆 影 响 的 优 先 级 。 第 36 届 IEEE 计 算 机 软 件 和 应 用 年 会(COMPSAC)。IEEE,第366-367.Göde,N.,科施克河,2011.克隆的变化频率和风险。输入:程序第33届 国际Conf. 软件工程(ICSE)。pp. 311-320再用力点,J. Göde,N.,2011.高效处理克隆数据:RCF和Cyclone。输入:程序第五届国际软件克隆研讨会ACM,pp.81比82Javed , W. , Elmqvist , N. , 2012. 探 索 复 合 可 视 化 的 设 计 空 间 。 IEEE PacificVis
下载后可阅读完整内容,剩余1页未读,立即下载
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
我的内容管理 收起
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
会员权益专享
最新资源
- 利用迪杰斯特拉算法的全国交通咨询系统设计与实现
- 全国交通咨询系统C++实现源码解析
- DFT与FFT应用:信号频谱分析实验
- MATLAB图论算法实现:最小费用最大流
- MATLAB常用命令完全指南
- 共创智慧灯杆数据运营公司——抢占5G市场
- 中山农情统计分析系统项目实施与管理策略
- XX省中小学智慧校园建设实施方案
- 中山农情统计分析系统项目实施方案
- MATLAB函数详解:从Text到Size的实用指南
- 考虑速度与加速度限制的工业机器人轨迹规划与实时补偿算法
- Matlab进行统计回归分析:从单因素到双因素方差分析
- 智慧灯杆数据运营公司策划书:抢占5G市场,打造智慧城市新载体
- Photoshop基础与色彩知识:信息时代的PS认证考试全攻略
- Photoshop技能测试:核心概念与操作
- Photoshop试题与答案详解
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)