Solving the class responsibility assignment problem in object-oriented analysis with multi-objective genetic algorithms

Michael Bowman, Lionel C. Briand, Yvan Labiche

Research output: Contribution to journalArticlepeer-review

Abstract

In the context of object-oriented analysis and design (OOAD), class responsibility assignment is not an easy skill to acquire. Though there are many methodologies for assigning responsibilities to classes, they all rely on human judgment and decision making. Our objective is to provide decision-making support to reassign methods and attributes to classes in a class diagram. Our solution is based on a multi-objective genetic algorithm (MOGA) and uses class coupling and cohesion measurement for defining fitness functions. Our MOGA takes as input a class diagram to be optimized and suggests possible improvements to it. The choice of a MOGA stems from the fact that there are typically many evaluation criteria that cannot be easily combined into one objective, and several alternative solutions are acceptable for a given OO domain model. Using a carefully selected case study, this paper investigates the application of our proposed MOGA to the class responsibility assignment problem, in the context of object-oriented analysis and domain class models. Our results suggest that the MOGA can help correct suboptimal class responsibility assignment decisions and perform far better than simpler alternative heuristics such as hill climbing and a single-objective GA.

Original languageEnglish
Article number5530324
Pages (from-to)817-837
Number of pages21
JournalIEEE Transactions on Software Engineering
Volume36
Issue number6
DOIs
Publication statusPublished - 2010
Externally publishedYes

Keywords

  • class responsibility assignment
  • genetic algorithm
  • Object-oriented analysis and design
  • UML

Fingerprint

Dive into the research topics of 'Solving the class responsibility assignment problem in object-oriented analysis with multi-objective genetic algorithms'. Together they form a unique fingerprint.

Cite this