A Hybrid Genetic Algorithm for Software Architecture Re-Modularization

  • PDF / 2,103,082 Bytes
  • 29 Pages / 595.276 x 790.866 pts Page_size
  • 21 Downloads / 191 Views

DOWNLOAD

REPORT


A Hybrid Genetic Algorithm for Software Architecture Re-Modularization Lifeng Mu 1 & Vijayan Sugumaran 2,3

&

Fangyuan Wang 1

# Springer Science+Business Media, LLC, part of Springer Nature 2019

Abstract Software architectures have become highly heterogeneous and difficult to maintain due to software evolution and continuous change. Therefore, a software system usually must be restructured in terms of modules containing relatively dependent components to address the system complexity. However, it is challenging to re-modularize systems automatically to improve their maintainability. In this paper, we present a new mathematical programming model for the software re-modularization problem. In contrast to previous research, a novel metric based on the principle of complexity balance is introduced to address the issue of over-cohesiveness. In addition, a hybrid genetic algorithm (HGA) is designed to automatically determine high-quality remodularization solutions. In the proposed HGA, a heuristic based on edge contraction and vectorization techniques is designed first to generate feature-rich solutions and subsequently implant these solutions as seeds into the initial population. Finally, a customized genetic algorithm (GA) is employed to improve the solution quality. Two sets of test problems are employed to evaluate the performance of the HGA. The first set includes sixteen real-world instances and the second set contains 900 largescale simulated data. The proposed HGA is compared with two widely adopted algorithms, i.e., the multi-start hill-climbing algorithm (HCA) and the genetic algorithms with group number encoding (GNE). Experimental and statistical results demonstrate that in most cases, the HGA can guarantee better quality solutions than HCA and GNE. Keywords Combinatorial optimization . Software engineering . Genetic algorithms . Heuristics

1 Introduction Almost all software systems are constructed in a modular fashion whether they are process-oriented or object-oriented. The modular structure allows software engineers to organize their software into subsystems, and a well modularized system enables its evolution by supporting the replacement of its components without significantly impacting the complete system. Despite this, years of maintenance and evolution usually cause most software systems to deviate from their original design. A consequence is that some components may not be placed in

* Vijayan Sugumaran [email protected] 1

Department of Information Management, SHU-UTS SILC Business School, Shanghai University, Shanghai, People’s Republic of China

2

Department of Decision and Information Sciences, School of Business Administration, Oakland University, Rochester, MI 48309, USA

3

Center for Data Science and Big Data Analytics, Oakland University, Rochester, MI 48309, USA

suitable modules. In addition, the deteriorating quality of the architecture causes software maintenance to become expensive in terms of time, labor and money (Fleischmann et al. 2016; Westland 2004). To address this issue,