https://github.com/SoftwareMaintenanceLab."> 一个新的Metaheuristic-Based软件模块化的层次聚类算法 - raybet雷竞app,雷竞技官网下载,雷电竞下载苹果

复杂性

PDF
复杂性/2020年/文章
特殊的问题

解决工程和科学问题使用复杂仿生计算方法

把这个特殊的问题

研究文章|开放获取

体积 2020年 |文章的ID 1794947 | https://doi.org/10.1155/2020/1794947

Masoud Aghdasifam, Habib Izadkhah,阿亚兹Isazadeh, 一个新的Metaheuristic-Based软件模块化的层次聚类算法”,复杂性, 卷。2020年, 文章的ID1794947, 25 页面, 2020年 https://doi.org/10.1155/2020/1794947

一个新的Metaheuristic-Based软件模块化的层次聚类算法

客座编辑:Narayanan Kumarappan
收到了 2020年5月07
修改后的 2020年7月10
接受 2020年7月20日
发表 2020年9月30日

文摘

软件重构是一个软件维护行动改善软件内部质量而不改变其外部行为。在维修过程中,结构重构是由remodularizing源代码。软件集群是一个模块化技术remodularize构件源代码旨在提高可读性和可重用性。由于集群的NP困难问题,进化的方法,如遗传算法被用来解决这个问题。结构重构的文学,不存在基于搜索的算法,采用分层模块化的方法。利用全球和本地搜索策略,在这篇文章中,一个新的基于搜索的自顶向下的层次聚类方法,名叫TDHC,提出可用于模块化系统。算法的输出是一个树的每个节点是所有工件的工件由子树和候选人是一个软件模块(即。集群)。这棵树可以帮助软件维护人员有更好的视觉源代码结构决定适当的组成分(即工件的旨在创建模块。、文件、包和组件)。实验结果七个文件夹的Mozilla Firefox具有不同功能和五个其他的软件系统显示TDHC生产模块化接近人类专家的分解(即。,目录结构)比其他现有的算法。该算法将帮助软件维护人员更好的remodularization源代码。 The source codes and dataset related to this paper can be accessed athttps://github.com/SoftwareMaintenanceLab

1。介绍

软件维护是修改软件产品发布后的过程中减少错误,提高性能,或改善设计。未来软件开发和软件维护任务是重要的消费大约90%的总成本(1]。

在软件维护,一些变化包括添加、删除或修改代码导致代码块的增长和未来困难的代码的可理解性。代码味道(或坏代码味道)是源代码的一部分不会引起错误的外部行为和没有内部行为的一个重要的问题在这个时刻,但是可能会导致问题在未来的发展过程中2]。软件重构是修改源代码来纠正代码味道没有任何系统的外部行为的变化。它可以提高软件源代码的质量通过减少潜在的错误发生,使代码更容易维护或扩展。

福勒等人报道一些可能的代码味道在他们的书中(3)面向对象programming-based系统重构,提出可能的场景。自那时以来,许多研究提出新的重构场景或验证应用各种场景的影响在源代码中实现更好的质量。

重构技术分为两个主要概念和结构组。例如,重命名方法重构是一个概念重构场景,改变方法的名字更好的解释的责任。一些结构重构场景方法或函数组成。例如,长时间的代码块通常有多个责任或复制块应该重构。其他一些结构重构场景来改善代码块的功能。作为一个例子,移动方法重构(MMR)是一个重构场景的行为被定义为从一个类的方法转移到另一个类最关系的方法。方法之间的关系可以结构关系或语义关系。也有一些组合重构被定义为一个原始序列的重构,反映复杂的转换。

说明结构重构任务,图1描述了一个小软件系统模块化的一个例子。在这个图中,每个节点是一个类和边表示类之间的协作。这些类是分为两个模块根据他们的合作。图2展示了几个变化对这个软件后维护操作。如图所示,节点之间的关系也改变了,一个“我”的新类添加到系统中。在图2节点的关系“G”剩下的节点模块多关系正确的模块。所以需要安置的位置这个节点(节点“我”)remodularization。remodularization图所示的结果3

手动分析源代码,重构是一个昂贵和耗时的过程。因此,许多研究已经完成自动重构。一种方法结构重构是remodularization,如图2,所以remodularization是由集群技术。根据(4),”软件聚类过程的目的是分区软件系统模块(子系统或包),在一个模块是由一组相互协作的软件构件来实现高级属性或提供高级服务的软件系统。“聚类算法的输入是工件依赖图(ADG),这张图显示工件的节点和边缘显示构件之间的关系。工件可以是一个实体如一个函数,一个文件,软件类,甚至所谓的集合类包或源代码文件夹中的文件。构件之间的关系可以从创建结构化特性,如电话或nonstructured等功能语义关系。图4显示了一个示例集群的工件的编译器(集群)划分为四个模块根据他们的关系。预计这些模块与其他模块最大凝聚力和最小耦合(6,7]。

当前聚类策略获取适当的模块化是基于两个主要层次或无技术。在分层方法,构造树的关系从叶到根的工件。这些技术给开发人员一个层次视图决策树的数量和适当的割点构建模块。大多数呈现分层软件集群是烧结的方法(自底向上)。在这种算法中,每个构件开始在自己的集群;根据一定的标准,例如,Jaccard,所有集群之间的距离计算,和对集群接近最高的合并作为一个移动的层次结构(8]。分层算法的主要局限性如下(8]:(1)由于锯齿形的存在,来识别模块,必须使整个树。(2)不存在明确的标准来决定聚类过程应该停止的地方。(3)武断的决定是在层次聚类方法的一个主要问题。这些决策产生的影响最终的聚类。当面对任意决定和一个错误的选择,没有扭转的可能性和纠正错误的选择。(4)这些算法都是贪婪的,因此不能探索问题空间。几位以前的研究9- - - - - -11]显示这些方法在软件集群中表现不佳。相反,毫无层次聚类算法,提出了减少分不同级别的系统树图。

有还无模块化方法基于搜索的方法探索解空间的全局搜索和局部搜索算法。但这些方法不给开发人员一个愿景上层模块之间的关系。

在文献中,由于集群的NP困难问题,基于搜索的方法(如遗传算法)一直被广泛使用8,12]。因为他们的勘探和开发的能力,他们是一个有效的方法来解决聚类问题(13]。目前,基于搜索的工作软件重构平坦模式(即remodularization方法。、无方法)和上级不提供适当的组合。

1.1。这个问题

在本文中,我们专注于一个特定的重组问题的背景下,面向对象和程序程序:给定一个ADG构造从现有代码,将它分解成较小的和有意义的高内聚和低耦合的模块。凝聚力被定义为“一个模块的内部内容的程度是相关的”(1]。我们的方法支持“大爆炸”remodularization;即。,一个ll the artifacts of the software system are considered for remodularization.

本文解决的主要问题是提出一个层次化的remodularization源代码,同时保持准确的距离(人类)专家分解。摘要自上而下分层聚类算法结构重构的源代码构件依赖图(ADG)分支界限法方法。目的是找到合适的组合树和推荐适当的最低水平合并构件作为一个模块。因此,它将开发人员更容易识别不同级别的位置,如文件包,或组件。在该方法中,遗传算法(GA)和邻近搜索算法的目的是在树上的组成构件。该算法评估七个文件夹的Mozilla Firefox和五个其他的开源系统。结果表明,该方法能够提出一个可接受的层次remodularization重构的工件,通过视觉对高层模块开发人员之间的关系。

1.2。贡献

本文的贡献总结如下:(1)提出一个新的软件重构方法和自顶向下的层次模块化技术。生成树算法的输出从源代码帮助软件维护人员有更好的视力源代码结构决定适当的组成分的工件(即旨在创建模块。、文件、包和组件)。重要的是要注意,在文学,不存在基于搜索的算法,采用分层模块化的方法。(2)Prufer树是利用遗传算法的编码序列。是否现有编码方法用于软件模块化建(例如,群5],ECA [12],和SGA [14])或permutation-based(例如,DAGC [15]和E-CDGM [16),这些方法只显示一个平坦的模块化。(3)提出了一种新的目标函数评价层次remodularization。

剩下的论文如下:部分2,一些研究在软件重构进行了讨论;第三节介绍了该算法,第四节,给出了实验结果。研究的结果和有效性进行威胁的部分45,分别。最后,第六节本研究的结论和未来的工作。

Fowler的书出版后(3)在软件源代码重构,许多研究已经完成完善这个引用的概念,以及检测和修复代码味道的一个自动化的解决方案,例如,(17- - - - - -20.]。

Remodularization源代码构件是结构重构的方法。由于大空间为模块化解决方案的空间,许多基于搜索的研究已经完成。在一些算法5,7,21GA),即Bunch-GA、和两个爬山算法,即利用Bunch-NAHC Bunch-SAHC,在解空间搜索。在该算法中,解决方案的空间大小 ( 是工件的数量),他们中的大多数代表相同的模块化。Parsa Bushehiran介绍DAGC编码(15为了解决这个问题,减少了空间的状态 Tajgardan et al。22)提出了一个算法基于分布估计算法(EDA)没有指定参数的GA算法的挑战。Izadkhah et al。16]提出E-CDGM方法,首先将源代码转换成一种中间代码称为mCode从调用依赖图(CDG),然后提出了一种模块化的适应度函数(类方法,使用类属性和method-method关系)和self-automata算法和DAGC编码。Amarjeet et al。23]提出MaABC算法软件模块化,这是一个多目标优化方法利用蜜蜂人口算法。他们还提出了PSOMC [24],PSO-based模块聚类分区软件系统通过优化星团内依赖性,intercluster依赖性,集群,每个集群的模块数。

