Nothing Special   »   [go: up one dir, main page]

skip to main content
research-article

Are architectural smells independent from code smells? An empirical study

Published: 01 August 2019 Publication History

Highlights

Case study analyzing the correlations among code smells, groups of code smells and architectural smells.
Architectural smells are not correlated with code smells.
Architectural smells cannot be derived from code smells.
Architectural smells deserve special attention by researchers, who should investigate their actual harmfulness.

Abstract

Background. Architectural smells and code smells are symptoms of bad code or design that can cause different quality problems, such as faults, technical debt, or difficulties with maintenance and evolution. Some studies show that code smells and architectural smells often appear together in the same file. The correlation between code smells and architectural smells, however, is not clear yet; some studies on a limited set of projects have claimed that architectural smells can be derived from code smells, while other studies claim the opposite.
Objective. The goal of this work is to understand whether architectural smells are independent from code smells or can be derived from a code smell or from one category of them.
Method. We conducted a case study analyzing the correlations among 19 code smells, six categories of code smells, and four architectural smells.
Results. The results show that architectural smells are correlated with code smells only in a very low number of occurrences and therefore cannot be derived from code smells.
Conclusion. Architectural smells are independent from code smells, and therefore deserve special attention by researchers, who should investigate their actual harmfulness, and practitioners, who should consider whether and when to remove them.

References

