Many-Objective Software Remodularization using NSGA-III

05/13/2020
by   Mohamed Wiem Mkaouer, et al.
6

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.

READ FULL TEXT

page 26

page 27

page 28

page 29

page 30

page 31

page 34

research
03/25/2022

Using Solver-Aided Languages to Build Package Managers

Open-source software is critical for modern development, but most open-s...
research
01/11/2023

I depended on you and you broke me: An empirical study of manifesting breaking changes in client packages

Complex software systems have a network of dependencies. Developers ofte...
research
11/22/2011

Evolution of a Modular Software Network

"Evolution behaves like a tinkerer" (Francois Jacob, Science, 1977). Sof...
research
04/24/2018

Learning Software Constraints via Installation Attempts

Modern software systems are expected to be secure and contain all the la...
research
09/29/2021

preCICE v2: A Sustainable and User-Friendly Coupling Library

preCICE is a free/open-source coupling library. It enables creating part...
research
03/10/2021

Session-based Social and Dependency-aware Software Recommendation

With the increase of complexity of modern software, social collaborative...
research
05/24/2023

Using the Uniqueness of Global Identifiers to Determine the Provenance of Python Software Source Code

We consider the problem of identifying the provenance of free/open sourc...

Please sign up or login with your details

Forgot password? Click here to reset