Many-Objective Software Remodularization using NSGA-III
This addresses the challenge of software maintainability for developers and engineers, but it is incremental as it extends existing remodularization methods by incorporating multiple objectives.
The paper tackles the problem of automatically remodularizing software systems to improve maintainability by proposing a many-objective search-based approach using NSGA-III, which optimizes package structure, minimizes changes, preserves semantics, and reuses change history, and evaluates it on four open-source systems and one industrial project with quantitative and qualitative studies.
Software systems nowadays are complex and difficult to maintain due to continuous changes and bad design choices. To handle the complexity of systems, software products are, in general, decomposed in terms of packages/modules containing classes that are dependent. However, it is challenging to automatically remodularize systems to improve their maintainability. The majority of existing remodularization work mainly satisfy one objective which is improving the structure of packages by optimizing coupling and cohesion. In addition, most of existing studies are limited to only few operation types such as move class and split packages. Many other objectives, such as the design semantics, reducing the number of changes and maximizing the consistency with development change history, are important to improve the quality of the software by remodularizing it. In this paper, we propose a novel many-objective search-based approach using NSGA-III. The process aims at finding the optimal remodularization solutions that improve the structure of packages, minimize the number of changes, preserve semantics coherence, and re-use the history of changes. We evaluate the efficiency of our approach using four different open-source systems and one automotive industry project, provided by our industrial partner, through a quantitative and qualitative study conducted with software engineers.