Identifying key classes in object-oriented software using generalized k-core decomposition

Identifying key classes in object-oriented software using generalized k-core decomposition
复制标题

使用广义 k 核分解识别面向对象软件中的关键类

DOI:
10.1016/j.future.2017.10.006
复制
发表时间:
2018-04-01
影响因子:
7.5
通讯作者:
Zhang, Kejun
Zhang, Kejun
中科院分区:
计算机科学2区
文献类型:
--
作者:
Pan, Weifeng;Song, Beibei;Zhang, Kejun

文献摘要

被引文献

相似文献

识别关键类可以帮助开发人员熟悉以前未知的软件系统。复杂网络研究为识别关键类提供了新的机会,并提出了许多方法。然而,现有的方法所依赖的软件网络是无权无向的,这不符合软件系统的实际。因此,如何利用更精确的软件网络模型和合适的复杂网络理论来识别关键类仍然是一个从未被报道过的问题。本文的目的是提供一个新的开发人员作为起点的程序理解过程中的类的排名列表。我们的方法是基于一个更精确的软件网络和一个广义版本的k-核心分解在复杂网络的研究。首先,我们使用一个加权的有向软件网络来表示类层次上的软件拓扑结构,它同时考虑了耦合方向和耦合强度。然后,我们提出了一种广义k-核分解方法,并使用它来计算每个类的广义核度。最后,我们排序类相对于他们的广义corenesses在降序。排名靠前的班级作为关键班级候选人。在四个开源软件系统上进行了实验。实证结果表明,我们的方法是能够识别大多数真正的关键类,与召回大于64%的主题系统。与其他九个静态分析为基础的方法进行了比较研究。结果表明,我们的方法表现最好的整套主题系统根据平均排名的弗里德曼测试。评估表明,我们的方法提高了现有的方法识别关键类的有效性。我们的方法推荐的关键类候选者可以是程序理解过程的良好起点。我们的方法是一个有价值的技术,开发人员的目标是获得一个以前未知的软件系统的透彻理解。(C)2017爱思唯尔B. V.保留所有权利。
Identifying key classes can help developers familiarize with a previously unknown software system. Complex network research opens new opportunities for identifying key classes, and many approaches have been proposed. However, the software network that existing approaches rely on is un-weighted and un-directed, which does not conform to the reality of a software system. Thus, how to identify key classes by using more accurate software network models and appropriate complex network theories is still a problem that has never been reported. The objective of this paper is to provide a ranked list of classes for new developers as starting points for the program comprehension process. Our approach is based on a more accurate software network and a generalized version of k-core decomposition in complex network research. First, we use a weighted directed software network to represent the topological structure of software at the class level, which takes into consideration both the coupling direction and coupling strength. Then, we propose a generalized k-core decomposition method and use it to calculate the generalized coreness of each class. Finally, we sort classes with respect to their generalized corenesses in a descending order. The top-ranked classes serve as the key class candidates. Experiments have been performed on four open-source software systems. Empirical results have shown that our approach is able to identify a majority of true key classes, with a recall larger than 64% on the subject systems. Comparison studies with other nine static analysis based approaches have also been performed. Results show that our approach performs best in the whole set of subject systems according to the average ranking of the Friedman test. The evaluation indicates that our approach improves the effectiveness of existing approaches on identification of key classes. The key class candidates recommended by our approach can be excellent starting points for program comprehension process. Our approach is a valuable technique for developers who are aiming to gain a thorough understanding of a previously unknown software system. (C) 2017 Elsevier B.V. All rights reserved.