最近的研究在多目标搜索方法扩大了。Praditwong et al。12]提出了只有两个集群方法(ECA)和最大限度地提高集群软件模块化的方法(MCA)使用多目标遗传算法和帕累托最优。哈曼和Tratt25)也使用了帕累托最优结合两个指标:国会预算办公室(26)和一个名为SDMPC的新指标。生等。27]提出了一种基于遗传方法建议重构适应度函数构成的耦合,凝聚力,复杂性,和稳定性。Kebir et al。28)提出了一种遗传算法的方法,包括检测component-relevant代码味道和消除这些代码味道通过搜索使用遗传算法的最佳序列的重构。在[29日),库玛丽和斯提出MHypEA(多目标进化算法hyperheuristic)建议软件模块集群而凝聚力最大化和最小化耦合的软件模块。它是基于不同方法的选择、交叉和变异操作的进化算法,和,选择一个低级的启发式的选择机制是基于强化学习的自适应权重。

在[30.),黄女士和刘引入了一个新的目标函数称为自动引导优化算法来找到一个好的软件系统的分区,同时考虑全球模块和边缘的方向。三种模块化算法叫HC-SMCP, GA-SMCP,本文提出MAEA-SMCP女士采用优化软件系统。

Bavota等人有一些研究重构。在[31日),提出了一种新技术的自动remodularization包,使用结构和语义的措施,将一个包分解成更小、更有凝聚力的。结果表明,分解包有更好的凝聚力没有耦合,恶化和remodularization提出的工具从功能的角度来看也是有意义的。在[32),他们引入了一个工具叫R3自动分析底层的潜在主题的标识符,评论,和在源代码中字符串类以及结构这些类之间的依赖关系。他们提出了33)方法提取类重构基于三个SSM [34),清洁发展机制(35CSM [],36)结构和语义因素强烈的凝聚力提高重构类没有导致显著增加的耦合。在[37),他们提出了一个基于关系主题模型技术来确定MMR的机会。

Maletic和马库斯[38)提出了一个算法使用语义和结构数据提出重构决策。在[39],Palomba等人提出了一个技术,称为TACO(文本分析代码气味检测),利用文本分析来检测一个家庭气味的不同性质和不同级别的粒度。

Jalali et al。8)提出了一种新的多目标适应度函数模块化,命名为财政部,它使用结构和非结构化特性与爆炸品处理算法。在[40),一个名为社区的新确定的聚类算法树算法创建一个社区ADG树使用可用的知识。Mahouachi [41提出了一种方法使用NSGA-II [42]找到最好的序列重构的结构质量,最大化最大化语义凝聚力的包,和最小化的重构工作,能够产生一个连贯的和有用的推荐序列重构的质量指标和从开发人员的观点。苧et al。43)提出了一种新的重构的建议,要求更多,提高设计质量和修复代码味道使用NSGA-III [42]。宽干谷(44]介绍了衡量一个类包含的方法可以准确的预测是否需要MMR。我et al。45)提出了一个新的数学软件的编程模型remodularization问题小说度量基于复杂性平衡的原则和混合遗传算法(无)。

Kargar remodularization等有研究的多道程序设计语言软件系统。在[14),他们提出了两个依赖图称为语义依赖图(西班牙)和名义相似图(NSG)。这些图都是构建独立于编程语言的语法。西班牙是构建基于源代码的名词,和NSG构造基于工件名称之间的相似性。然后,在[46),他们提出了一种遗传算法模块化程序相结合构建依赖图(即。,叫依赖图、语义依赖图和名义相似图)。

总之,基于搜索算法中描述的三个方面。一个方面是搜索的范围(本地战略和全球战略)。一些算法是基于局部搜索策略,结果可能不是最优解。全球搜索技术总是旨在找到好的解决方案。单目标和多目标搜索算法的另一个分组。在多目标算法,有多个目标函数或指标来指导搜索过程。最后一个方面是使用语义特征和结构特征进行聚类。在语义搜索优化,词法分析或潜在语义分析(或两者)被认为是在搜索进展。在结构特点,两个构件之间的函数调用,继承等被认为是为集群。一些搜索聚类算法如表所示1


的名字 类型的算法 类型的目标函数 结构/语义特征

Bunch-NAHC和Bunch-SAHC7,21] LS 所以 年代
多个爬山的方法(47] LS 所以 年代
E-CDGM [16] LS 所以 年代
大型社区搜索(48] LS 所以 年代
HC-SMCP [30.] LS 所以 年代
人体自燃(49] LS 所以 Se
Bunch-GA [5] GS 所以 年代
DAGC [15] GS 所以 年代
可替换主体的进化算法(50] GS 所以 年代
和谐搜索(51] GS 年代
GA-SMCP [30.] GS 年代
Hyperheuristic方法(52] GS 年代
ECA, MCA12] GS 年代
分布估计方法(22] GS 所以 年代
爆炸品处理、CGH CGoH [8] GS 年代和Se
基于搜索多目标软件remodularization [53] GS 年代
多个因素的关系(54] GS 年代
交互式进化优化(55] GS 年代
GAKH [56] GS 所以 年代
MaABC [57] GS 年代
无形体病(45] GS 所以 年代
ILOF [58] GS 支持,莫 年代和Se

LS:本地搜索;g:全局搜索;所以:单目标;莫:多目标;S:结构;Se:语义。

分层的方法,最初被认为是所有工件的模块化的单位,在一个重复的过程,更多类似的模块合并创建一个新模块。单键,全联,平均连锁算法是最常见的层次聚类算法Maqbool等人适应模块化源代码(59]。库恩等人提出了一种新的算法使用模块化的平均使用非结构化特性的联系(60]。本文的作者使用了程序代码的财产属性和变量的命名沟通识别,这使得算法的输出依赖于开发人员的知识水平插入描述和命名变量。Andritsos和Tzerpos引入了一个称为地狱的方法61年)作为一个层次算法结合结构和非结构化信息。该算法是一种分层抽样算法基于最小化损失的信息在一个软件系统的模块化。Rathee et al。62年]提出了一种新的分层技术的软件remodularization估计概念之间的相似度软件构件,使用结构和语义耦合在一起,得到更精确的测量耦合的措施。他们还提出了一种新的加权依赖测量方案的组合结构,概念,改变基于历史软件元素之间的关系在一起。

除了搜索和分层方法上面所讨论的,有许多基于和基于模式的方法。穆罕默迪和Izadkhah [40)使用邻近树产生的ADG集群软件系统。该算法获得的聚类质量比分级方法和不到进化方法。光谱方法(63年)用图的代数性质,如在相应的拉普拉斯算子矩阵特征值和特征向量进行聚类。comprehension-driven聚类算法(交直流)[64年)是一种基于模式的算法,介绍了Tzerpos和霍尔特。它使用多个集群模式代码工件。

2.1。差距在文献中

使用层次属性实际上并不是新的remodularization领域已经使用多年,但没有以前的研究使用层次属性remodularization进化方法。由于模块化的NP困难问题,大多数模块化方法利用基于搜索聚类方法和进化算法(8,12]。这些聚类算法只显示一个平坦的模块化的程序。因此,这些算法不能代表一个程序的层次属性,所以没有办法指定封装的水平,例如,模块,包,和组件,它的设计师。

3所示。提出的聚类算法

大部分工作remodularization基于集群技术(31日]。层次聚类算法提出了到目前为止是贪婪算法和武断的决定,可能会导致不希望的结果。相反,这些算法不建议一个适当的系统树图的割点或模块化分不同级别的。在本节中,一个新的聚类算法,提出了一个分层的方式源代码remodularization没有这些问题。为此,我们设计一个新编码和遗传算法的适应度函数。利用给出的编码构造从源代码树的工件和适应度函数与一个分支和绑定的方法应用于确定适当的水平在构造树中,这可以成为一个合格的模块化结果。改进的质量产生的模块化,我们还设计了一个爬山算法。这种本地搜索算法的结果将被应用在邻近搜索的遗传算法。算法的输入是一个ADG由源代码,和它的输出是一个模块化建议软件维护人员。我们的方法支持“大爆炸”remodularization; i.e., all the artifacts of the software system are considered to perform modularization, and the current structure (modularization) will not be considered.

我们考虑类和文件是最小的组成单元作为面向对象的构件进行模块化和结构化的软件系统,分别。这些部分组合包等更大的模块或组件的每个模块的成员贡献的其他部分模块的一个责任。因此,重要的是要有适当的上层成分。我们也考虑调用依赖创建两个构件之间的依赖关系,即。边,ADG。一些构件被称为实用工具类的其他工件或文件。因此,他们可以删除完成后开始和解决这些问题的算法。对于每一个人,如果所有调用从一个模块,这个工件也将被添加到模块。但如果是多个模块所使用的,它被认为是一个实用程序。

