摘要:软件网络的统计特性都进行了广泛的研究。然而,在本质上应该是加权软件网络。理解属性包含在加权软件网络可以带来更好的软件工程实践。在本文中,我们从实际的Java构造一组加权软件网络软件系统和实证调查他们的拓扑属性通过使用加权k-core分解。首先,我们调查的静态拓扑属性加权k-core结构,发现小值图的coreness是由许多软件系统,共享一个属性分布的加权coreness遵循幂律指数截止,和加权coreness和节点度与他们密切相关的斯皮尔曼相关系数大于0.94。第二,我们分析了进化的拓扑属性加权k-core结构,包括图coreness大小的主要核心,新成员和消失的主要核心成员。实证结果表明,图coreness将保持相对稳定,除非系统发生重大变化,大小的主要核心保持稳定在其进化,和新成员或消失的一个主要核心成员来自或去壳非常接近相应的主要核心。最后,我们应用加权k-core分解方法来识别关键类,和发现,与其他九个方法相比,我们的方法执行最好的在整个组主题系统的平均排名根据弗里德曼测试。它可以识别大多数类认为重要。这个工作可以帮助开发人员提高软件的理解,提出新的指标对软件度量和评估系统开发的质量。
1.介绍
本文的目的是探讨k-core结构的特征加权软件网络从Java软件系统。首先,我们正式代表Java软件的拓扑结构类的粒度级别使用加权软件网络,考虑类之间的耦合频率为权重。其次,我们引入加权复杂网络的k-core分解方法提出了(以下简称W k -核心),用它来计算k-core加权软件网络的结构。W k -核心将分区加权软件网络分层结构将进一步衡量统计的相关属性参数。我们的方法可能会发现一些特点包含在软件系统的拓扑结构,它可以帮助开发人员提高软件的理解,提出新的指标对软件度量和评估系统发展的质量。
本文的其余部分的结构如下。第二节给出abrief概述相关调查工作的k-core软件网络的结构。在第三节中,我们将详细描述我们的方法,把重点放在加权软件网络的定义和W k -核心。在第四节中,我们使用W k -核心加权软件网络分割成一个分层结构和使用一些统计参数发现一些特点包含在软件系统的拓扑结构。在第5部分中,我们讨论结果的影响在当前软件工程工作。我们在第六节总结本文。
2.相关工作
我们所知,只有几个研究已经进行调查k-core软件网络的结构。他们都是之前2016年出版。
Zhang et al调查了一组un-weighted软件网络的拓扑属性提取类级别的软件系统,并发现一些明显的属性如小软件coreness,更高的连接趋势类,软件coreness和进化稳定。李et al。还雇佣k-core分解方法分析un-weighted软件网络的层次结构在类级别,并发现一些类似性质的张等人报道)。在[15],李等人进一步分析软件网络的关键分数使用k-core分解方法,并发现不同的软件网络的crucialfractions分享相同的通用拓扑属性,如scalefree的行为,小世界和强大的连接。尽管Zhang et al.and李等人进行软件系统的研究不同,他们遵循了类似的想法,得到了类似的结果。
然而,这些方法的一个主要限制条件是,他们使用的软件网络un-weighted,不符合现实的一个软件,因为在本质上应该是加权软件网络。权重描述实体之间的耦合强度。现有方法的另一个限制是,他们分析的软件系统主要是用c++语言编写。他们得到的结论是否可以扩展到软件系统用Java编写的,使用最广泛的编程语言之一。我们所知,很少有人注意k-core结构分析的加权软件网络从Java软件系统。
3.方法
方法如下。首先,我们将parsethe.javafiles Java软件系统源代码结构信息,提出一种加权软件网络正式表示提取的信息。第二,我们将采用W k -核心获取k-core加权软件网络的结构。最后,k-core结构的特点是通过统计参数的相关属性。以下部分将讨论在我们方法的主要步骤。软件定义网络人造复杂系统,现代软件系统通常建立起来的许多类/接口,由不同类型的耦合相互作用相互地。代表软件作为加权软件网络,应该首先提取结构信息在源代码中。所以我们将执行静态分析来提取类/接口和它们之间的耦合。收集结构信息时,我们只分析类/接口代码中实际遇到的,忽视那些只引用。在我们的方法中,我们将介绍一个加权软件网络,WCCN(加权类耦合网络),正式代表提取的结构信息。
4.实证研究
我们设计并进行了一系列的实验来研究现实世界的拓扑结构及其演化软件系统使用加权k-core分解方法。我们擅长达进行了在PC 2.6 GHz的8 GB RAM。在下面几节中,我们详细描述研究的对象(4.1节)和我们的分析结果.4.1(4.2节)。研究对象在当前的工作中,我们选择全部16个非平凡的Java软件系统作为研究的对象为他们的名字和域。在选择具体的软件系统,我们牢记三个要求:
•他们应该开源和公开确保获得的结果可以被复制。
•他们应该连续超过5版本和仍然是活跃的代表技术的新的发展趋势。
•他们来自与不同尺寸允许不同的应用领域,在某种程度上,结论的推广。
我们提供的尺寸特征的概述这些软件系统,以代码(几千行代码),和一些详细的统计特性WCCNs由一些目录的源代码,以N | |(节点数),E | |(边数),(平均网络节点度)、d(直径),C(聚类系数)和l(平均路径长度)。这些参数的定义可以在[24]。应该注意,代码量是实际的代码行,不包括注释行和空行。当计算⟨k⟩d C和l,我们忽略WCCNs孤立节点。我们还提供l兰德,l相应的随机网络,大约可以计算。我们可以发现WCCNs分享一些复杂网络的拓扑特性,也就是说,他们的l l类似兰德相应的随机网络相同的N,k,C和C是远远大于兰德。
5.软件工程
复杂系统与复杂性科学被视为“21世纪的科学”[40]。其基本观点是,拓扑结构决定功能,强调系统作为一个整体的观点。软件网络代表另一个重要类的复杂网络也可以利用复杂网络理论研究。它提供了一个不同的维度对我们理解软件从软件的角度作为一个整体,忽略了微观细节。学习软件从复杂网络的角度研究新兴市场和主要参与[40]四个不同的方面:描述共享软件网络的拓扑特性,建模软件网络的发展,测量软件的网络,和他们的应用程序在软件实践。在当前的工作中,我们主要关注在加权软件网络拓扑属性的调查使用加权k-core decompo-sition在复杂网络理论。我们获得的结果可能有以下理论和实践价值。
一个明显的应用我们的软件工程方法是提高软件的理解。16我们的实证结果进行一组Java软件系统图的显示小价值coreness是由许多软件系统,共享一个属性分布的加权coreness遵循幂律指数截止,加权coreness和节点度与他们密切相关的斯皮尔曼相关系数大于0.94,图coreness将保持相对稳定,除非系统发生重大变化。
6..结论
在这项工作中,我们提出一个方法来揭示属性包含在加权软件网络帮助开发人员提高软件的理解,提出新的软件度量指标,并评估系统开发的质量。分析软件的拓扑特性,我们首先提出一个加权类耦合网络(WCCN)代表一个软件类的粒度级别,考虑耦合频率分配权重的边缘。然后,加权k-core分解方法被介绍给分区WCCN成分层结构。一些统计参数(即coreness及其进化,加权coreness分布、加权coreness和程度之间的相关性,大小的主要核心,和新成员和消失的主要核心成员),用于研究加权k-core已经发现许多拓扑结构和属性。我们也使用加权k-core分解方法来识别关键类和其有效性已被证明。我们的方法演示了使用16开源Java软件系统的集合。