Research Area:  Machine Learning
Clustering algorithms, as a modularization technique, are used to modularize a program aiming to understand large software systems as well as software refactoring. These algorithms partition the source code of the software system into smaller and easy-to-manage modules (clusters). The resulting decomposition is called the software system structure (or software architecture). Due to the NP-hardness of the modularization problem, evolutionary clustering approaches such as the genetic algorithm have been used to solve this problem. These methods do not make much use of the information and knowledge available in the artifact dependency graph which is extracted from the source code.
Keywords:  
Clustering algorithms
Clustering approaches
Dependency graph
Modularization technique
Software Systems Modularization
Author(s) Name:  Babak Pourasghar, Habib Izadkhah, Ayaz Isazadeh
Journal name:  Information and Software Technology
Conferrence name:  
Publisher name:  Elsevier
DOI:  10.1016/j.infsof.2020.106469
Volume Information:  Volume 133
Paper Link:   https://www.sciencedirect.com/science/article/abs/pii/S0950584920302147