设计一个算法会,五个特征编码(染色体表示),适应度函数(评价),选择,交叉,变异必须被描述。

3.1。编码

遗传算法的染色体是一个参数集表示一个解决问题的办法。染色体遗传算法的目的是找到一个最优或算法的解决方案。这些参数可以是一个二进制字符串或任何其他数据结构。摘要Prufer序列(65年)被用来编码树的数字序列作为染色体。Prufer序列之间的一对一的映射序列的数字和一个标签树。树的步骤构建Prufer数字显示为算法1。让 表示Prufer序列。相应的树Prufer序列构造的算法2

输入:一个标签树T(V,E)
输出:Prufer序列
评论的节点T标记从1到尺寸的吗V哪一个 代表一个节点标签
PruferSequence←空列表
V.size大于2
←的叶子V最小的数量
j←标签的节点 连接到。
删除 V和( , )E
添加j对PruferSequence
结束时
返回PruferSequence
输入:Prufer序列P
输出:一个标签树
度←大小的列表P.size + 2由1
P
度()←度()+ 1
结束了
#现在我们知道节点我在树上程度度[我]
←1
T←为树的边缘一个空列表
至少三个项度是零
←第一项度最小
度()←度(]−1
Add (一个, )T
+ 1
结束时
一个,b←非零项度
Add (一个,b)T
返回T
返回PruferSequence

例如,Prufer序列树图5 反之亦然。Prufer序列编码树,节点标签4(与最小的数作为叶子节点)被移除和2号添加到序列。然后,节点删除标记2和1号添加到序列。在两个步骤,节点5和6中,3号添加到序列的两倍。在最后一步,删除节点3和1号添加到序列的最后一个数字序列。

在拟议的方法中,树是二叉树,和Prufer序列遵循以下规则:(1)树总是 编号从1到叶子 对工件和 内部节点编号从 (2)所有的工件都在树的叶子是一个程度。因此,数字1 没有出现在相应的Prufer序列。(3)树的根(节点数 )在学位2,根据规则创建Prufer序列,序列中似乎只有一次。(4)所有内节点除了根在学位3(连接到他们的父节点和两个孩子节点),在序列中出现两次。

因此,每一个数字序列 它包含 和数量两倍 出现一次,代表了一种分层模块化树算法。图6显示相应的层次模块化树 Prufer序列。

3.2。评价

人口中的每个染色体遗传算法应该评估来确定解决方案的质量。在下面,我们提出一个新的质量函数对染色体进行评估。提出质量函数,染色体的适应度计算通过使用模块之间的依赖关系提取相应的树的染色体。让 , , 代表节点内部的构件之间的连接数(模块),与工件的连接数量的兄弟节点,和与其他构件连接的数量,分别。健身的节点(即。,一个米odule) is calculated by exCF in the following equation:

这个关系旨在增加凝聚力模块与其他模块和降低耦合。但耦合是分为两种类型的兄弟姐妹耦合( )和外部耦合( )。当外部关系不仅仅是关系到兄弟节点树,这个模块(无论凝聚力)不是在适当的位置,应该得分为负价值。当 大于 ,连接构件的兄弟节点小于与其他构件连接,这表明工件不是在合适的位置,我们应该给一个点球被分配总分1这个节点。算法3显示了评价的伪代码定制的遗传算法的一部分。评价树,提出模块化的结构,遍历树的广度优先搜索(BFS)算法从根。在遍历,如果exCF两个子节点的总和大于或等于exCF节点,他们将被添加到队列中。如果不是,这个节点是最低的适当位置组合构件在子树的叶子,像一个模块。当一个节点划分为两个子节点,如果 的子节点,该节点不能树的一部分,因为其外部关系不仅仅是内部关系的兄弟节点。在这种情况下,exCF等于1,子节点不会BFS过程被添加到队列中。的总健康树, ,计算(2),K是所有节点的集合,他们的孩子(如果存在)没有进行:

输入:一个染色体ch
输出:更新ch.fitness
ch.fitness = 0
树←解码树的染色体ch
←队列()
tree.root.cf = 1
q.push (tree.root)
不是空的
父母←q.pop ()
孩子1,孩子2←t.children ()
孩子1.cf←exCF(孩子1、家长)
孩子2.cf←exCF(孩子2、家长)
如果child1.cf + child2.cf≥parent.cf然后
q.push(子1)
q.push(子2)
其他的
ch.fitness←ch.fitness + parent.cf
如果
结束时

7显示了一个示例的树评估算法。这棵树有55个节点(节点构件在叶子和27日28日内部节点编号从28到53)括号里的数字是每个节点exCF。评价开始时,节点数量37和42个过程被添加到队列中因为exCF的总和(即, )大于父节点的exCF 55(即。,1)。This tree is traversed until the nodes in the set 灰色(彩色)。每个节点包含所有工件在子树的叶子和算法提出的第一个位置创建模块。孩子节点并未增加BFS队列因为exCF之和的同级节点不大于或等于父母exCF。

这三个操作的GA算法描述如下:(1)选择:选择下一代的人口GA代,经典的轮盘赌选择算子中使用该算法。(2)交叉:循环交叉操作(CX) [66年)选择算法,发现基因周期两个父母和其他基因互换。如果 代表两个家长,首先,一个随机的位置 被选中。如果 是不同的,一个位置的值 在第一个父被选中时,这个新职位列表添加到选定的位置。这些选择持续到选择一个位置 在这 当完成时,选择的位置的值在第一父母是值的排列在同一位置的第二个父母。最后,所有其他位置的值(没有)之间交换两个父母。图8显示了一个示例的交叉操作。在这个例子中,第一个位置是随机选择的,然后第三和第四的位置添加到选择列表,分别创建一个循环。值6 9和8在第一个父是8的排列,6,9在第二。在最后一步中,其他职位的价值交换与其他染色体中相应的位置。残雪的输出是输入的排列。因此,它不破坏规则中提到编码部分。然而树的结构(节点)之间的关系将被改变。(3)突变:单交换操作用于突变染色体的两个随机序列中的位置的价值交换。图9显示了一个示例Prufer单交换操作的序列。这一变化将创建一个新的二叉树。

3.3。周边搜索

遗传算法是一种全局搜索。改善结果模块化质量的最后一步,我们设计一个爬山局部搜索策略。设计了局部搜索算法试图产生一个邻近的模块化与更好的质量产生的模块化。这个操作直到没有可以找到更好的模块化。我们使用最大提升策略搜索邻近模块化。在这个策略中,所有相邻的模块化生成特定的模块化,然后其中,选择高质量的模块化的邻居当前模块化和替换它。为新的模块化一直持续到没有这个操作可以找到更好的模块化。如何定义一个社区爬山算法是非常重要的。根据问题的类型,必须定义适当的社区。

3.4。定义:模块化的邻居

是两个从ADG模块化。模块化 被称为模块化的邻居吗如果工件到模块在模块化是搬到模块j。事实上,两个模块化称为邻居如果他们只在一个节点的位置不同。让 是一个依赖图, 代表工件和 表示构件之间的依赖关系。例如,图10模块化和图描绘了一个样本11显示了一个邻居的模块化。这个概念的正式定义如下。

代表了 模块获得图 这样 ,让我们以一个节点 这样 你的邻居 创建, ,在哪里 ( )是一个模块和至少一个关系 现在, 如果exTMQ ( ) exTMQ ( )。

在下面,我们计算算法的时间复杂度。让 , , 代表的工件数量,人口规模,分别和后代的数量。我们有以下:(1)初始化人口,与长度的染色体 生成的所有数字1到吗 重复两次,一个 然后,对于每一个染色体,洗牌(替换每个基因组与一个随机的一个)是应用于随机生成一个新的染色体。所以,这个步骤的顺序 (2)对染色体,数据被转换成一个树 ,然后,树中探索 因此,评价的顺序 (3)选择与轮盘赌 (4)每一对的交叉 ,突变是一个简单的交换 所以,这一步全部人口将秩序

会重复步骤2 - 4 次了。因此,总订单 在这篇文章中, 所以,订单

在最后一步中,NAHC算法应用于在邻居寻找更好的解决方案。每个解决方案将有最多 集群,每个迭代NAHC将成本 因此,对于 迭代,这将是

根据上面的段落中,总订单 ,但在实践中, 是一个小数量和订单总额可以解释

4所示。实验装置

在本节中,我们概述了详细的实验装置进行了实证评估提出的聚类算法。

4.1。案例研究

