The evolution and impact of code smells: A case study of two open source systems

Code smells are design flaws in object-oriented designs that may lead to maintainability issues in the further evolution of the software system. This study focuses on the evolution of code smells within a system and their impact on the change behavior (change frequency and size). The study investigates two code smells, God Class and Shotgun Surgery, by analyzing the historical data over several years of development of two large scale open source systems. The detection of code smells in the evolution of those systems was performed by the application of an automated approach using detection strategies. The results show that we can identify different phases in the evolution of code smells during the system development and that code smell infected components exhibit a different change behavior. This information is useful for the identification of risk areas within a software system that need refactoring to assure a future positive evolution.

[1]  Brian Foote,et al.  Designing Reusable Classes , 2001 .

[2]  M. Fowler Improving the Design of Existing Code , 2000 .

[3]  Oscar Nierstrasz,et al.  Object-oriented reengineering patterns , 2004, Proceedings. 26th International Conference on Software Engineering.

[4]  Mika Mäntylä,et al.  A taxonomy and an initial empirical study of bad smells in code , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[5]  Radu Marinescu,et al.  Detecting design flaws via metrics in object-oriented systems , 2001, Proceedings 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems. TOOLS 39.

[6]  James M. Bieman,et al.  Cohesion and reuse in an object-oriented system , 1995, SSR '95.

[7]  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..

[8]  Mika Mäntylä,et al.  Bad smells - humans as code critics , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[9]  Norman Wilde,et al.  Maintaining object-oriented software , 1993, IEEE Software.

[10]  Martin Fowler. Refactoring Improving the Design of Existing Code , 1999 .

[11]  Cláudia Maria Lima Werner,et al.  Object Oriented Design Expertise Reuse: An Approach Based on Heuristics, Design Patterns and Anti-patterns , 2000, ICSR.

[12]  Akif Günes Koru,et al.  Comparing high-change modules and modules with the highest measurement values in two large-scale open-source products , 2005, IEEE Transactions on Software Engineering.

[13]  Raed Shatnawi,et al.  An empirical study of the bad smells and class error probability in the post-release object-oriented system evolution , 2007, J. Syst. Softw..

[14]  Radu Marinescu,et al.  Detection strategies: metrics-based rules for detecting design flaws , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[15]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[16]  Arthur J. Riel,et al.  Object-Oriented Design Heuristics , 1996 .

[17]  Stéphane Ducasse,et al.  Object-Oriented Metrics in Practice , 2005 .

[18]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[19]  Ioannis Stamelos,et al.  A controlled experiment investigation of an object-oriented design heuristic for maintainability , 2004, J. Syst. Softw..

[20]  Michele Lanza,et al.  Object-Oriented Metrics in Practice - Using Software Metrics to Characterize, Evaluate, and Improve the Design of Object-Oriented Systems , 2006 .

[21]  Huang Xin-rong On the Measure of Complexity , 2005 .

[22]  Ioannis Stamelos,et al.  An empirical investigation of an object-oriented design heuristic for maintainability , 2003, J. Syst. Softw..

[23]  F. W. Calliss,et al.  An experiment investigating the effect of information hiding on maintainability , 1993, Proceedings of Phoenix Conference on Computers and Communications.

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