Many-Objective Software Remodularization using NSGA-III

by   Mohamed Wiem Mkaouer, et al.

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.


page 26

page 27

page 28

page 29

page 30

page 31

page 34


Using Solver-Aided Languages to Build Package Managers

Open-source software is critical for modern development, but most open-s...

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...

Evolution of a Modular Software Network

"Evolution behaves like a tinkerer" (Francois Jacob, Science, 1977). Sof...

Learning Software Constraints via Installation Attempts

Modern software systems are expected to be secure and contain all the la...

preCICE v2: A Sustainable and User-Friendly Coupling Library

preCICE is a free/open-source coupling library. It enables creating part...

Session-based Social and Dependency-aware Software Recommendation

With the increase of complexity of modern software, social collaborative...

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