Mozilla Firefox web浏览器,是一个大规模的和开源应用程序开发的Mozilla基金会Mozilla公司和它的子公司。基于开放中心(http://www.openhub.net)报告,这个应用程序是最受欢迎的项目以及其他开源应用程序,这个应用程序有世界上最大的开发团队,13000多名开发人员。我们选择Mozilla Firefox 3.7,一个开发者预览版本,实验(https://ftp.mozilla.org/pub/)。这个版本是稳定的,大约五百万行代码。七个文件夹有不同的大小和功能选择从这个软件系统。这些文件夹中列出的表的详细信息2。此外,五个中型开源软件选择的细节表3。在所有的实验中,该文件被认为是一个工件。


文件夹名称 文件数量 的链接数 模块数量 文件夹功能

可访问的 179年 293年 8 使尽可能多的人能够使用web站点,即使这些人在某些方面的能力是有限的;文件可访问性(即。,米年代AA (Microsoft Active Accessibility) and ATK (accessibility toolkit, used by GTK + 2) support files)

浏览器 45 45 4 包含前端代码(在XUL, Javascript, XBL, c++)的火狐浏览器的前端代码包含DevTools(便条簿和样式编辑器);包含图片和CSS文件浏览器皮肤为每一个操作系统(Linux、Mac和Windows)

DOM 163年 324年 5 IDL定义的接口的定义DOM规范的部分之间的连接的JavaScript和DOM对象的实现实现的一些核心“DOM level 0”对象,如窗口、窗口。导航器,window.location

扩展 179年 206年 13 包含几个Mozilla扩展,可以在编译时执行谈判上启用HTTP身份验证方法和其他协议;有代码SSPI GSSAPI;内容——和locale-pack切换用户界面后台权限饼干,图片,等等,这些权限的用户界面以及其他cookie特性;支持datetime协议;对手指协议的支持;双向之间的桥梁CLR /.NET/Mono/C # / etc。世界和XPCOM实现W3C的隐私偏好标准平台;支持在python实现XPCOM组件;支持从XUL应用程序访问SQL数据库;对web服务的支持

GFX 342年 644年 7 包含接口,抽象的特定于平台的图形工具包的功能,以及实现这些接口在各种平台上提供的方法绘制图像,文本,和基本形状;它还包含点等基本数据结构和矩形这里使用Mozilla和其他地方

INTL 573年 957年 7 国际化和本地化支持;代码“嗅探”网页代码的字符编码来处理复杂的文本布局,塑造南亚语言代码的相关测定相关的语言环境信息操作环境的代码转换(utf - 16之间两方面:编码器和译码器)和许多其他字符编码代码与实现各种算法对unicode文本,如大小写转换

IPC 391年 59 4 容器的实现IPC(进程间通信)


系统 描述 工件类型 #的工件 #的边缘

Mini-Tunis 学习操作系统 C文件 20. 28
JUnit 4 单元测试框架 Java类 23 32
servlet api Java服务器API Java类 32 24
简单的模拟 动态模拟对象发电机 Java类 84年 118年
计算器 微软的计算器 c++文件 210年 343年

权威的分解(分解领域专家或真实结构)是用来评估remodularization算法的可靠性(67年]。邻近remodularization由算法生成的分解由领域专家展示了可以接受的成就remodularization算法(67年]。就像在14,67年),我们使用专家准备的目录结构分解从源代码。在本文中,我们使用Mozilla Firefox和五个其他的软件系统,其权威的分解(即。,目录结构)来评估该算法。例如,“扩展”文件夹分配了179个文件,Mozilla Firefox开发人员13子文件夹(包)。使用设计工具,我们合并不同的文件夹中的文件在一个文件夹中 ,旨在考虑这些179年持平。在模块化平台式文件 ,旨在测量多少模块化通过该算法将类似于目录结构由Mozilla Firefox开发人员实现。换句话说,该算法应用于 为了重建(或提高)的原始结构。

4.2。研究问题

评估TDHC的有效性,我们回答以下研究问题:RQ1。提出的聚类方法生产模块化有更好的精度,还记得,F-measure,运气,和MoJoFM现有方法相比呢?RQ2。TDHC是稳定的算法吗?RQ3。通过使用TDHC,我们可以给更好的视图层次模块化吗?

为了回答这些研究问题,五个软件系统和Mozilla Firefox的七个文件夹remodularized提出的聚类算法和其他一些可用的聚类算法。

4.3。算法参数

对基于搜索算法参数的设置是必要的。我们获得了实现五所选的集群techniques-ACDC (https://wiki.eecs.yorku.ca/project/cluster/protected:交直流),群(https://www.cs.drexel.edu/斯皮罗/一些/)(SAHC和GA), SGA和SNDGA (https://github.com/Masoud-Kargar-QIAU),EoD-from原来作者或官方网站。相反,我们得到的工作实现DAGC, ECA, MCAhttps://github.com/Masoud-Kargar-QIAU

交叉和变异率的值影响勘探开发的解决方案空间在进化过程中。添加一个额外的输入工件这个问题将增加两个基因染色体。因此,问题空间就会成倍增长。交叉和变异率是根据人口动态设置覆盖解决方案空间更好。交叉率通常被选中作为一个数量超过0.7,和突变率通常是很低的。在这个研究中,0.7和0.9的数字被选为边界交叉与线性步骤。因为突变步骤与日志,它应该增加不多。表4显示了TDHC的参数设置, 是工件的数量后预处理操作。TDHC,我们跟着中使用的算法参数设置(12,30.]。算法参数是依赖于工件(N)的数量。


人口规模( )

最大代计数
交叉率
突变率
交叉操作 循环交叉
变异操作 一个交换

在[8,12,14),减少随机性在我们实验的结果,我们收集30的平均和最佳独立运行。进行公平的比较,运行使用的平均值,并确定一个算法的性能,运行的最佳价值利用。

4.4。评估的结果

比较比较模块已经完成的模块解决方案树的叶子的源代码(这是由专家团队开发)使用精度/回忆(4]和MoJoFM [68年]和F-measure [4)指标。精密/召回指标是用来比较该算法获得的模块化对模块化专家(3),TP(真阳性)的数量comodules相关(出现在原始的模块化),正确的检索算法,FP(假阳性)的comodules数量无关,但检索,和FN(假阴性)的数量comodules相关但未检索到。F-Measure被定义为调和平均数的精度和召回(4)。值精度高/召回和F-measure节目更模块化相似性:

mno表示哪一个模块化的移动或连接操作可以转换到另一个地方。提取之间的MoJoFM模块化 和原来的模块化F计算中所示的关系(5)。一个高价值MoJoFM显示更多的模块化相似性:

比较的总体结果TDHC对其他测试算法的精度/召回,F-measure, MoJoFM,我们利用非参数影响大小统计,即悬崖的 这是用来量化两种算法之间的差异。

在不同的标准有不同的结果的算法,并考虑所有标准,决定哪些算法表现良好并不是一件容易的事。在这种情况下,可以利用多准则决策(指标)(69年]。这种技术措施不同算法的性能和分配算法0和1之间的值,0表示最弱的性能和一个表示的最佳性能。为此,我们n表示数量的算法和标准的数量,分别。一个矩阵,称为 ,创建,然后基于熵,计算每个算法的效率。算法4显示了这些步骤。

输入:n:数量的算法
:数量的标准
X:一个矩阵n×维度和xij量的算法为标准j
步骤1:
步骤2:计算熵值,Hj为标准j
步骤3:计算每个标准的重要性和重量
第四步:计算每个标准的最大和最小向量 , , ,
第五步:计算一个积极的和消极的理想距离现实
第六步:计算一个积极的和消极的理想距离算法 ,
第七步:计算每个算法的效率
第八步:选择最好的算法

5。实证研究结果

比较和评估算法、5软件系统与不同的领域和尺寸已经被选中了。同时,七个文件夹有不同的功能已经从Mozilla Firefox中选择应用程序。

RQ1回答研究问题,相比之下,在这篇文章中,九个搜索算法具有不同特点包括单目标、多目标、全局搜索、局部搜索,structured-based方法和基于语义的方法选择。算法选择Bunch-GA, DAGC ECA, MCA, Bunch-SAHC, SGA, GA-SMCP,爆炸品处理,SNDGA。表中描述了这些算法的特点5。我们也选择交直流作为一个基于模式的算法进行比较。几位以前的研究9- - - - - -11)表明,交直流经常超过别人。因为交直流是一个基于模式的方法,它产生相同的集群每次重复,所以最好的和平均结果总是相同的。


算法 #使用的目的 搜索类型 示例/基于语义 编码类型 参考

Bunch-GA 单目标 全球(GA) 结构 价值 (5]
DAGC 单目标 全球(GA) 结构 Permutation-based (15]
ECA 多目标 全球(two-archive GA) 结构 价值 (12]
MCA 多目标 全球(two-archive GA) 结构 价值 (12]
Bunch-SAHC 单目标 本地(山爬) 结构 价值 (7,21]
SGA 单目标 全球(GA) 语义 价值 (14]
GA-SMCP 单目标 全球(GA) 结构 价值 (30.]
爆炸品处理 多目标 全球分销(估计) 语义和结构 价值 (8]
SNDGA 单目标 全球(GA) 语义、名义和结构性的 价值 (46]

最好的和平均结果TDHC Firefox的七个文件夹文件夹和五个其他软件系统相比,选择先进的算法具有不同特性的结果在精度方面,记得,F-measure, MoJoFM。报告的细节表6- - - - - -9


文件夹名称 Bunch-GA ECA MCA DAGC Bunch-SAHC SGA GA-SMCP 爆炸品处理 交直流 SNDGA TDHC
最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%)

