skip to main content
10.1145/3357141.3357142acmotherconferencesArticle/Chapter ViewAbstractPublication PagessbcarsConference Proceedingsconference-collections
research-article

On the Prioritization of Design-Relevant Smelly Elements: A Mixed-Method, Multi-Project Study

Published: 23 September 2019 Publication History

Abstract

Software systems are likely to face what is called design problems. Given the typical lack of design documentation, developers have to rely on implementation-level symptoms, the so-called code smells, to identify and remove design problems. A code smell is a microstructure in the program that can indicate the presence of a design problem. Large programs have hundreds or thousands of program elements (e.g., classes) in which a significant proportion may be affected by smells. Consequently, due to time constraints and the large number of elements, developers have to prioritize the designrelevant program elements, i.e., locate a shortlist of elements that are suspects of having design-relevant smells. However, this task is hard and time-consuming. Unfortunately, the literature fails to provide developers with effective heuristics that automate such prioritization task. The objective of this paper is to propose heuristics that effectively locate a shortlist of design-relevant smelly program elements. For this purpose, we report two studies. In the first one, we investigated the criteria that developers used in practice to accurately prioritize design-relevant smelly elements. Based on these criteria, we derived a preliminary suite of prioritization heuristics. Since we do not know if the heuristics are suitable for an effective prioritization across multiple projects, we performed a second study to evaluate the proposed heuristics. We found that two out of nine heuristics reached an average precision higher than 75% for the four projects we analyzed. Thus, our findings suggest these heuristics are promising to support developers in prioritizing design-relevant smelly elements.

References

