Write a Blog >>
ICPC 2020
Mon 13 - Wed 15 July 2020
co-located with ICSE 2020
Mon 13 Jul 2020 16:54 - 17:06 at ICPC - Session 2: Quality Chair(s): Gemma Catolino

Refactoring is a widely adopted practice for improving code comprehension and for removing severe structural problems in a project. When refactorings affect the system architecture, they are called architectural refactorings. Unfortunately, developers usually do not know when and how they should apply refactorings to remove architectural problems. Nevertheless, they might be more susceptible to applying architectural refactoring if they rely on code smells and code refactoring – two concepts that they usually deal with through their routine programming activities. To investigate if smells can serve as indicators of architectural refactoring opportunities, we conducted a retrospective study over the commit history of 50 software projects. We analyzed 52,667 refactored elements to investigate if they had architectural problems that could have been indicated by automatically-detected smells. We considered purely structural refactorings to identify elements that were likely to have architectural problems. We found that the proportion of refactored elements without smells is much lower than those refactored with smells. By analyzing the latter, we concluded that smells can be used as indicators of architectural refactoring opportunities when the affected source code is deteriorated, i.e., the code hosting two or more smells. For example, when God Class or Complex Class appear together with other smells, they are indicators of architectural refactoring opportunities. In general, smells that often co-occurred with other smells (67.53%) are indicators of architectural refactoring opportunities in most cases (88.53% of refactored elements). Our study also enables us to derive a catalog with patterns of smells that indicate refactoring opportunities to remove specific types of architectural problems. These patterns can guide developers and make them more susceptible to apply architectural refactorings.

Mon 13 Jul
Times are displayed in time zone: (UTC) Coordinated Universal Time change

icpc-2020-research
16:30 - 17:30: Research - Session 2: Quality at ICPC
Chair(s): Gemma CatolinoDelft University of Technology
icpc-2020-research16:30 - 16:42
Paper
Ana Carla BibianoPUC-Rio, Vinícius SoaresPUC-Rio, Daniel CoutinhoPUC-Rio, Eduardo FernandesPUC-Rio, João Lucas CorreiaFederal University of Alagoas, Kleber TarcísioUFCG, Anderson OliveiraPUC-Rio, Alessandro GarciaPUC-Rio, Rohit GheyiFederal University of Campina Grande, Márcio RibeiroFederal University of Alagoas, Brazil, Baldoino Fonseca, Caio BarbosaUFAL, Daniel OliveiraPUC-Rio
Media Attached
icpc-2020-research16:42 - 16:54
Paper
Fengcai Wen, Csaba NagySoftware Institute - USI, Lugano, Switzerland, Michele LanzaUniversita della Svizzera italiana (USI), Gabriele BavotaUniversità della Svizzera italiana
Media Attached
icpc-2020-research16:54 - 17:06
Paper
Leonardo Da Silva SousaCarnegie Mellon University, USA, Willian OizumiPUC-Rio, Alessandro GarciaPUC-Rio, Anderson OliveiraPUC-Rio, Diego CedrimPontifical Catholic University of Rio de Janeiro, Carlos Lucena
Pre-print Media Attached
icpc-2020-tool-demonstration17:06 - 17:18
Paper
Emanuele IannoneUniversity of Salerno, Fabiano PecorelliUniversity of Salerno, Dario Di NucciTilburg University, Fabio PalombaUniversity of Salerno, Andrea De LuciaUniversity of Salerno
Media Attached
icpc-2020-tool-demonstration17:18 - 17:30
Paper
David BowesLancaster University, Jean PetricLancaster University, Tracy HallLancaster University
Media Attached