浏览器 70年 65年 60 52 72年 68年 45 36 52 48 55 50 70年 65年 52 49 66年 66年 68年 64年 80年 78年
Dom 58 55 53 48 54 46 26 25 39 36 45 42 58 55 58 55 83年 83年 77年 75年 74年 75年
可访问的 42 39 37 36 40 36 27 24 27 26 55 53 38 36 42 39 42 42 65年 61年 78年 54
扩展 50 46 59 46 53 44 22 21 28 25 35 33 48 46 51 46 77年 77年 65年 62年 84年 71年
Gfx 54 50 61年 54 67年 57 29日 29日 42 41 57 55 54 50 60 57 73年 73年 84年 81年 86年 75年
Ipc 81年 81年 81年 81年 81年 81年 40 38 81年 81年 81年 80年 80年 79年 80年 79年 61年 61年 91年 90年 67年 70年
Intl 80年 76年 75年 75年 84年 81年 41 39 75年 75年 78年 76年 71年 68年 75年 71年 92年 92年 86年 80年 89年 79年

Mini-Tunis 80年 78年 80年 76年 80年 73年 71年 69年 80年 71年 80年 78年 59 51 80年 73年 46 46 80年 75年 84年 67年
JUnit 4 60 58 60 58 60 56 59 51 60 58 60 59 60 57 67年 65年 63年 63年 65年 60 60 51
servlet api 90年 88年 91年 90年 88年 85年 73年 68年 78年 75年 71年 61年 83年 80年 90年 84年 89年 89年 80年 71年 93年 90年
简单的模拟 78年 73年 75年 69年 71年 60 61年 53 63年 51 65年 54 78年 69年 78年 73年 67年 67年 60 49 87年 91年
计算器 40 37 41 38 41 35 33 31日 38 31日 41 38 40 37 41 39 44 44 62年 54 85年 79年


文件夹名称 Bunch-GA ECA MCA DAGC Bunch-SAHC SGA GA-SMCP 爆炸品处理 交直流 SNDGA TDHC
最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) Verage (%)

浏览器 83年 62年 33 321年 One hundred. 96年 7 5 49 28 55 48 79年 71年 84年 76年 95年 95年 56 41 73年 58
Dom 53 41 27 24 44 43 2 2 33 21 38 33 49 39 51 44 82年 82年 75年 56 56 45
可访问的 27 2 23 14 85年 62年 3 2 17 13 45 45 32 20. 26 22 23 23 44 36 42 32
扩展 26 26 26 19 35 28 3 2 12 10 36 36 19 16 75年 72年 69年 69年 39 33 43 30.
Gfx 25 23 26 21 65年 61年 0.95 0.88 20. 15 33 25 21 19 26 20. 60 60 51 40 53 50
Ipc 50 29日 25 25 26 26 0.43 0.42 50 28 57 34 45 38 55 48 95年 95年 52 41 58 50
Intl 45 32 15 15 49 47 0.51 0.44 17 15 72年 65年 45 42 40 32 94年 94年 26 21 71年 69年

Mini-Tunis 81年 78年 81年 79年 81年 78年 69年 63年 81年 72年 68年 65年 81年 78年 81年 80年 35 35 71年 54 84年 55
JUnit 4 63年 61年 61年 60 61年 60 57 51 59 53 48 41 61年 59 61年 60 54 54 68年 61年 46 43
servlet api 50 47 51 49 83年 80年 48 45 48 41 48 42 50 47 50 49 One hundred. One hundred. 48 43 55 72年
简单的模拟 41 36 65年 61年 60 53 38 30. 35 28 41 35 41 33 45 38 57 57 45 40 41 38
计算器 35 31日 37 35 37 32 14 10 12 8 29日 25 20. 17 40 33 20. 20. 40 34 14 12


文件夹名称 Bunch-GA ECA MCA DAGC Bunch-SAHC SGA GA-SMCP 爆炸品处理 交直流 SNDGA TDHC
最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%)

浏览器 65年 55 51 46 56 51 70年 54 42 36 35 32 55 51 61年 57 10 10 56 52 60 49
Dom 43 40 40 37 38 35 48 44 29日 29日 31日 30. 41 33 46 39 42 42 71年 67年 52 71年
可访问的 31日 23 27 25 29日 24 50 37 21 19 26 26 31日 25 44 40 30. 30. 56 51 63年 52
扩展 35 30. 51 37 39 27 36 31日 20. 17 18 17 30. 24 28 22 98年 98年 48 45 50 49
Gfx 48 39 68年 48 62年 43 42 40 31日 30. 42 39 33 28 46 42 25 25 80年 72年 75年 58
Ipc 70年 69年 70年 69年 69年 68年 63年 62年 68年 68年 72年 72年 70年 65年 69年 63年 6 6 84年 81年 73年 85年
Intl 74年 72年 62年 61年 75年 72年 60 60 60 59 71年 70年 58 44 76年 71年 94年 94年 82年 74年 84年 63年

Mini-Tunis 71年 63年 73年 70年 71年 70年 48 39 68年 61年 60 51 60 52 71年 69年 92年 92年 69年 52 78年 67年
JUnit 4 48 41 48 45 48 41 28 25 31日 22 45 39 38 32 53 50 49 49 50 43 34 31日
servlet api 73年 65年 78年 74年 75年 68年 51 42 41 30. 59 48 48 41 78年 72年 41 41 75年 69年 One hundred. 98年
简单的模拟 79年 72年 81年 74年 81年 76年 52 45 38 31日 80年 73年 68年 61年 83年 78年 32 32 78年 70年 90年 90年
计算器 48 40 55 43 61年 50 28 19 21 12 50 42 39 35 55 44 52 52 55 49 89年 80年


文件夹名称 Bunch-GA ECA MCA DAGC Bunch-SAHC SGA GA-SMCP 爆炸品处理 交直流 SNDGA TDHC
最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%) 最好(%) 平均(%)

浏览器 73年 57 40 37 71年 67年 13 9 41 30. 41 39 65年 59 71年 65年 18 18 55 44 66年 52
Dom 45 40 32 30. 40 38 3 3 31日 24 34 31日 45 36 48 41 56 56 69年 65年 54 38
可访问的 27 21 24 20. 36 32 6 4 18 15 41 39 32 22 32 28 26 26 45 40 51 41
扩展 30. 28 34 25 35 28 5 4 15 12 24 23 23 19 28 24 81年 81年 41 38 46 35
Gfx 33 29日 37 29日 63年 41 18 2 24 20. 35 30. 26 23 33 27 35 35 60 51 62年 51
Ipc 51 39 37 37 37 37 0.83 0.84 58 39 60 45 55 48 61年 55 12 12 64年 54 65年 61年
Intl 56 44 24 24 59 57 1 0.87 30. 24 73年 66年 51 43 52 44 96年 96年 37 33 77年 59

Mini-Tunis 76年 70年 77年 74年 76年 75年 57 48 74年 66年 64年 57 69年 62年 76年 74年 51 51 70年 53 81年 60
JUnit 4 54 49 54 51 54 49 38 34 41 31日 46 40 47 41 57 55 51 51 58 50 39 36
servlet api 59 55 62年 59 79年 74年 49 43 44 35 53 45 49 44 61年 58 58 58 59 54 71年 83年
简单的模拟 54 48 72年 67年 69年 62年 44 36 36 29日 54 47 51 43 58 51 41 41 51 51 56 53
计算器 40 35 44 39 46 40 19 13 15 10 37 31日 26 23 47 38 29日 29日 46 40 24 21

在表6,TDHC更好的性能在大多数情况下,“dom”和“Intl”文件夹交直流算法具有更好的效果最好,平均,分别。表7表明,在精度方面,MCA和交直流最佳性能与其他算法。在表8,比较了算法召回TDHC已经在大多数情况下更好的性能。在表9,F-measure TDHC和SNDGA执行几乎相同。

从表6- - - - - -9,我们得出这样的结论:DAGC ECA, Bunch-SAHC GHA, GA-SMCP,与其他算法相比,系统提供了一种极低精度/召回,F-measure, MoJoFM。相反,如果我们忽略的精度标准,显然TDHC似乎是最好的算法,总是在顶部。爆炸品处理,它常常与交直流竞争和SNDGA有时明显优于TDHC。

具体和直接比较的结果TDHC对其他算法的悬崖, 计算的结果表示在表吗10。悬崖上的 是一种非参数影响大小的量化指标观察两组之间的差异(这里TDHC对其他测试算法)。这个度量的结果是在范围−1比1,和更高的价值表明第一组的结果(在这里,TDHC)通常比第二组(其他算法)。解释,如(10),使用下面的大小:可以忽略不计( ),小( ),介质( ),和大( )。MoJoFM的结果表明,该值,精度,召回,F-measure TDHC输出比其他算法。


指标名称 ECA MCA DAGC Bunch-SAHC SGA GA-SMCP 爆炸品处理 交直流 SNDGA
最好的 平均 最好的 平均 最好的 平均 最好的 平均 最好的 平均 最好的 平均 最好的 平均 最好的 平均 最好的 平均 最好的 平均

