• DocumentCode
    2349104
  • Title

    Tracking Design Smells: Lessons from a Study of God Classes

  • Author

    Vaucher, Stéphane ; Khomh, Foutse ; Moha, Naouel ; Guéhéneuc, Yann-Gaël

  • Author_Institution
    Dept. d´´Inf., Univ. de Montreal, Montreal, QC, Canada
  • fYear
    2009
  • fDate
    13-16 Oct. 2009
  • Firstpage
    145
  • Lastpage
    154
  • Abstract
    "God class" is a term used to describe a certain type of large classes which "know too much or do too much". Often a God class (GC) is created by accident as functionalities are incrementally added to a central class over the course of its evolution. GCs are generally thought to be examples of bad code that should be detected and removed to ensure software quality. However, in some cases, a GC is created by design as the best solution to a particular problem because, for example, the problem is not easily decomposable or strong requirements on efficiency exist. In this paper, we study in two open-source systems the "life cycle" of GCs: how they arise, how prevalent they are, and whether they remain or they are removed as the systems evolve over time, through a number of versions. We show how to detect the degree of "godliness" of classes automatically. Then, we show that by identifying the evolution of "godliness", we can distinguish between those classes that are so by design (good code) from those that occurred by accident (bad code). This methodology can guide software quality teams in their efforts to implement prevention and correction mechanisms.
  • Keywords
    configuration management; software maintenance; software quality; GC; God class; design smell tracking; open-source system; software evolution; software quality; systems version; Accidents; Bayesian methods; Kernel; Open source software; Pattern analysis; Personnel; Reverse engineering; Risk analysis; Software maintenance; Software quality; Design smells; antipatterns; empirical study; software evolution;
  • fLanguage
    English
  • Publisher
    ieee
  • Conference_Titel
    Reverse Engineering, 2009. WCRE '09. 16th Working Conference on
  • Conference_Location
    Lille
  • ISSN
    1095-1350
  • Print_ISBN
    978-0-7695-3867-9
  • Type

    conf

  • DOI
    10.1109/WCRE.2009.23
  • Filename
    5328806