Oracles of Bad Smells: a Systematic Literature Review

A bad smell is an evidence of a design problem that may be harmful to the software maintenance. Several studies have been carried out to aid the identification of bad smells, by defining approaches or tools. Usually, the evaluation of these studies' results relies on data of oracles bad smells. An oracle is a set of data of bad smells found in a given software system. Such data serves as a referential template or a benchmark to evaluate the proposals on detecting bad smells. The availability and the quality of bad smell oracles are crucial to assert the quality of detection strategies of bad smells. This study aims to compile the bad smell oracles proposed in the literature. To achieve this, we conducted a Systematic Literature Review (SLR) to identify bad smell oracles and their characteristics. The main result of this study is a catalog of bad smell oracles that may be useful for research on bad smells, especially the studies that propose tools or detection strategies for bad smells.

[1]  Fabio Palomba,et al.  Textual Analysis for Code Smell Detection , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[2]  Alessandro F. Garcia,et al.  Code Anomalies Flock Together: Exploring Code Anomaly Agglomerations for Locating Design Problems , 2016, 2016 IEEE/ACM 38th International Conference on Software Engineering (ICSE).

[3]  Romain Rouvoy,et al.  An Empirical Study of the Performance Impacts of Android Code Smells , 2016, 2016 IEEE/ACM International Conference on Mobile Software Engineering and Systems (MOBILESoft).

[4]  Francesca Arcelli Fontana,et al.  Investigating the impact of code smells debt on quality code evaluation , 2012, 2012 Third International Workshop on Managing Technical Debt (MTD).

[5]  Alessandro F. Garcia,et al.  When Code-Anomaly Agglomerations Represent Architectural Problems? An Exploratory Study , 2014, 2014 Brazilian Symposium on Software Engineering.

[6]  Stéphane Ducasse,et al.  Object-Oriented Metrics in Practice , 2005 .

[7]  Yann-Gaël Guéhéneuc,et al.  Support vector machines for anti-pattern detection , 2012, 2012 Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering.

[8]  Claes Wohlin,et al.  Guidelines for snowballing in systematic literature studies and a replication in software engineering , 2014, EASE '14.

[9]  Eduardo Figueiredo,et al.  A review-based comparative study of bad smell detection tools , 2016, EASE.

[10]  Gunter Saake,et al.  When code smells twice as much: Metric-based detection of variability-aware code smells , 2015, 2015 IEEE 15th International Working Conference on Source Code Analysis and Manipulation (SCAM).

[11]  Houari A. Sahraoui,et al.  Deviance from perfection is a better criterion than closeness to evil when identifying risky code , 2010, ASE.

[12]  Lisa Börjesson,et al.  Research outside academia? – An analysis of resources in extra‐academic report writing , 2016, ASIST.

[13]  Baowen Xu,et al.  Detecting Code Smells in Python Programs , 2016, 2016 International Conference on Software Analysis, Testing and Evolution (SATE).

[14]  Gabriele Bavota,et al.  On the diffuseness and the impact on maintainability of code smells: a large scale empirical investigation , 2018, Empirical Software Engineering.

[15]  Thomas J. Mowbray,et al.  AntiPatterns: Refactoring Software, Architectures, and Projects in Crisis , 1998 .

[16]  Arvinder Kaur,et al.  Predicting software change-proneness with code smells and class imbalance learning , 2016, 2016 International Conference on Advances in Computing, Communications and Informatics (ICACCI).

[17]  Felienne Hermans,et al.  Do code smells hamper novice programming? A controlled experiment on Scratch programs , 2016, 2016 IEEE 24th International Conference on Program Comprehension (ICPC).

[18]  Dilan Sahin,et al.  A Multi-Level Framework for the Detection, Prioritization and Testing of Software Design Defects , 2016 .

[19]  Zhen Ming Jiang,et al.  Characterizing and Detecting Anti-Patterns in the Logging Code , 2017, 2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE).

[20]  Francesca Arcelli Fontana,et al.  Towards a prioritization of code debt: A code smell Intensity Index , 2015, 2015 IEEE 7th International Workshop on Managing Technical Debt (MTD).

[21]  Andrea De Lucia,et al.  Investigating code smell co-occurrences using association rule learning: A replicated study , 2017, 2017 IEEE Workshop on Machine Learning Techniques for Software Quality Evaluation (MaLTeSQuE).

[22]  Andrea De Lucia,et al.  [Journal First] The Scent of a Smell: An Extensive Comparison Between Textual and Structural Smells , 2018, 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE).

[23]  Daniela Cruzes,et al.  The evolution and impact of code smells: A case study of two open source systems , 2009, 2009 3rd International Symposium on Empirical Software Engineering and Measurement.

[24]  Alessandro F. Garcia,et al.  On the Relevance of Code Anomalies for Identifying Architecture Degradation Symptoms , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[25]  Pearl Brereton,et al.  Performing systematic literature reviews in software engineering , 2006, ICSE.

[26]  Mika Mäntylä,et al.  Bad smells - humans as code critics , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[27]  Bayu Hendradjaya,et al.  A proposal of software maintainability model using code smell measurement , 2015, 2015 International Conference on Data and Software Engineering (ICoDSE).

[28]  Eduardo Figueiredo,et al.  Detecting Code Smells in Software Product Lines -- An Exploratory Study , 2015, 2015 12th International Conference on Information Technology - New Generations.

[29]  Eduardo Figueiredo,et al.  Defining metric thresholds for software product lines: a comparative study , 2015, SPLC.

[30]  Gabriele Bavota,et al.  Landfill: An Open Dataset of Code Smells with Public Evaluation , 2015, 2015 IEEE/ACM 12th Working Conference on Mining Software Repositories.

