Identifying architectural problems through prioritization of code smells

Santiago Vidal, Everton Guimaraes, Willian Oizumi, Alessandro Garcia, Andrés Díaz Pace, Claudia Marcos

Research output: Chapter in Book/Report/Conference proceedingConference contribution

11 Citations (Scopus)

Abstract

Architectural problems constantly affect evolving software projects. When not properly addressed, those problems can hinder the longevity of a software system. Studies have revealed that a range of architectural problems are reflected in source code through two or more code smells. However, a software project often contains thousands of code smells and many of them have no relation to architectural problems. Thus, developers may feel discouraged to identify architectural problems if they are not equiped with means to focus their attention in a reduced set of locations in their system to start with. However, state-of-the-art techniques fall short in assisting developers in the prioritization of code smells that are likely to indicate architectural problems in a program. As a consequence, developers struggle to effectively focus on (groups of) smells that are architecturally relevant, i.e., smells that contribute to a critical design problem. This work presents and evaluates a suite of criteria for prioritizing groups of code smells as indicators of architectural problems in evolving systems. These criteria are supported by a tool called JSpIRIT. We have assessed the prioritization criteria in the context of more than 23 versions of 4 systems, analyzing their effectiveness for spoting locations of architectural problems in the source code. The results provide evidence that one of the proposed criteria helped to correctly prioritize more than 80 (locations of) architectural problems, alleviating tedious manual inspections of the source code vis-a-vis with the architecture. This prioritization criteria would have helped developers to discard at least 500 code smells having no relation to architectural problems in the analyzed systems.

Original languageEnglish (US)
Title of host publicationProceedings - 2016 10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016
PublisherInstitute of Electrical and Electronics Engineers Inc.
Pages41-50
Number of pages10
ISBN (Electronic)9781509050864
DOIs
StatePublished - Dec 16 2016
Event10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016 - Maringa, Brazil
Duration: Sep 19 2016Sep 20 2016

Publication series

NameProceedings - 2016 10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016

Conference

Conference10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016
CountryBrazil
CityMaringa
Period9/19/169/20/16

Fingerprint

Inspection

All Science Journal Classification (ASJC) codes

  • Software
  • Hardware and Architecture

Cite this

Vidal, S., Guimaraes, E., Oizumi, W., Garcia, A., Pace, A. D., & Marcos, C. (2016). Identifying architectural problems through prioritization of code smells. In Proceedings - 2016 10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016 (pp. 41-50). [7789838] (Proceedings - 2016 10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016). Institute of Electrical and Electronics Engineers Inc.. https://doi.org/10.1109/SBCARS.2016.11
Vidal, Santiago ; Guimaraes, Everton ; Oizumi, Willian ; Garcia, Alessandro ; Pace, Andrés Díaz ; Marcos, Claudia. / Identifying architectural problems through prioritization of code smells. Proceedings - 2016 10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016. Institute of Electrical and Electronics Engineers Inc., 2016. pp. 41-50 (Proceedings - 2016 10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016).
@inproceedings{4aa6e488805146549b8ee81ab2c7fd5a,
title = "Identifying architectural problems through prioritization of code smells",
abstract = "Architectural problems constantly affect evolving software projects. When not properly addressed, those problems can hinder the longevity of a software system. Studies have revealed that a range of architectural problems are reflected in source code through two or more code smells. However, a software project often contains thousands of code smells and many of them have no relation to architectural problems. Thus, developers may feel discouraged to identify architectural problems if they are not equiped with means to focus their attention in a reduced set of locations in their system to start with. However, state-of-the-art techniques fall short in assisting developers in the prioritization of code smells that are likely to indicate architectural problems in a program. As a consequence, developers struggle to effectively focus on (groups of) smells that are architecturally relevant, i.e., smells that contribute to a critical design problem. This work presents and evaluates a suite of criteria for prioritizing groups of code smells as indicators of architectural problems in evolving systems. These criteria are supported by a tool called JSpIRIT. We have assessed the prioritization criteria in the context of more than 23 versions of 4 systems, analyzing their effectiveness for spoting locations of architectural problems in the source code. The results provide evidence that one of the proposed criteria helped to correctly prioritize more than 80 (locations of) architectural problems, alleviating tedious manual inspections of the source code vis-a-vis with the architecture. This prioritization criteria would have helped developers to discard at least 500 code smells having no relation to architectural problems in the analyzed systems.",
author = "Santiago Vidal and Everton Guimaraes and Willian Oizumi and Alessandro Garcia and Pace, {Andr{\'e}s D{\'i}az} and Claudia Marcos",
year = "2016",
month = "12",
day = "16",
doi = "10.1109/SBCARS.2016.11",
language = "English (US)",
series = "Proceedings - 2016 10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016",
publisher = "Institute of Electrical and Electronics Engineers Inc.",
pages = "41--50",
booktitle = "Proceedings - 2016 10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016",
address = "United States",

}