MoJoFM 0.57 0.37 0.60 0.43 0.56 0.39 0.93 0.90 0.76 0.60 0.78 0.60 0.76 0.56 0.60 0.45 0.50 0.27 0.39 0.22
精度 0.22 0.26 0.42 0.31 −0.01 −0.24 0.51 0.53 0.44 0.41 0.51 0.29 0.24 0.20 0.07 −0.02 −0.14 −0.26 0.19 0.12
回忆 0.28 0.41 0.22 0.43 0.21 0.36 0.51 0.72 0.60 0.74 0.49 0.69 0.51 0.69 0.20 0.35 0.27 0.35 0.17 0.17
F测量 0.29 0.25 0.44 0.31 0.10 −0.03 0.69 0.52 0.65 0.70 0.67 0.42 0.45 0.31 0.22 0.06 0.35 0.19 0.18 0.05

除了上面的实验中,我们使用指标比较测试算法的性能考虑所有标准用于实验。表11展示了模块化质量TDHC比其他测试算法在大多数情况下与一个可接受的区别。这些数字在表11显示算法的优越性。邻近的生产数据表明该算法,在这种情况下,表现比其他大多数实验和标准。


浏览器 Dom 可访问的 扩展 Gfx Ipc Intl Mini-Tunis JUnit 4 servlet api 简单的模拟 计算器

Bunch-GA 0.0334 0 0 0 0 0.2521 0 0 0.438 0 0 0
ECA 0 0 0 0 0 0 0 0 0 0 0.723 0.01
MCA 0.8641 0 0.1953 0 0.294 0 0 0.03 0 0.0113 0 0.01
DAGC 0.0481 0 0 0 0 0 0 0 0 0 0 0
Bunch-SAHC 0 0 0 0 0 0 0 0 0 0 0 0
SGA 0 0 0 0 0 0 0 0 0 0 0 0
GA-SMCP 0 0 0 0 0 0 0 0 0 0 0 0
爆炸品处理 0.0334 0 0 0.331 0 0 0 0 0.50 0 0 0.1
交直流 0 0.826 0 0.661 0 0.010 1 0.327 0 0.190 0 0
SNDGA 0 0.731 0.15 0 0.498 0.81 0 0.041 0.552 0 0 0.127
TDHC 0.5210 0.125 1 0.431 0.391 0.81 0 0.985 0 0.691 0.821 0.802

RQ2回答研究问题,遗传算法是一种随机优化器,每次运行的成果可能不同。通过几个独立的算法运行结果预计将接近对方。因此,回答RQ2,该算法执行30倍为每种情况和分析结果的稳定性t以及统计技术。应用t以及,结果分为两组相同的大小,G1和G2,然后从中提取一些描述性和推论统计。根据(70年),拥有30行数据是足够假设分布是正常的。这是一个关键的条件下使用t以及分析。但我们也利用魏克森讯号等级测试(71年)作为一种非参数统计假设检验检查结果的稳定性没有考虑在正态分布。

结果在表表示12。一分之三列显示的平均值,标准差,以及两组均值之间的标准误差,分别为描述性统计。这两个表的最后一列显示推论统计的输出。列文的测试是评估差异的平等的推论统计为一个变量计算两组。如果 值(sig,表中的列)大于一些显著性水平在我们的测试(0.05),平等的方差的零假设不能被拒绝。这也适用于魏克森讯号等级测试。两列的表12指的是独立的两个示例的结果t以及以同样的样本大小和等于方差(根据列文的测试结果)在两个随机分离组TDHC结果,和最后两行魏克森讯号等级测试的结果如果数据不是正态分布。所有的 值大于0.05,这表明我们不能拒绝零假设的意思。因此,不同测试的结果收敛于一个可接受的范围内。


案例研究 描述性统计 推论统计
的意思是 标准偏差 均值之间的标准误差 列文的测试 t以及 魏克森讯号等级测试
G1 G2 G1 G2 G1 G2 F 团体。 T 团体。 Z 团体。

火狐浏览器 1.4714 1.5572 0.337 0.246 0.1472 0.1003 1.5044 0.2550 0.4702 0.651 −0.73 0.465
Firefox-dom 0.573 0.614 0.247 0.306 0.1175 0.1370 0.035 0.8571 0.281 0.8135 −1.753 0.08
Firefox-accessible 0.5228 0.5942 0.1275 0.1285 0.5702 0.0574 0.013 0.9670 0.882 0.4036 −1.483 0.138
firefox扩展 0.553 0.636 0.212 0.2391 0.0.096 0.103 0.268 0.6109 0.527 0.530 −0.674 0.5
Firefox-gfx 0.3344 0.2688 0.1468 0.1254 0.06456 0.05611 0.054 0.823 0.760 0.469 −1.461 0.144
Firefox-ipc 1.306 1.462 0.4081 0.436 0.179 0.195 0.348 0.572 0.521 0.5617 −0.135 0.893
Firefox-intl 0.347 0.319 0.364 0.1272 0.1628 0.0422 3.847 0.085 0.465 0.654 −1.084 0.279
Mini-Tunis 0.9726 1.0157 0.14256 0.14043 0.06376 0.06280 0.0181 0.014 0.674 0.643 −0.135 0.893
JUnit 4 0.7950 0.7923 0.00759 0.01831 0.00339 0.00819 0.4701 0.2481 0.496 0.770 −1.069 0.285
servlet api 2.5234 2.5134 0.05345 0.5871 0.02390 0.02626 1.007 0.3277 0.690 0.785 −0.73 0.465
简单的模拟 1.9572 2.0360 0.29716 0.24379 0.13289 0.10903 0.745 0.127 0.953 0.659 −0.405 0.686
计算器 2.3094 2.3210 0.16658 0.29373 0.07449 0.13136 0.814 0.378 0.182 0.941 −0.405 0.686


代码 的名字 模块 代码 的名字 模块

20. 主要 5 7 文件 6
19 用户 5 9 文件表 6
16 状态 5 4 目录 6
2 控制 5 1 电脑 3
6 家庭 5 14 内存 3
8 FileIO 4 17 系统 1
11 索引节点 4 15 恐慌 1
12 INodeGlobals 4 5 磁盘 2
13 INodeTable 4 18 Tty 2
10 FreeINode 4 3 设备 2

回答的研究问题RQ3,输出的TDHC Mini-Tunis调查。Mini-Tunis (mtunis)是一种学术操作系统与图20工件编号从1到2012。每个工件是一个文件,所有的工件相同数量的括号在同一个模块(5]。根据图,构件数量15和17只被称为预处理的其他构件,可以丢弃。图13显示了18岁的树算法产生的剩余工件,和图14在平面视图代表其相应的层次模块化。括号中为每个工件之间的数字模块数量的模块化专家。显示在这个图,提出了一种新的安排模块的构件模块化数字3和5的专家,但他们在上层。工件数量15和17与这些模块的几个关系。所以他们被确定为一个新模块的工件工具库。这两个构件是在模块化专家在一个单独的模块。

这种方法的最重要的优势是,它可以执行指定封装水平很好,例如,模块,包,由设计师和组件。

6。威胁的有效性

在本节中,澄清TDHC的有效性,算法的限制,这些限制会影响结果进行了讨论。有几个因素可能偏见的有效性研究。这些通常分为两类:内部和外部有效性。外部效度的结果推广到其他的能力比使用案例研究或漠不关心的设置:(1)算法的输入是一个ADG提取源代码,和内聚和耦合被认为是作为重构的一个指标。烛光等人在1]讨论了内聚和耦合不足以remodularization源代码,和更多的指标可能是必要的。然而,他们在工作中没有讨论其他指标可以提高模块化的质量。(2)在源代码remodularization搜索技术,推广技术,任何软件结果的有效性是一个重要的威胁。摘要,Mozilla Firefox作为一个大型软件系统选择与五个中型其他开源系统。重要的是要注意,只有一些软件系统超过Mozilla Firefox工件(文件)在一个文件夹。

内部效度关心的是实验治疗影响算法的结果,导致糟糕的结果:(1)本文精确,记得,F-measure, MoJoFM指标用于比较研究结果与当前模块化算法。这些指标并不一定符合开发人员专家的意见。同时,这些指标并不评估树的结构,并没有人考虑边缘构件之间在计算相似度。(2)TDHC的预处理步骤,一些工件可能被选中设置除了输入树的生成步骤。最后,重要的是要建议一个适当的位置在模块或聚合作为一个新的模块。(3)相关的交叉和变异算子中使用遗传算法实现从几个实验Mini-Tunis, JUnit和servlet api软件系统,并应用于其他案例研究。然而,这些数字可能不适合其他软件系统。(4)在该算法中,标签的内部节点不重要和Prufer序列生成相同的模块化为不同的代码。例如, 都表示相同的模块化。相反,社区的概念在这个编码是不透明的,和小数量的变化位置做一个伟大的改变输出树的结构。

7所示。结论和未来的工作

