Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
Agile Software Development: Principles, Patterns, and Practices
Agile Software Development: Principles, Patterns, and Practices
Software Quality Analysis by Code Clones in Industrial Legacy Software
METRICS '02 Proceedings of the 8th International Symposium on Software Metrics
An empirical investigation of an object-oriented design heuristic for maintainability
Journal of Systems and Software
Java Quality Assurance by Detecting Code Smells
WCRE '02 Proceedings of the Ninth Working Conference on Reverse Engineering (WCRE'02)
A Taxonomy and an Initial Empirical Study of Bad Smells in Code
ICSM '03 Proceedings of the International Conference on Software Maintenance
Refactoring Workbook
Quantifying the Quality of Object-Oriented Design: The Factor-Strategy Model
WCRE '04 Proceedings of the 11th Working Conference on Reverse Engineering
Object-Oriented Metrics in Practice
Object-Oriented Metrics in Practice
An empirical study of code clone genealogies
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Measurement and Quality in Object-Oriented Design
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Automatic Generation of Detection Algorithms for Design Defects
ASE '06 Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering
Journal of Systems and Software
Detection and correction of design defects in object-oriented designs
Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
IEEE Transactions on Software Engineering
A Metric Extraction Framework Based on a High-Level Description Language
SCAM '09 Proceedings of the 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation
An Exploratory Study of the Impact of Code Smells on Software Change-proneness
WCRE '09 Proceedings of the 2009 16th Working Conference on Reverse Engineering
DECOR: A Method for the Specification and Detection of Code and Design Smells
IEEE Transactions on Software Engineering
A domain analysis to specify design defects and generate detection algorithms
FASE'08/ETAPS'08 Proceedings of the Theory and practice of software, 11th international conference on Fundamental approaches to software engineering
From a domain analysis to the specification and detection of code and design smells
Formal Aspects of Computing
On the Impact of Design Flaws on Software Defects
QSIC '10 Proceedings of the 2010 10th International Conference on Quality Software
ICSM '10 Proceedings of the 2010 IEEE International Conference on Software Maintenance
CSMR '11 Proceedings of the 2011 15th European Conference on Software Maintenance and Reengineering
Leveraging code smell detection with inter-smell relations
XP'06 Proceedings of the 7th international conference on Extreme Programming and Agile Processes in Software Engineering
Do code smells reflect important maintainability aspects?
ICSM '12 Proceedings of the 2012 IEEE International Conference on Software Maintenance (ICSM)
Hi-index | 0.00 |
Code smells are indicators of issues with source code quality that may hinder evolution. While previous studies mainly focused on the effects of individual code smells on maintainability, we conjecture that not only the individual code smells but also the interactions between code smells affect maintenance. We empirically investigate the interactions amongst 12 code smells and analyze how those interactions relate to maintenance problems. Professional developers were hired for a period of four weeks to implement change requests on four medium-sized Java systems with known smells. On a daily basis, we recorded what specific problems they faced and which artifacts were associated with them. Code smells were automatically detected in the pre-maintenance versions of the systems and analyzed using Principal Component Analysis (PCA) to identify patterns of co-located code smells. Analysis of these factors with the observed maintenance problems revealed how smells that were co-located in the same artifact interacted with each other, and affected maintainability. Moreover, we found that code smell interactions occurred across coupled artifacts, with comparable negative effects as same-artifact co-location. We argue that future studies into the effects of code smells on maintainability should integrate dependency analysis in their process so that they can obtain a more complete understanding by including such coupled interactions.