Semantic-based software clustering using hill climbing
Masoud Kargar, Ayaz Isazadeh, Habib Izadkhah · 2017
Clustering techniques are used for extracting software architecture in reverse engineering process. Extracting the Call Dependency Graph (CDG) from the source code is the first step in the process of software clustering. A CDG indicates the method invocations between software's artifacts. This graph is tightly coupled to the used programming language so that the existing toolsets for constructing a CDG works on the particular programming language. Therefore, using existing CDG extraction toolsets for large-scale software systems, e.g., Mozilla Firefox, which written by different programming languages, is impossible. To overcome this problem, in this paper, we propose a new dependency graph, called semantic dependency graph (SDG), which is independent of the programming languages. The combination of lexical analysis and latent semantic analysis (LSA) generates this graph. Two versions of Hill climbing algorithms are used to compare their performance with SDG and CDG. The results show that the SDG can be replaced instead of CDG. The results of various experiments confirm this claim. The SDG can be independent of programming languages, hence, helps to the software engineer to clustering the large-scale software systems to extract software architecture, aiming to understand and maintain the existing software systems.