[31]  Iftekhar Ahmed,et al.  Understanding Code Smells in Android Applications , 2016, 2016 IEEE/ACM International Conference on Mobile Software Engineering and Systems (MOBILESoft).

[32]  Marcelo de Almeida Maia,et al.  A Systematic Literature Review on Bad Smells–5 W's: Which, When, What, Who, Where , 2018, IEEE Transactions on Software Engineering.

[33]  Katsuro Inoue,et al.  Multi-Criteria Code Refactoring Using Search-Based Software Engineering , 2016, ACM Trans. Softw. Eng. Methodol..

[34]  Andrea De Lucia,et al.  A textual-based technique for Smell Detection , 2016, 2016 IEEE 24th International Conference on Program Comprehension (ICPC).

[35]  Marouane Kessentini,et al.  Detecting Android Smells Using Multi-Objective Genetic Programming , 2017, 2017 IEEE/ACM 4th International Conference on Mobile Software Engineering and Systems (MOBILESoft).

[36]  Andy Zaidman,et al.  Evaluating the Lifespan of Code Smells using Software Repository Mining , 2012, 2012 16th European Conference on Software Maintenance and Reengineering.

[37]  Rainer Koschke,et al.  Empirical evaluation of clone detection using syntax suffix trees , 2008, Empirical Software Engineering.

[38]  Eduardo Figueiredo,et al.  A Method to Derive Metric Thresholds for Software Product Lines , 2015, 2015 29th Brazilian Symposium on Software Engineering.

[39]  Pierre Poulin,et al.  Visual Detection of Design Anomalies , 2008, 2008 12th European Conference on Software Maintenance and Reengineering.

[40]  Baldoino Fonseca dos Santos Neto,et al.  Experience report: Evaluating the effectiveness of decision trees for detecting code smells , 2015, 2015 IEEE 26th International Symposium on Software Reliability Engineering (ISSRE).

[41]  P. Danphitsanuphan,et al.  Code Smell Detecting Tool and Code Smell-Structure Bug Relationship , 2012, 2012 Spring Congress on Engineering and Technology.

[42]  Yann-Gaël Guéhéneuc,et al.  DECOR: A Method for the Specification and Detection of Code and Design Smells , 2010, IEEE Transactions on Software Engineering.

[43]  Gabriele Bavota,et al.  Detecting bad smells in source code using change history information , 2013, 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[44]  Chitsutha Soomlek,et al.  Automated detection of code smells caused by null checking conditions in Java programs , 2016, 2016 13th International Joint Conference on Computer Science and Software Engineering (JCSSE).

[45]  Gabriele Bavota,et al.  Mining Version Histories for Detecting Code Smells , 2015, IEEE Transactions on Software Engineering.

[46]  Foutse Khomh,et al.  An Exploratory Study of the Impact of Code Smells on Software Change-proneness , 2009, 2009 16th Working Conference on Reverse Engineering.

[47]  Katsuro Inoue,et al.  Improving multi-objective code-smells correction using development history , 2015, J. Syst. Softw..

[48]  Shanping Li,et al.  An Empirical Study of Long Method and God Method in Industrial Projects , 2015, 2015 30th IEEE/ACM International Conference on Automated Software Engineering Workshop (ASEW).

[49]  Tibor Gyimóthy,et al.  A Case Study of Refactoring Large-Scale Industrial Systems to Efficiently Improve Source Code Quality , 2014, ICCSA.

[50]  Jose Pereira dos Reis,et al.  Code Smells Incidence: Does It Depend on the Application Domain? , 2016, 2016 10th International Conference on the Quality of Information and Communications Technology (QUATIC).

[51]  Amin Milani Fard,et al.  JSNOSE: Detecting JavaScript Code Smells , 2013, 2013 IEEE 13th International Working Conference on Source Code Analysis and Manipulation (SCAM).

[52]  Mika Mäntylä,et al.  Comparing and experimenting machine learning techniques for code smell detection , 2015, Empirical Software Engineering.

[53]  Aiko Yamashita,et al.  Assessing the capability of code smells to explain maintenance problems: an empirical study combining quantitative and qualitative data , 2013, Empirical Software Engineering.

[54]  Thierry Lavoie,et al.  Automated type-3 clone oracle using Levenshtein metric , 2011, IWSC '11.

[55]  G. Bavota,et al.  A Validated Set of Smells in Model-View-Controller Architectures , 2016, ICSME.

[56]  Aiko Fallas Yamashita,et al.  To what extent can maintenance problems be predicted by code smell detection? - An empirical study , 2013, Inf. Softw. Technol..

[57]  Francesca Arcelli Fontana,et al.  Inter-smell relations in industrial and open source systems: A replication and comparative analysis , 2015, 2015 IEEE International Conference on Software Maintenance and Evolution (ICSME).

[58]  Foutse Khomh,et al.  A Bayesian Approach for the Detection of Code and Design Smells , 2009, 2009 Ninth International Conference on Quality Software.

[59]  Mauricio A. Saca Refactoring improving the design of existing code , 2017, 2017 IEEE 37th Central America and Panama Convention (CONCAPAN XXXVII).

[60]  Radu Marinescu,et al.  Detecting design flaws via metrics in object-oriented systems , 2001, Proceedings 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems. TOOLS 39.

[61]  Tracy Hall,et al.  Code Bad Smells: a review of current knowledge , 2011, J. Softw. Maintenance Res. Pract..

[62]  Diomidis Spinellis,et al.  A survey on software smells , 2018, J. Syst. Softw..