Vidal, S, Guimaraes, E, Oizumi, W, Garcia, A, Pace, AD & Marcos, C 2016, Identifying architectural problems through prioritization of code smells. in Proceedings - 2016 10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016., 7789838, Proceedings - 2016 10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016, Institute of Electrical and Electronics Engineers Inc., pp. 41-50, 10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016, Maringa, Brazil, 9/19/16. https://doi.org/10.1109/SBCARS.2016.11

Identifying architectural problems through prioritization of code smells. / Vidal, Santiago; Guimaraes, Everton; Oizumi, Willian; Garcia, Alessandro; Pace, Andrés Díaz; Marcos, Claudia.

Proceedings - 2016 10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016. Institute of Electrical and Electronics Engineers Inc., 2016. p. 41-50 7789838 (Proceedings - 2016 10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016).

Research output: Chapter in Book/Report/Conference proceedingConference contribution

TY - GEN

T1 - Identifying architectural problems through prioritization of code smells

AU - Vidal, Santiago

AU - Guimaraes, Everton

AU - Oizumi, Willian

AU - Garcia, Alessandro

AU - Pace, Andrés Díaz

AU - Marcos, Claudia

PY - 2016/12/16

Y1 - 2016/12/16

N2 - Architectural problems constantly affect evolving software projects. When not properly addressed, those problems can hinder the longevity of a software system. Studies have revealed that a range of architectural problems are reflected in source code through two or more code smells. However, a software project often contains thousands of code smells and many of them have no relation to architectural problems. Thus, developers may feel discouraged to identify architectural problems if they are not equiped with means to focus their attention in a reduced set of locations in their system to start with. However, state-of-the-art techniques fall short in assisting developers in the prioritization of code smells that are likely to indicate architectural problems in a program. As a consequence, developers struggle to effectively focus on (groups of) smells that are architecturally relevant, i.e., smells that contribute to a critical design problem. This work presents and evaluates a suite of criteria for prioritizing groups of code smells as indicators of architectural problems in evolving systems. These criteria are supported by a tool called JSpIRIT. We have assessed the prioritization criteria in the context of more than 23 versions of 4 systems, analyzing their effectiveness for spoting locations of architectural problems in the source code. The results provide evidence that one of the proposed criteria helped to correctly prioritize more than 80 (locations of) architectural problems, alleviating tedious manual inspections of the source code vis-a-vis with the architecture. This prioritization criteria would have helped developers to discard at least 500 code smells having no relation to architectural problems in the analyzed systems.

AB - Architectural problems constantly affect evolving software projects. When not properly addressed, those problems can hinder the longevity of a software system. Studies have revealed that a range of architectural problems are reflected in source code through two or more code smells. However, a software project often contains thousands of code smells and many of them have no relation to architectural problems. Thus, developers may feel discouraged to identify architectural problems if they are not equiped with means to focus their attention in a reduced set of locations in their system to start with. However, state-of-the-art techniques fall short in assisting developers in the prioritization of code smells that are likely to indicate architectural problems in a program. As a consequence, developers struggle to effectively focus on (groups of) smells that are architecturally relevant, i.e., smells that contribute to a critical design problem. This work presents and evaluates a suite of criteria for prioritizing groups of code smells as indicators of architectural problems in evolving systems. These criteria are supported by a tool called JSpIRIT. We have assessed the prioritization criteria in the context of more than 23 versions of 4 systems, analyzing their effectiveness for spoting locations of architectural problems in the source code. The results provide evidence that one of the proposed criteria helped to correctly prioritize more than 80 (locations of) architectural problems, alleviating tedious manual inspections of the source code vis-a-vis with the architecture. This prioritization criteria would have helped developers to discard at least 500 code smells having no relation to architectural problems in the analyzed systems.

UR - http://www.scopus.com/inward/record.url?scp=85011298938&partnerID=8YFLogxK

UR - http://www.scopus.com/inward/citedby.url?scp=85011298938&partnerID=8YFLogxK

U2 - 10.1109/SBCARS.2016.11

DO - 10.1109/SBCARS.2016.11

M3 - Conference contribution

AN - SCOPUS:85011298938

T3 - Proceedings - 2016 10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016

SP - 41

EP - 50

BT - Proceedings - 2016 10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016

PB - Institute of Electrical and Electronics Engineers Inc.

ER -

Vidal S, Guimaraes E, Oizumi W, Garcia A, Pace AD, Marcos C. Identifying architectural problems through prioritization of code smells. In Proceedings - 2016 10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016. Institute of Electrical and Electronics Engineers Inc. 2016. p. 41-50. 7789838. (Proceedings - 2016 10th Brazilian Symposium on Components, Architectures and Reuse Software, SBCARS 2016). https://doi.org/10.1109/SBCARS.2016.11