[1]
H.A. Al-Mutawa, J. Dietrich, S. Marsland, C. McCartin, On the shape of circular dependencies in java programs, Proc. 23rd Australian Software Engineering Conference (ASWEC 2014), IEEE, Sydney, Australia, 2014, pp. 48–57.
[2]
U. Azadi, F. Arcelli Fontana, D. Taibi, Architectural smells detected by tools: a catalogue proposal, Proceedings of International Conference on Technical Debt, 2019.
[3]
U. Azadi, F. Arcelli Fontana, M. Zanoni, Machine learning based code smell detection through wekanose, Proceedings of the 40th International Conference on Software Engineering: Companion Proceeedings, ICSE 2018, Gothenburg, Sweden, May 27, - June 03, 2018, pp. 288–289.
[4]
V.R. Basili, G. Caldiera, H.D. Rombach, The goal question metric approach, Encycl. Softw. Eng (1994).
[5]
I.M. Bertrán, Ph.d. thesis On the Detection of Architecturally-Relevant Code Anomalies in Software Systems, PUC-Rio, Departamento de Informática, Rio de Janeiro, 2013.
[6]
B.D. Bois, S. Demeyer, J. Verelst, T. Mens, M. Temmerman, Does god class decomposition affect comprehensibility?, IASTED Conf. on Software Engineering, 2006.
[7]
W. Brown, R.C. Malveau, H.W. McCormick III, T.J. Mowbray, AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis, John Wiley, 1998.
[8]
C. Croux, C. Dehon, Influence functions of the spearman and kendall correlation measures, Stat. Methods Appl. 19 (2010) 497–515.
[9]
I. Deligiannis, M. Shepperd, M. Roumeliotis, I. Stamelos, An empirical investigation of an object-oriented design heuristic for maintainability, J. Syst. Softw. 65 (2003) 127–139.
[10]
N.A. Ernst, S. Bellomo, I. Ozkaya, R.L. Nord, I. Gorton, Measure it? Manage it? Ignore it? Software practitioners and technical debt, Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering, ESEC/FSE 2015, Bergamo, Italy, August 30, - September 4, 2015, pp. 50–60.
[11]
M. Fokaefs, N. Tsantalis, A. Chatzigeorgiou, Jdeodorant: identification and removal of feature envy bad smells, 23rd IEEE International Conference on Software Maintenance (ICSM 2007), October 2–5, Paris, France, 2007, pp. 519–520.
[12]
F. Arcelli Fontana, V. Ferme, M. Zanoni, Towards assessing software architecture quality by exploiting code smell relations, Proceedings of the 2nd IEEE/ACM International Workshop on Software Architecture and Metrics (SAM), 2015, pp. 1–7.
[13]
F Arcelli Fontana, V. Ferme, M. Zanoni, R. Roveda, Towards a prioritization of code debt: a code smell intensity index, Proc. Seventh International Workshop on Managing Technical Debt (MTD 2015), IEEE, Bremen, Germany, 2015, pp. 16–24.
[14]
F. Arcelli Fontana, S. Maggioni, Metrics and antipatterns for software quality evaluation, Proceedings of the 34th IEEE Software Engineering Workshop (SEW 2011), IEEE, Limerick, Ireland, 2011, pp. 48–56.
[15]
F. Arcelli Fontana, E. Mariani, A. Morniroli, R. Sormani, A. Tonello, An experience report on using code smells detection tools, IEEE Fourth International Conference on Software Testing, Verification and Validation Workshops, RefTest 2011, IEEE, Berlin, 2011, pp. 450–457.
[16]
F. Arcelli Fontana, I. Pigazzini, R. Roveda, D.A. Tamburri, M. Zanoni, E.D. Nitto, Arcan: a tool for architectural smells detection, 2017 IEEE International Conference on Software Architecture Workshops, ICSA Workshops 2017, Gothenburg, Sweden, April 5–7, 2017, pp. 282–285.
[17]
F. Arcelli Fontana, I. Pigazzini, R. Roveda, M. Zanoni, Automatic detection of instability architectural smells, Proc. 32nd Intern. Conf. on Software Maintenance and Evolution (ICSME 2016), IEEE, Raleigh, North Carolina, USA, 2016.
[18]
M. Fowler, K. Back, Refactoring: Improving the Design of Existing Code, Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1999.
[19]
S. Ganesh, T. Sharma, G. Suryanarayana, Towards a principle-based classification of structural design smells, J. Obj. Technol. 12 (2013) 1:1–29.
[20]
J. Garcia, D. Popescu, G. Edwards, N. Medvidovic, Identifying architectural bad smells, CSMR 2009, IEEE, Germany, 2009, pp. 255–258.
[21]
E. Guimaraes, A. Garcia, Y. Cai, Exploring blueprints on the prioritization of architecturally relevant code anomalies – a controlled experiment, 2014 IEEE 38th Annual Computer Software and Applications Conference, 2014, pp. 344–353.
[22]
T. Hall, M. Zhang, D. Bowes, Y. Sun, Some code smells have a significant but small effect on faults, ACM Trans. Softw. Eng. Methodol. 23 (2014) 33:1–33:39.
[23]
hello2morrow, Sonargraph Product Family, 2015.
[24]
C.J. Kapser, M.W. Godfrey, “Cloning considered harmful” considered harmful: Patterns of cloning in software, Empir. Softw. Engg. 13 (2008) 645–692.
[25]
R. Kazman, Y. Cai, R. Mo, Q. Feng, L. Xiao, S. Haziyev, V. Fedak, A. Shapochka, A case study in locating the architectural roots of technical debt, Software Engineering (ICSE), 2015 IEEE/ACM 37th IEEE International Conference on, vol. 2, 2015, pp. 179–188.
[26]
F. Khomh, M.D. Penta, Y.G. Guéhéneuc, G. Antoniol, An exploratory study of the impact of antipatterns on class change- and fault-proneness, Empir. Softw. Eng. 17 (2012) 243–275.
[27]
E. Kouroshfar, M. Mirakhorli, H. Bagheri, L. Xiao, S. Malek, Y. Cai, A study on the role of software architecture in the evolution and quality of software, Proceedings of the 12th Working Conference on Mining Software Repositories, MSR ’15, IEEE Press, Piscataway, NJ, USA, 2015, pp. 246–257.
[28]
S. Kpodjedo, F. Ricca, P. Galinier, Y.-G. Gnéhéneuc, G. Antoniol, Design evolution metrics for defect prediction in object oriented systems, Empir. Softw. Eng. 16 (2011) 141–175.
[29]
M. Lanza, R. Marinescu, Object-Oriented Metrics in Practice, Springer, 2006.
[30]
D.M. Le, P. Behnamghader, J. Garcia, D. Link, A. Shahbazian, N. Medvidovic, An empirical study of architectural change in open-source software systems, 2015 IEEE/ACM 12th Working Conference on Mining Software Repositories, 2015, pp. 235–245.
[31]
V. Lenarduzzi, D. Tosi, L. Lavazza, S. Morasca, Why do developers adopt open source software? Past, present and future, 15th International Conference on Open Source Systems (OSS2019), 2019.
[32]
W. Li, R. Shatnawi, An empirical study of the bad smells and class error probability in the post-release object-oriented system evolution, J. Syst. Softw. 80 (2007) 1120–1128.
[33]
M. Lippert, S. Roock, Refactoring in Large Software Projects: Performing Complex Restructurings Successfully, Wiley, 2006.
[34]
H. Liu, Z. Ma, W. Shao, Z. Niu, Schedule of bad smell detection and resolution: A new way to save effort, IEEE Trans. Softw. Eng. 38 (2012) 220–235.
[35]
A. Lozano, M. Wermellinger, Assessing the effect of clones on changeability, IEEE International Conference on Software Maintenance, ICSM ’08, IEEE Computer Society, Washington, DC, USA, 2008, pp. 227–236.
[36]
I. Macia, R. Arcoverde, A. Garcia, C. Chavez, A. von Staa, On the relevance of code anomalies for identifying architecture degradation symptoms, Proceedings of the 15th European Conference on Software Maintenance and Reengineering (CSMR 2012), IEEE Computer Society, Szeged, Hungary, 2012, pp. 277–286.
[37]
I. Macia, J. Garcia, D. Popescu, A. Garcia, N. Medvidovic, A. von Staa, Are automatically-detected code anomalies relevant to architectural modularity?: An exploratory analysis of evolving systems, Proceedings of the 11th Annual International Conference on Aspect-oriented Software Development (AOSD ’12), ACM, Potsdam, Germany, 2012, pp. 167–178.
[38]
M. Mantyla, J. Vanhanen, C. Lassenius, A taxonomy and an initial empirical study of bad smells in code, Software Maintenance, 2003. ICSM 2003. Proceedings. International Conference on, 2003, pp. 381–384.
[39]
M.V. Mäntylä, C. Lassenius, Subjective evaluation of software evolvability using code smells: an empirical study, Empir. Softw. Eng. 11 (2006) 395–431.
[40]
R. Marinescu, Detection strategies: metrics-based rules for detecting design flaws, Proceedings of the 20th IEEE International Conference on Software Maintenance, ICSM ’04, IEEE Computer Society, Washington, DC, USA, 2004, pp. 350–359.
[41]
R. Marinescu, Assessing technical debt by identifying design flaws in software systems, IBM J. Res. Dev. 56 (2012) 9:1–9:13.
[42]
R.C. Martin, Object oriented design quality metrics: An analysis of dependencies, ROAD 2 (1995).
[43]
R.C. Martin, Agile Software Development: Principles, Patterns, and Practices, Prentice Hall, 2007.
[44]
A. Martini, F. Arcelli Fontana, A. Biaggi, R. Roveda, Identifying and prioritizing architectural debt through architectural smells: a case study in a large software company, Proc. of the European Conf. on Software Architecture (ECSA), Springer, Madrid, Spain, 2018.
[45]
R. Mo, Y. Cai, R. Kazman, L. Xiao, Hotspot patterns: the formal definition and automatic detection of architecture smells, Proceedings of the 12th Working IEEE/IFIP Conference on Software Architecture (WICSA 2015), IEEE, Montreal, QC, Canada, 2015, pp. 51–60.
[46]
N. Moha, Y.G. Guéhéneuc, Decor: a tool for the detection of design defects, Proc. 22nd IEEE/ACM international conference on Automated software engineering (ASE ’07), ACM, Atlanta, Georgia, USA, 2007, pp. 527–528.
[47]
N. Moha, Y.G. Gueheneuc, L. Duchien, A.F.L. Meur, DECOR: A method for the specification and detection of code and design smells, IEEE Trans. Softw. Eng. 36 (2010) 20–36.
[48]
R. Nord, I. Ozkaya, P. Kruchten, M. Gonzalez-Rojas, In search of a metric for managing architectural technical debt, Proceedings of the 2012 Joint Working IEEE/IFIP Conference on Software Architecture (WICSA) and European Conference on Software Architecture (ECSA), IEEE, Helsinki, Finland, 2012, pp. 91–100.
[49]
W. Oizumi, A. Garcia, M. Ferreira, A. von Staa, T. Colanzi, When code-anomaly agglomerations represent architectural problems? An exploratory study, Software Engineering (SBES), 2014 Brazilian Symposium on, 2016, pp. 91–100.
[50]
W.N. Oizumi, A.F. Garcia, L.d.S. Sousa, B.B.P. Cafeo, Y. Zhao, Code anomalies flock together: exploring code anomaly agglomerations for locating design problems, Proceedings of the 38th International Conference on Software Engineering, ICSE 2016, Austin, TX, USA, May 14–22, 2016, pp. 440–451.
[51]
S. Olbrich, D. Cruzes, D.I.K. Sjoberg, Are all code smells harmful? A study of god classes and brain classes in the evolution of three open source systems, IEEE International Conference on Software Maintenance (ICSM 2010), 2010, p. 10.
[52]
S. Olbrich, D.S. Cruzes, V. Basili, N. Zazworka, The evolution and impact of code smells: a case study of two open source systems, Proceedings of the 2009 3rd International Symposium on Empirical Software Engineering and Measurement, ESEM ’09, IEEE Computer Society, Washington, DC, USA, 2009, pp. 390–400.
[53]
F. Palomba, G. Bavota, M.D. Penta, F. Fasano, R. Oliveto, A.D. Lucia, On the diffuseness and the impact on maintainability of code smells: a large scale empirical investigation, Empir. Softw. Eng. 23 (2018) 1188–1221.
[54]
F. Palomba, G. Bavota, M.D. Penta, R. Oliveto, D. Poshyvanyk, A.D. Lucia, Mining version histories for detecting code smells, IEEE Trans. Software Eng. 41 (2015) 462–489.
[55]
F. Palomba, M. Zanoni, F. Arcelli Fontana, A.D. Lucia, R. Oliveto, Toward a smell-aware bug prediction model, IEEE Trans. Softw. Eng. 45 (2019) 194–218.
[56]
B. Pietrzak, B. Walter, Leveraging code smell detection with inter-smell relations, in: Abrahamsson P., Marchesi M., Succi G. (Eds.), Extreme Programming and Agile Processes in Software Engineering, in: Lecture Notes in Computer Science, Vol. 4044, Springer Berlin / Heidelberg, 2006, pp. 75–84.
[57]
A.J. Riel, Object-Oriented Design Heuristics, 1st, Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1996.
[58]
R. Roveda, F. Arcelli Fontana, I. Pigazzini, M. Zanoni, Towards an architectural debt index, Proceedings of the Euromicro Conference on Software Engineering and Advanced Applications (SEAA), Technical Debt track, IEEE, Prague, Czech Republic, 2018.
[59]
P. Runeson, M. Höst, Guidelines for conducting and reporting case study research in software engineering, Empir. Softw. Eng. 14 (2009) 131–164.
[60]
N. Saarimäki, V. Lenarduzzi, D. Taibi, On the diffuseness of code technical debt in open source projects, International Conference on Technical Debt (TechDebt 2019), 2019.
[61]
J. Schumacher, N. Zazworka, F. Shull, C. Seaman, M. Shaw, Building empirical support for automated code smell detection, Proceedings of the 2010 ACM-IEEE International Symposium on Empirical Software Engineering and Measurement, ESEM ’10, ACM, New York, NY, USA, 2010, pp. 8:1–8:10.
[62]
F. Shull, J. Singer, D.I. Sjøberg, Guide to Advanced Empirical Software Engineering, Springer-Verlag, Berlin, Heidelberg, 2007.
[63]
D.I.K. Sjoberg, A. Yamashita, B. Anda, A. Mockus, T. Dyba, Quantifying the effect of code smells on maintenance effort, IEEE Trans. Softw. Eng. 39 (2013) 1144–1156.
[64]
G. Suryanarayana, G. Samarthyam, T. Sharma, Refactoring for Software Design Smells: Managing Technical Debt, First ed., Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 2014.
[65]
G. Suryanarayana, G. Samarthyam, T. Sharma, Refactoring for Software Design Smells, first ed., Morgan Kaufmann, 2015.
[66]
S.E.S. Taba, F. Khomh, Y. Zou, A.E. Hassan, M. Nagappan, Predicting bugs using antipatterns, Proceedings of the 2013 IEEE International Conference on Software Maintenance, ICSM ’13, IEEE Computer Society, Washington, DC, USA, 2013, pp. 270–279.
[67]
D. Taibi, Raw Data: Are Architectural Smells Independent From Code Smells? An Empirical Study, 2017.
[68]
D. Taibi, A. Janes, V. Lenarduzzi, How developers perceive smells in source code: areplicated study, Inf. Softw. Technol. 92 (2017) 223–235.
[69]
D. Taibi, V. Lenarduzzi, On the definition of microservice bad smells, IEEE Softw. 35 (2018) 56–62.
[70]
E. Tempero, C. Anslow, J. Dietrich, T. Han, J. Li, M. Lumpe, H. Melton, J. Noble, The qualitas corpus: a curated collection of java code for empirical studies, Proc. 17th Asia Pacific Software Engineering Conference (APSEC 2010), IEEE, Sydney, Australia, 2010, pp. 336–345.
[71]
R. Terra, L.F. Miranda, M.T. Valente, R.S. Bigonha, Qualitas.class Corpus: A compiled version of the Qualitas Corpus, Software Engineering Notes 38 (2013) 1–4.
[72]
B. Walter, F. Arcelli Fontana, V. Ferme, Code smells and their collocations: a large-scale experiment on open-source systems, J. Syst. Softw. 144 (2018) 1–21.
[73]
L. Xiao, Y. Cai, R. Kazman, Titan: a toolset that connects software architecture with quality analysis, Proceedings of the 22Nd ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE 2014), ACM, Hong Kong, China, 2014, pp. 763–766.
[74]
A. Yamashita, M. Zanoni, F.A. Fontana, B. Walter, Inter-smell relations in industrial and open source systems: a replication and comparative analysis, Proceedings of the 31st International Conference on Software Maintenance and Evolution (ICSME2015), IEEE, Bremen, Germany, 2015, pp. 121–130.
[75]
R.K. Yin, Case Study Research: Design and Methods, Applied Social Research Methods, vol. 5), fourth ed., SAGE Publications, Inc, 2009.

