IDENTIFYING CORE COMPONENTS IN SOFTWARE SYSTEMS

Abstract

As large software systems are highly complex, they can be difficult for a developer to understand. If a core subset of a software system could be extracted which contains the most important classes and connections of the larger system, studying this core would be useful for efficiently understanding the overall system. In this research we examine research into core/periphery structures in networks, primarily focusing on the use of k-core decomposition. The extracted dependencies of three open source Java software systems provide the inputs, with forty different versions of these systems analyzed in total. We derive inter-class dependencies from these releases and represent them as undirected graphs. We extract the k-core values by recursively pruning the least connected nodes within the networks, leaving an inner core. The resulting coreness values are analyzed against centrality metrics and high-level communities detected by the Louvain method. Both system level and component level evolution of coreness values for these systems are studied. The validity of this approach for identifying software system cores is discussed and analyzed

    Similar works