Assessing the impact of bad smells using historical information

Our aim is to gain a better understanding of the relationship between bad smells and design principle violations, in order to better identify the root causes of a given set of bad smells and target refactoring efforts more effectively. In particular, knowing which bad smells point to important design problems would help to focus developers' efforts. In this position paper we argue that such knowledge requires the empirical study of the evolution of software systems: on the one hand because design problems and their symptoms take time to develop, on the other hand because we need to relate maintenance activity to bad smells to measure their relative importance. We illustrate how existing studies of the evolution of a particular kind of bad smell, code clones, have led to further insights into the harmfulness of cloning.

[1]  Bashar Nuseibeh,et al.  Evaluating the Harmfulness of Cloning: A Change Based Experiment , 2007, Fourth International Workshop on Mining Software Repositories (MSR'07:ICSE Workshops 2007).

[2]  Yann-Gaël Guéhéneuc,et al.  Correction of High-Level Design Defects with Refactorings , 2006 .

[3]  Thomas J. Mowbray,et al.  AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis , 1998 .

[4]  Jan Venselaar,et al.  DESIGN RULES , 1999 .

[5]  Miryung Kim,et al.  An empirical study of code clone genealogies , 2005, ESEC/FSE-13.

[6]  Yann-Gaël Guéhéneuc,et al.  Automatic Generation of Detection Algorithms for Design Defects , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[7]  Radu Marinescu,et al.  Measurement and Quality in Object-Oriented Design , 2005, ICSM.

[8]  David Lorge Parnas,et al.  Review of David L. Parnas' "Designing Software for Ease of Extension and Contraction" , 2004 .

[9]  Adrian Trifu,et al.  Diagnosing design problems in object oriented systems , 2005, 12th Working Conference on Reverse Engineering (WCRE'05).

[10]  Meir M. Lehman,et al.  Program evolution: processes of software change , 1985 .

[11]  Hausi A. Müller,et al.  Predicting fault-proneness using OO metrics. An industrial case study , 2002, Proceedings of the Sixth European Conference on Software Maintenance and Reengineering.

[12]  Shari Lawrence Pfleeger,et al.  Software Quality: The Elusive Target , 1996, IEEE Softw..

[13]  Stéphane Ducasse,et al.  Using history information to improve design flaws detection , 2004, Eighth European Conference on Software Maintenance and Reengineering, 2004. CSMR 2004. Proceedings..

[14]  Michael W. Godfrey,et al.  "Cloning Considered Harmful" Considered Harmful , 2006, 2006 13th Working Conference on Reverse Engineering.

[15]  Yann-Gaël Guéhéneuc,et al.  Une taxonomie et un métamodèle pour la détection des défauts de conception , 2006, LMO.

[16]  Christopher G. Lasater,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[17]  Richard C. Holt,et al.  Predicting change propagation in software systems , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[18]  Kim B. Clark,et al.  Design Rules: The Power of Modularity Volume 1 , 1999 .

[19]  Harald C. Gall,et al.  CVS release history data for detecting logical couplings , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[20]  David Lorge Parnas,et al.  Software aging , 1994, Proceedings of 16th International Conference on Software Engineering.

[21]  Adrian Trifu,et al.  Automated design flaw correction in object-oriented systems , 2004, Eighth European Conference on Software Maintenance and Reengineering, 2004. CSMR 2004. Proceedings..

[22]  Stéphane Ducasse,et al.  Identifying Entities That Change Together , 2004 .

[23]  Victor R. Basili,et al.  A Validation of Object-Oriented Design Metrics as Quality Indicators , 1996, IEEE Trans. Software Eng..

[24]  Lerina Aversano,et al.  How Clones are Maintained: An Empirical Study , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[25]  Bertrand Meyer,et al.  Applying 'design by contract' , 1992, Computer.

[26]  Cyril S. Ku,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.