Cited By

View all
  • (2024)Advancing Technical Debt Management in Software Systems with a Comprehensive TD Indicator and Question CatalogACM SIGAPP Applied Computing Review10.1145/3687251.368725424:2(30-54)Online publication date: 1-Jun-2024
  • (2024)Revisiting Technical Debt Types and Indicators for Software SystemsProceedings of the 39th ACM/SIGAPP Symposium on Applied Computing10.1145/3605098.3636043(834-841)Online publication date: 8-Apr-2024
  • (2024)Automated construction of reference model for software remodularization through software evolutionJournal of Software: Evolution and Process10.1002/smr.270036:10Online publication date: 10-Oct-2024
  • Show More Cited By

Index Terms

  1. Are architectural smells independent from code smells? An empirical study
        Index terms have been assigned to the content through auto-classification.

        Recommendations

        Comments

        Please enable JavaScript to view thecomments powered by Disqus.

        Information & Contributors

        Information

        Published In

        cover image Journal of Systems and Software
        Journal of Systems and Software  Volume 154, Issue C
        Aug 2019
        255 pages

        Publisher

        Elsevier Science Inc.

        United States

        Publication History

        Published: 01 August 2019

        Author Tags

        1. Code smells
        2. Architectural smells
        3. Technical debt
        4. Empirical analysis

        Qualifiers

        • Research-article

        Contributors

        Other Metrics

        Bibliometrics & Citations

        Bibliometrics

        Article Metrics

        • Downloads (Last 12 months)0
        • Downloads (Last 6 weeks)0
        Reflects downloads up to 12 Nov 2024

        Other Metrics

        Citations

        Cited By

        View all
        • (2024)Advancing Technical Debt Management in Software Systems with a Comprehensive TD Indicator and Question CatalogACM SIGAPP Applied Computing Review10.1145/3687251.368725424:2(30-54)Online publication date: 1-Jun-2024
        • (2024)Revisiting Technical Debt Types and Indicators for Software SystemsProceedings of the 39th ACM/SIGAPP Symposium on Applied Computing10.1145/3605098.3636043(834-841)Online publication date: 8-Apr-2024
        • (2024)Automated construction of reference model for software remodularization through software evolutionJournal of Software: Evolution and Process10.1002/smr.270036:10Online publication date: 10-Oct-2024
        • (2023)Impact of Architectural Smells on Software Performance: an Exploratory StudyProceedings of the 27th International Conference on Evaluation and Assessment in Software Engineering10.1145/3593434.3593442(22-31)Online publication date: 14-Jun-2023
        • (2023)Architectural Bad Smells for Self-Adaptive Systems: Go Runtime!Proceedings of the 17th International Working Conference on Variability Modelling of Software-Intensive Systems10.1145/3571788.3571802(85-87)Online publication date: 25-Jan-2023
        • (2023)An Architectural Technical Debt Index Based on Machine Learning and Architectural SmellsIEEE Transactions on Software Engineering10.1109/TSE.2023.328617949:8(4169-4195)Online publication date: 1-Aug-2023
        • (2023)PHP code smells in web appsJournal of Systems and Software10.1016/j.jss.2023.111644200:COnline publication date: 1-Jun-2023
        • (2022)Smell Patterns as Indicators of Design DegradationProceedings of the XXXVI Brazilian Symposium on Software Engineering10.1145/3555228.3555243(311-320)Online publication date: 5-Oct-2022
        • (2022)An exploratory study on the relationship of smells and design issues with software vulnerabilitiesProceedings of the 1st International Workshop on Mining Software Repositories Applications for Privacy and Security10.1145/3549035.3561182(16-20)Online publication date: 7-Nov-2022
        • (2022)Analyzing the Relationship between Community and Design Smells in Open-Source Software Projects: An Empirical StudyProceedings of the 16th ACM / IEEE International Symposium on Empirical Software Engineering and Measurement10.1145/3544902.3546249(23-33)Online publication date: 19-Sep-2022
        • Show More Cited By

        View Options

        View options

        Get Access

        Login options

        Media

        Figures

        Other

        Tables

        Share

        Share

        Share this Publication link

        Share on social media