Tracking Design Smells: Lessons from a Study of God Classes. Vaucher, S., Khomh, F., Moha, N., & Gu�h�neuc, Y. In Antoniol, G. & Zaidman, A., editors, Proceedings of the 16<sup>th</sup> Working Conference on Reverse Engineering (WCRE), pages 145–154, October, 2009. IEEE CS Press. 10 pages.
Tracking Design Smells: Lessons from a Study of God Classes [pdf]Paper  abstract   bibtex   
``God class'' is a term used to describe certain types of large classes which ``know too much or do too much". Often a God class (GC) is created by accident as incremental functionality is added to a central class over the course of several versions. 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, \eg the problem is not easily decomposable or strong requirements on efficiency are imposed. In this paper we study, in two open-source systems, the ``life cycle" of GCs: how they arise, how prevalent are they, and whether they remain or are they removed as the systems evolve over time through a number of versions. We show how to detect the degree of ``godliness" in classes automatically. Then we show that by identifying the evolution of ``godliness" we can distinguish between those that are so by design (good code) from those that occurred by accident (bad code). This methodology will allow software quality teams to implement prevention and correction mechanisms.

Downloads: 0