Genetic algorithm based restructuring of object-oriented designs using metrics

Byungjeong Lee, Chisu Wu

Research output: Contribution to journalArticlepeer-review


Software with design flaws increases maintenance costs, decreases component reuse, and reduces software life. Even well-designed software tends to deteriorate with time as it undergoes maintenance. Work on restructuring object-oriented designs involves estimating the quality of the designs using metrics, and automating transformations that preserve the behavior of the designs. However, these factors have been treated almost independently of each other. A long-term goal is to define transformations preserving the behavior of object-oriented designs, and automate the transformations using metrics. In this paper, we describe a genetic algorithm based restructuring approach using metrics to automatically modify object-oriented designs. Cohesion and coupling metrics based on abstract models are defined to quantify designs and provide criteria for comparing alternative designs. The abstract models include a call-use graph and a class-association graph that represent methods, attributes, classes, and their relationships. The metrics include cohesion, inheritance coupling, and interaction coupling based on the behavioral similarity between methods extracted from the models. We define restructuring operations, and show that the operations preserve the behavior of object-oriented designs. We also devise a fitness function using cohesion and coupling metrics, and automatically restructure object-oriented designs by applying a genetic algorithm using the fitness function.

Original languageEnglish
Pages (from-to)1074-1085
Number of pages12
JournalIEICE Transactions on Information and Systems
Issue number7
StatePublished - Jul 2002


  • Genetic algorithm
  • Metrics
  • Object-oriented design
  • Software restructuring


Dive into the research topics of 'Genetic algorithm based restructuring of object-oriented designs using metrics'. Together they form a unique fingerprint.

Cite this