Loading…

Code smells and refactoring: A tertiary systematic review of challenges and observations

•Most frequent code smells, detection approaches/tools, refactoring/tools (Table 8).•Relationship of the top 10 code smells, refactoring and impact on quality (Fig 23).•Implications of this study from practitioners, researchers, and instructors (Sec 6).•Report of 13 open issues about code smells and...

Full description

Saved in:
Bibliographic Details
Published in:The Journal of systems and software 2020-09, Vol.167, p.110610, Article 110610
Main Authors: Lacerda, Guilherme, Petrillo, Fabio, Pimenta, Marcelo, Guéhéneuc, Yann Gaël
Format: Article
Language:English
Subjects:
Citations: Items that this one cites
Items that cite this one
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
Description
Summary:•Most frequent code smells, detection approaches/tools, refactoring/tools (Table 8).•Relationship of the top 10 code smells, refactoring and impact on quality (Fig 23).•Implications of this study from practitioners, researchers, and instructors (Sec 6).•Report of 13 open issues about code smells and refactoring (Sec 7). Refactoring and smells have been well researched by the software-engineering research community these past decades. Several secondary studies have been published on code smells, discussing their implications on software quality, their impact on maintenance and evolution, and existing tools for their detection. Other secondary studies addressed refactoring, discussing refactoring techniques, opportunities for refactoring, impact on quality, and tools support. In this paper, we present a tertiary systematic literature review of previous surveys, secondary systematic literature reviews, and systematic mappings. We identify the main observations (what we know) and challenges (what we do not know) on code smells and refactoring. We perform this tertiary review using eight scientific databases, based on a set of five research questions, identifying 40 secondary studies between 1992 and 2018. We organize the main observations and challenges about code smell and their refactoring into: smells definitions, most common code-smell detection approaches, code-smell detection tools, most common refactoring, and refactoring tools. We show that code smells and refactoring have a strong relationship with quality attributes, i.e., with understandability, maintainability, testability, complexity, functionality, and reusability. We argue that code smells and refactoring could be considered as the two faces of a same coin. Besides, we identify how refactoring affects quality attributes, more than code smells. We also discuss the implications of this work for practitioners, researchers, and instructors. We identify 13 open issues that could guide future research work. Thus, we want to highlight the gap between code smells and refactoring in the current state of software-engineering research. We wish that this work could help the software-engineering research community in collaborating on future work on code smells and refactoring.
ISSN:0164-1212
1873-1228
DOI:10.1016/j.jss.2020.110610