Analyzing the structure of Java software systems by weighted K-core decomposition - Pan, Weifeng; Li, Bing; Liu, Jing; Ma, Yutao; Hu, Bo (Future generation computer systems, 2018)
Statistical properties of un-weighted software networks have been extensively studied. However, software networks in their nature should be weighted. Understanding the properties enclosed in the weighted software networks can lead to better software engineering practices. In this paper, we construct a set of weighted software networks from real-world Java software systems and empirically investigate their topological properties by using weighted k-core decomposition. First, we investigate the static topological properties of the weighted k-core structure, and find that small value of the graph coreness is a property shared by many software systems, the distribution of weighted coreness follows a power law with an exponential cutoff, and weighted coreness and node degree are closely correlated with their spearman correlation coefficients larger than 0.94. Second, we analyze the evolving topological properties of the weighted k-core structure, including the graph coreness, size of the main core, and new members and vanishing members of the main core. Empirical results show that the graph coreness will keep relatively stable unless the system undergoes major changes, size of the main core keeps stable in its evolution, and new members or vanishing members of a main core are from or go to the shells very near the corresponding main cores. Finally, we apply the weighted k-core decomposition method to identify the key classes, and find that, compared with other nine approaches, our approach performs best in the whole set of subject systems according to the average ranking of the Friedman test. It can identify a majority of classes deemed important. This work could help developers to improve software understanding, propose new metrics for software measurement and evaluate the quality of the system in development. •We propose an approach to empirically investigate the static and evolving topological properties enclosed in the weighted software networks by using weighted k-core decomposition.•We propose a weighted software network to represent the topological structure of a software system at the class level, which uses the coupling frequencies to assign weights to the edges.•Our approach is illustrated using a set of 16 open source software systems and several interesting observations are obtained.