Complex network theory has been successfully introduced into the field of software engineering. Many works in the literature have built complex networks in software, usually called software networks, to represent software structure. Such software networks and their related graph algorithms have been proved effective in predicting software bugs. However, the software networks used were unweighted and undirected, neglecting the strength and direction of the couplings. Worse still, they ignored many important types of couplings between classes, such as local variable, instantiates, and access. All of these greatly affect the accuracy of the software network in representing the topological detail of software projects and ultimately affect the metrics derived from it. In this work, an improved effort-aware bug prediction approach named CoreBug is proposed. First, CoreBug uses a weighted directed class dependency network (WDCDN) to precisely describe classes and their couplings, including nine coupling types and their different coupling strengths and directions. Second, a generalized k-core decomposition is introduced to compute the coreness of each class in the WDCDN. Third, CoreBug combines the coreness of each class with its relative risk, as returned by the logistic regression, to quantify the risk of a given class being buggy. Empirical results on eighteen Java projects show that CoreBug is superior to the state-of-the-art approaches according to the average ranking of the Friedman test.
Software comprehension helps us to maintain software better. The developers often use documentation and mutual communication to understand software. However, the incompletion of documentation usually causes some problems such that we cannot acquire the detailed information of software. So researchers are now using key classes as starting points for software understanding and propose several effective methods for key class identification. Such methods are mostly implemented using supervised and unsupervised learning methods; however, they may be subject to class imbalance, insufficient amount of data, and lack of accuracy. In this paper, we propose a novel approach, called COSPA (identifying key C lasses in O bject-Oriented S oftware using P reference A ggregation), to identify key classes in software. Our approach is inspired by the social choice theory and uses Kemeny-Young method to find a preference that minimizes the total difference between different pairs of sequences returned by three key class identification methods (i.e., a-index, InDeg, and OSE). Further, we rank the classes in descending order according to that preference set, and a small number of top-ranked classes are considered as key candidates. To better evaluate the performance of our approach, we apply it to six Java software systems and compare it with nine state-of-the-art approaches. In the experiments, we use Friedman to evaluate all methods in the whole set of research subjects; results show that, though no single method works always best in all subject systems, our method indeed performs better than others.
Researchers have proposed many approaches to identify key classes in software from the perspective of complex networks, such as CONN-TOTAL-W, , and ElementRank, which can effectively help developers understand software. However, these approaches tend to rely on a single metric when measuring the importance of classes. They do not consider the aggregation of multiple metrics to select the winner classes that rank high in majority metrics. In this work, we propose a key class identification approach using Markov-Chain-based ranking aggregation, namely CRA. First, CRA constructs a weighted directed class coupling network (WDCCNet) to describe the software and further applies existing approaches on WDCCNet to calculate class importance. Second, CRA filters out some metrics according to specific rules and uses the Markov chain to aggregate the remaining metrics. When the state probability distribution reaches a fixed point and does not change anymore, the classes in the software are sorted in a descending order according to the probability distribution, and the top-15% classes are treated as key classes. To evaluate the CRA approach, we compare it with 10 baseline approaches available on 6 pieces of software. Empirical results show that our approach is superior to the baselines according to the average ranking of the Friedman Test.