在软件维护和演化,软件的结构偏离原来的结构。因此,代码重构软件维护过程中是一个重要的角色。在本文中,一种新的聚类算法基础上提出了凝聚力和工件之间的耦合。在这种方法中,自上而下分层的方法被用于metaheuristic算法结合遗传算法和爬山。在该算法中,一个合适的点开始模块化的构件为开发人员建议。算法的输入是ADG,它独立于编程语言的源代码。然而,它给人好感的操作可能取决于源代码的编程语言或输入工件的类型(类、文件、函数或底层模块)。因为该重构方法是自动的,它应该作为助理给开发人员。设计决策往往是更为复杂和微妙的不仅仅是试图最大化凝聚力和最小化耦合模块化过程中。结果,推导分析了模块化的软件开发人员可以接受或者改变它的提议remodularization把工件从一个模块(包)到另一个。 The following is suggested for future works:(1)越来越多的工件质量的影响提出的最优解的算法。这是因为指数增长的通过增加输入搜索空间的大小。所以重要的是要提高算法的因素。(2)根据搜索空间的大小在软件源代码,可以提供一种新的预处理方法来减少搜索空间。例如,在软件源代码的重构中,有一个模块化作为当前开发人员建议,和工件在一个模块通常该模块上相互紧密接触,只有些是在与其他模块的关系。因此,他们可以忽略在计算模块之间的关系。(3)许多研究使用结构化或nonstructured功能重构的源代码,可以使用自顶向下的搜索算法。(4)其他启发式或metaheuristic代替GA算法可以使用。

数据可用性

使用的数据来支持本研究的发现是可用的https://github.com/SoftwareMaintenanceLab

的利益冲突

作者宣称没有利益冲突。

