|Authors||A. Yamashita and S. Counsell|
|Title||Code Smells As System-Level Indicators of Maintainability: an Empirical Study|
|Afilliation||Software Engineering, Software Engineering|
|Publication Type||Journal Article|
|Year of Publication||2013|
|Journal||Journal of Systems and Software|
Code smells are manifestations of design flaws that can degrade code maintainability if left to fester. The research in this paper investigates the potential of code smells to reflect system-level indicators of maintainability. We report a study where the strengths and limitations of code smells are evaluated against existing evaluation approaches. We evaluated four medium-sized Java systems using code smells and compared the results against previous evaluations on the same systems based on expert judgment and the Chidamber and Kemerer suite of metrics. The systems were maintained over a period up to 4 weeks. During maintenance, effort (person-hours) and number of defects were measured, to validate the different evaluation approaches. Results suggest that code smells are strongly influenced by size. An implication is that code smells are likely to yield inaccurate results when comparing the maintainability of systems differing in size. When comparing the evaluation approaches, expert judgment was found as the most accurate and flexible since it considered effects due to a system's size and complexity and could adapt to different maintenance scenarios. We also found that code smells complemented expert-based evaluation, since they can identify critical code that experts can sometimes overlook.