Assessing the refactoring of brain methods

Code smells are a popular mechanism for identifying structural design problems in software systems. Several tools have emerged to support the detection of code smells and propose some refactorings. However, existing tools do not guarantee that a smell will be automatically fixed by means of refactor...

Full description

Bibliographic Details
Authors: Vidal, Santiago Agustín, Berra, Iñaki, Zuliani Held, Santiago, Marcos, Claudia Andrea, Diaz Pace, Jorge Andres
Format: article
Status:Published version
Publication Date:2018
Country:Argentina
Institution:Consejo Nacional de Investigaciones Científicas y Técnicas
Repository:CONICET Digital (CONICET)
Language:English
OAI Identifier:oai:ri.conicet.gov.ar:11336/91009
Online Access:http://hdl.handle.net/11336/91009
Access Level:Open access
Keyword:CODE SMELLS
REFACTORING
BRAIN METHOD
LONG METHOD
https://purl.org/becyt/ford/1.2
https://purl.org/becyt/ford/1
Description
Summary:Code smells are a popular mechanism for identifying structural design problems in software systems. Several tools have emerged to support the detection of code smells and propose some refactorings. However, existing tools do not guarantee that a smell will be automatically fixed by means of refactorings. This article presents Bandago, an automated approach to fix a specific type of code smell called Brain Method. A Brain Method centralizes the intelligence of a class and manifests itself as a long and complex method that is difficult to understand and maintain by developers. For each Brain Method, Bandago recommends several refactoring solutions to remove the smell using a search strategy based on simulated annealing. Our approach has been evaluated with several open-source Java applications, and the results show that Bandago can automatically fix more than 60% of Brain Methods. Furthermore, we conducted a survey with 35 industrial developers that showed evidence about the usefulness of the refactorings proposed by Bandago. Also, we compared the performance of the Bandago against that of a third-party refactoring tool.