引用

  1. 烛光,g . Bavota b Russo, r . Oliveto“使用软件remodularization内聚和耦合,”ACM交易软件工程和方法论,25卷,不。3 p。2016。视图:出版商的网站|谷歌学术搜索
  2. e . v . de,保罗Sobrinho A .德卢西亚和m . de Almeida玛雅,“一个系统的文献回顾在坏smells-5 w:,,,,,”IEEE软件工程,2卷,2018年。视图:谷歌学术搜索
  3. m·福勒k·贝克,j .黑雁w . Opdyke d·罗伯茨,《重构:改善现有程序的设计,”1999年。视图:谷歌学术搜索
  4. a . Isazadeh h . Izadkhah, i Elgedawy源代码模块化:理论和技术施普林格,柏林,德国,2017年。
  5. s·m·布莱恩,启发式搜索的方法来解决聚类问题的软件德雷塞尔大学,纽约,纽约,美国,2002年。
  6. r·s·普雷斯曼软件工程:实践者的方法,帕尔格雷夫麦克米伦,柏林,德国,2005年。
  7. b·s·米切尔和s . Mancoridis”自动模块化软件系统的使用一些工具,”IEEE软件工程,32卷,不。3、193 - 208年,2006页。视图:出版商的网站|谷歌学术搜索
  8. h·n·s .拉里说道Izadkhah, s . Lotfi“多目标搜索软件模块化:结构性和非结构性特征,“软计算,23卷,不。21日,第11165 - 11141页,2019年。视图:谷歌学术搜索
  9. t . Lutellier d . Chollak j·加西亚et al .,“比较软件架构恢复技术使用精确的依赖,”学报2015年IEEE / ACM第37 IEEE软件工程国际会议IEEE,页69 - 78年,柏林,德国,2015年。视图:谷歌学术搜索
  10. t . Lutellier d . Chollak j·加西亚et al .,“测量代码依赖于软件架构复苏技术的影响,“IEEE软件工程,44卷,不。2、159 - 181年,2017页。视图:谷歌学术搜索
  11. j·加西亚,i Ivkovic和n . Medvidovic“软件架构恢复技术的比较分析,”学报2013年28日IEEE / ACM自动化软件工程国际会议(ASE)IEEE,页486 - 496年,纽约,纽约,美国,2013年。视图:谷歌学术搜索
  12. k . Praditwong m·哈曼和x姚明,“软件模块集群作为多目标搜索问题,”IEEE软件工程,37卷,不。2、264 - 282年,2011页。视图:出版商的网站|谷歌学术搜索
  13. k Kohmoto,片山k和h . Narihisa”性能的遗传算法的图像分割问题,“数学和计算机模拟,38卷,不。11 - 13,1325 - 1332年,2003页。视图:出版商的网站|谷歌学术搜索
  14. m . Kargar a Isazadeh, h . Izadkhah“Multi-programming语言软件系统模块化,”计算机与电气工程,第80卷,第106500页,2019年。视图:出版商的网站|谷歌学术搜索
  15. Parsa s和o . Bushehrian”,一个新的编码方案和框架探讨遗传聚类算法,”信息技术的研究和实践》杂志上,37卷,不。1,p。127年,2005。视图:谷歌学术搜索
  16. h . Izadkhah i Elgedawy, a . Isazadeh”E-cdgm:进化call-dependency图形软件系统的模块化方法,”控制论和信息技术,16卷,不。3、70 - 90年,2016页。视图:出版商的网站|谷歌学术搜索
  17. t .犯罪和t . Tourwe软件重构的调查。”IEEE软件工程,30卷,不。2、126 - 139年,2004页。视图:出版商的网站|谷歌学术搜索
  18. 丹尼尔·s·杜卡斯和d“软件架构重建:面向流程的分类,IEEE软件工程,35卷,不。4、573 - 591年,2009页。视图:出版商的网站|谷歌学术搜索
  19. f . Palomba a .德卢西亚g . Bavota和r . Oliveto”反模式检测方法:方法,挑战,和开放的问题,”电脑的发展爱思唯尔,页201 - 238年,柏林,德国,2014年。视图:谷歌学术搜索
  20. j·艾尔宽干谷和a . Abdin”实证评价面向对象的代码重构的影响质量属性:一个系统的文献回顾,“IEEE软件工程,44卷,不。1,44 - 69,2018页。视图:出版商的网站|谷歌学术搜索
  21. b·s·米切尔和s . Mancoridis”评价的基于搜索的软件模块化算法,”软计算,12卷,不。1,第93 - 77页,2008。视图:谷歌学术搜索
  22. m . Tajgardan h . Izadkhah, s . Lotfi”软件系统集群使用分布估计方法,”应用计算机科学杂志的方法,8卷,不。2、99 - 113年,2016页。视图:出版商的网站|谷歌学术搜索
  23. Amarjeet和j·k·Chhabra,”许多客观人工蜂群算法对大规模软件模块聚类问题,“软计算,22卷,不。19日,6341 - 6361年,2018页。视图:出版商的网站|谷歌学术搜索
  24. 生和j·k·Chhabra,“粒子群软件模块聚类问题,文中针对启发式”阿拉伯科学与工程》杂志上,43卷,不。12日,第7094 - 7083页,2018年。视图:出版商的网站|谷歌学术搜索
  25. m·哈曼和l . Tratt“帕累托最优搜索为基础重构在设计层面,”学报》第九届年会在遗传与进化计算ACM,页1106 - 1113年,伦敦,英国,2007年。视图:谷歌学术搜索
  26. l . c . Briand j·w·戴利,j·k·香肠,”一个统一框架耦合测量在面向对象的系统中,”IEEE软件工程,25卷,不。1,第121 - 91页,1999。视图:出版商的网站|谷歌学术搜索
  27. o ., j·斯坦默尔粗毛呢,d . Burkhart”搜索确定重构对于提高面向对象的类结构系统,”学报》第八届年会在遗传与进化计算ACM,页1909 - 1916年,伦敦,英国,2006年。视图:谷歌学术搜索
  28. s . Kebir即承担,d . Meslati“遗传算法方法对基于组件的软件自动重构的,”信息与软件技术卷。88年,17-36,2017页。视图:出版商的网站|谷歌学术搜索
  29. a·c·库玛丽k斯,m·古普塔”软件模块集群使用hyper-heuristic基于多目标遗传算法,”学报》2013年第3 IEEE国际预先计算会议(IACC)的IEEE,页813 - 818年,纽约,纽约,美国,2013年。视图:谷歌学术搜索
  30. j·黄和j·刘,“相似性模块化质量测量软件模块聚类问题,“信息科学卷,342年,第110 - 96页,2016年。视图:出版商的网站|谷歌学术搜索
  31. g . Bavota德卢西亚,a·马库斯和r . Oliveto”使用结构和语义的措施来提高软件模块化,”经验软件工程,18卷,不。5,901 - 932年,2013页。视图:出版商的网站|谷歌学术搜索
  32. g . Bavota m .聚集,r . Oliveto d . Poshyvanyk a和d。露西娅,“通过自动化提高软件模块化的分析潜在的主题和依赖关系,“ACM交易软件工程和方法论,23卷,不。1,p。2014。视图:出版商的网站|谷歌学术搜索
  33. g . Bavota德卢西亚,a·马库斯和r . Oliveto”自动化提取类重构:一种改进方法及其评价,“经验软件工程,19卷,不。6,1617 - 1664年,2014页。视图:出版商的网站|谷歌学术搜索
  34. g . Gui和p·d·斯科特,”耦合和凝聚力的评价办法,组件的可重用性,”《2006年国际研讨会上挖掘软件存储库,页21页,ACM,柏林,德国,2006年。视图:谷歌学术搜索
  35. g . Bavota a德卢西亚,r . Oliveto”识别提取类重构的机会使用结构和语义衔接措施,”系统和软件杂志》上,卷84,不。3、397 - 414年,2011页。视图:出版商的网站|谷歌学术搜索
  36. d . Poshyvanyk a·马库斯·r·费伦茨,t . Gyimothy”使用基于信息检索的耦合影响分析办法,”经验软件工程,14卷,不。1,5-32,2009页。视图:谷歌学术搜索
  37. g . Bavota r . Oliveto m .聚集,d . Poshyvanyk和a·德卢西亚”Methodbook:推荐移动通过关系话题模型重构方法,”IEEE软件工程,40卷,不。7,671 - 694年,2014页。视图:出版商的网站|谷歌学术搜索
  38. j . i Maletic和a·马库斯”支持程序使用语义和结构信息,理解”软件工程学报》第23届国际会议上,页103 - 112,IEEE计算机协会,柏林,德国,2001年。视图:谷歌学术搜索
  39. f . Palomba A . Panichella德卢西亚,r . Oliveto和A·米纳“textual-based技术嗅觉检测”学报2016年IEEE 24日国际会议程序理解(ICPC),页1 - 10,IEEE,柏林,德国,2016年。视图:谷歌学术搜索
  40. 穆罕默迪和h . Izadkhah”软件聚类新算法考虑到知识在源代码中构件之间的依赖关系,“信息与软件技术卷,105年,第256 - 252页,2019年。视图:出版商的网站|谷歌学术搜索
  41. r . Mahouachi“搜索成本效益的软件remodularization”,计算机科学与技术杂志》上,33卷,不。6,1320 - 1336年,2018页。视图:出版商的网站|谷歌学术搜索
  42. k . Deb, A .普拉塔普,美国阿加瓦尔和t . Meyarivan”一个快速和精英多目标遗传算法:nsga-ii,”IEEE进化计算》第六卷,没有。2、182 - 197年,2002页。视图:出版商的网站|谷歌学术搜索
  43. a .苧m . Kessentini m . O Cinneide h . Sahraoui k . Deb和k .井上”:多目标重构的建议方法引入设计模式和修复代码味道,“软件学报:进化和过程卷,29号5 p . e1843 2017。视图:出版商的网站|谷歌学术搜索
  44. j·艾尔宽干谷”,预测方法在面向对象的代码重构的机会,”信息与软件技术卷,92年,第120 - 105页,2017年。视图:出版商的网站|谷歌学术搜索
  45. l .μv Sugumaran f·王,“软件架构re-modularization混合遗传算法”,信息系统领域卷,92年1至29,2019页。视图:谷歌学术搜索
  46. m . Kargar a Isazadeh, h . Izadkhah”提高异构multi-programming软件系统的模块化质量统一的结构和语义概念,“《华尔街日报》的超级计算,卷76,不。1,第121 - 87页,2020。视图:出版商的网站|谷歌学术搜索
  47. k . Mahdavi与多个集群遗传算法软件模块化爬山的方法布鲁内尔大学,柏林,德国,2005年。
  48. m . c . Moncores a·c·f·Alvim和m . o . Barros”大型社区搜索应用软件模块聚类问题,“电脑与行动研究卷,91年,第111 - 92页,2018年。视图:出版商的网站|谷歌学术搜索
  49. m . Kargar a Isazadeh h . Izadkhah,“基于语义聚类软件使用希尔攀登,”《2017年计算机科学和软件工程国际研讨会会议(CSSE)页,则高达55 - IEEE,伦敦,英国,2017年。视图:谷歌学术搜索
  50. 刘黄j . j ., x姚明,“多智能进化算法软件模块聚类问题,“软计算,21卷,不。12日,第3428 - 3415页,2017年。视图:出版商的网站|谷歌学术搜索
  51. j·k·Chhabra,“和谐搜索remodularization为基础的面向对象软件系统”计算机语言、系统和结构47卷,第169 - 153页,2017年。视图:谷歌学术搜索
  52. a·c·库玛丽和k·斯Hyper-heuristic方法对于多目标软件模块集群,”系统和软件杂志》上卷,117年,第401 - 384页,2016年。视图:出版商的网站|谷歌学术搜索
  53. 生和j·k·Chhabra,“一个有效的候选解决方案方案基于搜索多目标软件remodularization”《人机界面和管理国际会议的信息施普林格,页296 - 307年,伦敦,英国,2016年。视图:谷歌学术搜索
  54. j .,取代美国Yoo Y.-S。搜索引擎优化,D.-H。英国宇航系统公司”,基于搜索的方法基于多个软件模块聚类关系因素,”软件工程和知识工程的国际期刊,27卷,不。7,1033 - 1062年,2017页。视图:出版商的网站|谷歌学术搜索
  55. 拉米雷斯,j·r·罗梅罗和s·文图拉,“交互式多目标进化优化软件架构,”信息科学卷,463 - 464,92 - 109年,2018页。视图:出版商的网站|谷歌学术搜索
  56. m·阿克巴里和h . Izadkhah混合遗传算法和磷虾群软件聚类问题,”学报》2019年第5基于知识工程和创新(KBEI)IEEE,页565 - 570年,伦敦,英国,2019年。视图:谷歌学术搜索
  57. j·k·Chhabra,“许多客观人工蜂群算法对大规模软件模块聚类问题,“软计算,22卷,不。19日,6341 - 6361年,2018页。视图:谷歌学术搜索
  58. h . Izadkhah和m . Tajgardan”信息理论为遗传软件聚类目标函数,”多学科研究所数字出版程序,46卷,不。1,p。18日,2019。视图:谷歌学术搜索
  59. o . Maqbool和h . Babri分层集群软件架构的复苏,”IEEE软件工程,33卷,不。11,759年,页2007。视图:出版商的网站|谷歌学术搜索
  60. a·库恩,s·杜卡斯和t . Girba”在源代码语义聚类:确定主题,”信息与软件技术卷,49号3、230 - 243年,2007页。视图:出版商的网站|谷歌学术搜索
  61. p . Andritsos诉Tzerpos,“软件集群信息理论,”IEEE软件工程没有,卷。31日。2、150 - 165年,2005页。视图:出版商的网站|谷歌学术搜索
  62. a . Rathee和j·k·Chhabra,“集群软件remodularization通过使用结构,概念和演化特征,“通用计算机科学杂志》上,24卷,不。12日,第1757 - 1731页,2018年。视图:谷歌学术搜索
  63. a . Shokoufandeh s Mancoridis,和m .‧梅科恪列“谱方法应用到软件集群”第九次工作会议在逆向工程学报》上,页3 - 10,柏林,德国,2002年。视图:谷歌学术搜索
  64. 诉Tzerpos和r·c·霍尔特”交直流:comprehension-driven聚类的算法,”诉讼程序的逆向工程第七次工作会议IEEE,页258 - 267年,柏林,德国,2000年。视图:谷歌学术搜索
  65. j . Gottlieb b . a . Julstrom g·r·Raidl和f . Rothlauf”Prufer数字:一个贫穷的生成树进化搜索”第三届研讨会论文集遗传和进化计算摩根,页343 - 350,考夫曼出版商Inc .,柏林,德国,2001年。视图:谷歌学术搜索
  66. i奥利弗·d·史密斯,j . r .荷兰,”研究排列交叉算子的旅行推销员问题,”学报第二国际会议对遗传算法及其应用美国新泽西、l . Erlhaum Associates山谷,1987。视图:谷歌学术搜索
  67. a . e . j . Wu哈桑,r·c·霍尔特”比较聚类算法在软件演化的背景下,“21 IEEE国际会议的程序软件维护(ICSM ' 05),页525 - 535,IEEE、山谷,新泽西,美国,2005年。视图:谷歌学术搜索
  68. z温家宝和诉Tzerpos,“软件聚类算法的有效性衡量,”学报》第12届IEEE国际研讨会程序理解IEEE,页194 - 203年,新泽西,新泽西,美国,2004年。视图:谷歌学术搜索
  69. Z.-P。田,H.-Y。张,J.-Q j . Wang。王,X.-H。陈,“多准则决策方法与基于叉间隔neutrosophic集,“国际系统科学杂志》上卷,47号15日,第3608 - 3598页,2016年。视图:出版商的网站|谷歌学术搜索
  70. j·科恩,“我学会了(到目前为止)”《美国心理协会第98届年度会议在上述会议上提出的美国,美国心理协会,波士顿,MA, 1990。视图:谷歌学术搜索
  71. f . Wilcoxon s Katti, r·a·威尔科克斯”关键值和概率水平Wilcoxon秩和检验和魏克森讯号等级测试,”在数理统计选择的表1卷,第259 - 171页,1970年。视图:谷歌学术搜索

版权©2020 Masoud Aghdasifam et al。这是一个开放的分布式下文章知识共享归属许可,它允许无限制的使用、分配和复制在任何媒介,提供最初的工作是正确引用。


更多相关文章

PDF 下载引用 引用
下载其他格式更多的
订单打印副本订单
的观点606年
下载415年
引用

相关文章

文章奖:2020年杰出的研究贡献,选择由我们的首席编辑。获奖的文章阅读