[1]
R. Arcoverde, E. Guimarães, I. Macía, A. Garcia, and Y. Cai. 2013. Prioritization of Code Anomalies Based on Architecture Sensitiveness. In 2013 27th Brazilian Symposium on Software Engineering. 69--78.
[2]
D. Cedrim and L. Sousa. 2018. Organic. https://github.com/diegocedrim/organic. (2018).
[3]
K Anders Ericsson and Herbert A Simon. 1984. Protocol analysis: Verbal reports as data. the MIT Press.
[4]
M. Fowler. 1999. Refactoring: Improving the Design of Existing Code. Addison-Wesley, Boston, MA, USA.
[5]
E. Gamma, R. Helm, R. Johnson, and J. Vlissides. 1995. Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA.
[6]
J. Garcia, I. Ivkovic, and N. Medvidovic. 2013. A comparative analysis of software architecture recovery techniques. In Proceedings of the 28th IEEE/ACM International Conference on Automated Software Engineering. IEEE Press, 486--496.
[7]
J. Garcia, D. Popescu, G.Edwards, and N. Medvidovic. 2009. Toward a Catalogue of Architectural Bad Smells. In Architectures for Adaptive Software Systems. Springer Berlin Heidelberg, Berlin, Heidelberg, 146--162.
[8]
E. Guimarães, S. Vidal, A. Garcia, J. A. Diaz Pace, and C. Marcos. 2018. Exploring architecture blueprints for prioritizing critical code anomalies: Experiences and tool support. Software: Practice and Experience 48, 5 (2018), 1077--1106.
[9]
P. Kaminski. 2007. Reforming Software Design Documentation. In 14th Working Conference on Reverse Engineering (WCRE 2007). 277--280.
[10]
M. Lanza and R. Marinescu. 2006. Object-Oriented Metrics in Practice. Springer, Heidelberg.
[11]
Z. Li, P. Liang, P. Avgeriou, N. Guelfi, and A. Ampatzoglou. 2014. An Empirical Investigation of Modularity Metrics for Indicating Architectural Technical Debt. In Proceedings of the 10th International ACM Sigsoft Conference on QoSA (QoSA '14). 119--128.
[12]
A. MacCormack, J. Rusnak, and C. Baldwin. 2006. Exploring the Structure of Complex Software Designs: An Empirical Study of Open Source and Proprietary Code. Manage. Sci. 52, 7 (2006), 1015--1030.
[13]
I. Macia, R. Arcoverde, A. Garcia, C. Chavez, and A. von Staa. 2012. On the Relevance of Code Anomalies for Identifying Architecture Degradation Symptoms. In CSMR12. 277--286.
[14]
RC. Martin and M. Martin. 2006. Agile Principles, Patterns, and Practices in C# (Robert C. Martin). Prentice Hall PTR, Upper Saddle River, NJ, USA.
[15]
Complementary Material. 2019. https://sbcars19-conf.herokuapp.com/. (2019).
[16]
W. Oizumi, A. Garcia, L. Sousa, B. Cafeo, and Y. Zhao. 2016. Code Anomalies Flock Together: Exploring Code Anomaly Agglomerations for Locating Design Problems. In The 38th International Conference on Software Engineering; USA.
[17]
P. Runeson, M. Host, A. Rainer, and B. Regnell. 2012. Case Study Research in Software Engineering: Guidelines and Examples. Wiley Publishing.
[18]
N. Sae-Lim, S. Hayashi, and M. Saeki. 2018. An Investigative Study on How Developers Filter and Prioritize Code Smells. IEICE TRANSACTIONS on Information and Systems 101, 7 (2018), 1733--1742.
[19]
L. Sousa, A. Oliveira, W. Oizumi, S. Barbosa, A. Garcia, J. Lee, M. Kalinowski, R. de Mello, B. Fonseca, R. Oliveira, C. Lucena, and R. Paes. 2018. Identifying Design Problems in the Source Code: A Grounded Theory. In Proceedings of the 40th International Conference on Software Engineering (ICSE '18). ACM, New York, NY, USA, 921--931.
[20]
A. Strauss and J.M. Corbin. 1998. Basics of Qualitative Research: Techniques and Procedures for Developing Grounded Theory. SAGE Publications.
[21]
A. Tang, A. Aleti, J. Burge, and H. van Vliet. 2010. What makes software design effective? Design Studies 31, 6 (2010), 614--640. Special Issue Studying Professional Software Design.
[22]
Mattmann et. al. 2006. A Software Architecture-based Framework for Highly Distributed and Data Intensive Scientific Applications. In Proceedings of the 28th ICSE (ICSE '06). ACM, New York, NY, USA, 721--730.
[23]
J. van Gurp and J. Bosch. 2002. Design erosion: problems and causes. Journal of Systems and Software 61, 2 (2002), 105--119.
[24]
S. Vidal, E. Guimaraes, W. Oizumi, A. Garcia, A. D. Pace, and C. Marcos. 2016. Identifying Architectural Problems through Prioritization of Code Smells. In SBCARS16. 41--50.
[25]
S. Vidal, C. Marcos, and J. Díaz-Pace. 2016. An approach to prioritize code smells for refactoring. Automated Software Engineering 23, 3 (2016), 501--532.
[26]
Santiago Vidal, Willian Oizumi, Alessandro Garcia, Andres Diaz-Pace, and Claudia Marcos. 2019. Ranking architecturally critical agglomerations of code smells. Science of Computer Programming (07 2019).
[27]
A. Yamashita and L. Moonen. 2013. Do developers care about code smells? An exploratory survey. In 2013 20th Working Conference on Reverse Engineering (WCRE). 242--251.
[28]
Trevor J. Young. 2015. Using AspectJ to build a software product line for mobile devices. Master's thesis. University of British Columbia.

Cited By

View all
  • (2025)Software Metric Based Impact Analysis of Code Smells ‐ A Large Scale Empirical StudySoftware: Practice and Experience10.1002/spe.3405Online publication date: 13-Jan-2025
  • (2024)Revisiting Code Smell Severity Prioritization using learning to rank techniquesExpert Systems with Applications10.1016/j.eswa.2024.123483249(123483)Online publication date: Sep-2024
  • (2024)Prioritizing God Class Code Smells in Object-Oriented Software Using Fuzzy Inference SystemArabian Journal for Science and Engineering10.1007/s13369-024-08826-949:9(12743-12770)Online publication date: 5-Mar-2024
  • Show More Cited By

Index Terms

  1. On the Prioritization of Design-Relevant Smelly Elements: A Mixed-Method, Multi-Project Study

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Other conferences
    SBCARS '19: Proceedings of the XIII Brazilian Symposium on Software Components, Architectures, and Reuse
    September 2019
    145 pages
    ISBN:9781450376372
    DOI:10.1145/3357141
    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    In-Cooperation

    • SBC: Sociedade Brasileira de Computação

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    Published: 23 September 2019

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. design problems
    2. heuristics
    3. prioritization

    Qualifiers

    • Research-article
    • Research
    • Refereed limited

    Conference

    SBCARS '19

    Acceptance Rates

    Overall Acceptance Rate 23 of 79 submissions, 29%

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)5
    • Downloads (Last 6 weeks)1
    Reflects downloads up to 03 Mar 2025

    Other Metrics

    Citations

    Cited By

    View all
    • (2025)Software Metric Based Impact Analysis of Code Smells ‐ A Large Scale Empirical StudySoftware: Practice and Experience10.1002/spe.3405Online publication date: 13-Jan-2025
    • (2024)Revisiting Code Smell Severity Prioritization using learning to rank techniquesExpert Systems with Applications10.1016/j.eswa.2024.123483249(123483)Online publication date: Sep-2024
    • (2024)Prioritizing God Class Code Smells in Object-Oriented Software Using Fuzzy Inference SystemArabian Journal for Science and Engineering10.1007/s13369-024-08826-949:9(12743-12770)Online publication date: 5-Mar-2024
    • (2023)Don’t Forget the Exception! : Considering Robustness Changes to Identify Design Problems2023 IEEE/ACM 20th International Conference on Mining Software Repositories (MSR)10.1109/MSR59073.2023.00064(417-429)Online publication date: May-2023
    • (2023)Code smell prioritization in object‐oriented software systemsJournal of Software: Evolution and Process10.1002/smr.253635:12Online publication date: 29-Jan-2023
    • (2020)When Are Smells Indicators of Architectural Refactoring OpportunitiesProceedings of the 28th International Conference on Program Comprehension10.1145/3387904.3389276(354-365)Online publication date: 13-Jul-2020
    • (2020)How Does Modern Code Review Impact Software Design Degradation? An In-depth Empirical Study2020 IEEE International Conference on Software Maintenance and Evolution (ICSME)10.1109/ICSME46990.2020.00055(511-522)Online publication date: Sep-2020

    View Options

    Login options

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Figures

    Tables

    Media

    Share

    Share

    Share this Publication link

    Share on social media