Investigating the evolution of code smells in object-oriented systems

  • Authors:
  • Alexander Chatzigeorgiou;Anastasios Manakos

  • Affiliations:
  • Department of Applied Informatics, University of Macedonia, Thessaloniki, Greece;Department of Applied Informatics, University of Macedonia, Thessaloniki, Greece

  • Venue:
  • Innovations in Systems and Software Engineering
  • Year:
  • 2014

Quantified Score

Hi-index 0.00

Visualization

Abstract

Software design problems are known and perceived under many different terms, such as code smells, flaws, non-compliance to design principles, violation of heuristics, excessive metric values and anti-patterns, signifying the importance of handling them in the construction and maintenance of software. Once a design problem is identified, it can be removed by applying an appropriate refactoring, improving in most cases several aspects of quality such as maintainability, comprehensibility and reusability. This paper, taking advantage of recent advances and tools in the identification of non-trivial code smells, explores the presence and evolution of such problems by analyzing past versions of code. Several interesting questions can be investigated such as whether the number of problems increases with the passage of software generations, whether problems vanish by time or only by targeted human intervention, whether code smells occur in the course of evolution of a module or exist right from the beginning and whether refactorings targeting at smell removal are frequent. In contrast to previous studies that investigate the application of refactorings in the history of a software project, we attempt to analyze the evolution from the point of view of the problems themselves. To this end, we classify smell evolution patterns distinguishing deliberate maintenance activities from the removal of design problems as a side effect of software evolution. Results are discussed for two open-source systems and four code smells.