[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
review-article

Software smell detection techniques: : A systematic literature review

Published: 03 March 2021 Publication History

Abstract

Software smells indicate design or code issues that might degrade the evolution and maintenance of software systems. Detecting and identifying these issues are challenging tasks. This paper explores, identifies, and analyzes the existing software smell detection techniques at design and code levels. We carried out a systematic literature review (SLR) to identify and collect 145 primary studies related to smell detection in software design and code. Based on these studies, we address several questions related to the analysis of the existing smell detection techniques in terms of abstraction level (design or code), targeted smells, used metrics, implementation, and validation. Our analysis identified several detection techniques categories. We observed that 57% of the studies did not use any performance measures, 41% of them omitted details on the targeted programing language, and the detection techniques were not validated in 14% of these studies. With respect to the abstraction level, only 18% of the studies addressed bad smell detection at the design level. This low coverage urges for more focus on bad smell detection at the design level to handle them at early stages. Finally, our SLR brings to the attention of the research community several opportunities for future research.

Graphical Abstract

Identified and collected 145 primary studies (PS) related to smell detection in software design and code.
Identified several detection techniques categories.
Observed that 57% of the studies did not use any performace measures.
41% of the PSs omitted details on the targeted programing language.
Detection techniques were not validated in 14% of the PSs.
Only 18% of the studies addressed bad smell detection at the design level.
Identified a number of open issues.

References

[1]
Tufano M, Palomba F, Bavota G, et al. When and why your code starts to smell bad. Proceedings of the 37th International Conference on Software Engineering‐Volume 1. 2015;403‐414. IEEE Press
[2]
Fowler M, Beck K, Brant J, Opdyke W, Roberts D. Refactoring: improving the design of existing code. Addison‐Wesley Professional; 1999.
[3]
Yamashita A. Assessing the capability of code smells to explain maintenance problems: an empirical study combining quantitative and qualitative data. Empirical Software Engineering. 2014;19(4):1111‐1143.
[4]
Sharma T, Spinellis D. A survey on software smells. Journal of Systems and Software. 2018;138:158‐173.
[5]
Suryanarayana G, Samarthyam G, Sharma T. Refactoring for software design smells: managing technical debt. Morgan Kaufmann; 2014.
[6]
Paiva T, Damasceno A, Figueiredo E, and Sant'Anna C, "On the evaluation of code smells and detection tools," Journal of Software Engineering Research and Development. 2017;5(7):1‐28.
[7]
Roy CK, Cordy JR. A survey on software clone detection research. Queen's School of Computing TR. 2007;541(115):64‐68.
[8]
Koschke R. Survey of research on software clones. In: Dagstuhl Seminar Proceedings. Schloss Dagstuhl‐Leibniz‐Zentrum für Informatik; 2007.
[9]
Bellon S, Koschke R, Antoniol G, Krinke J, Merlo E. Comparison and evaluation of clone detection tools. IEEE Transactions on Software Engineering. 2007;33(9):577‐591.
[10]
Fontana FA, Mariani E, Mornioli A, Sormani R, Tonello A. An experience report on using code smells detection tools. 2011 IEEE Fourth International Conference on Software Testing, Verification and Validation Workshops (ICSTW). 2011;450‐457. IEEE
[11]
Fernandes E, Oliveira J, Vale G, Paiva T, Figueiredo E. A review‐based comparative study of bad smell detection tools. Proceedings of the 20th International Conference on Evaluation and Assessment in Software Engineering. 2016;1‐12.
[12]
Rasool G, Arshad Z. A review of code smell mining techniques. Journal of Software: Evolution and Process. 2015;27(11):867‐895.
[13]
Sabir F, Palma F, Rasool G, Guéhéneuc YG, Moha N. A systematic literature review on the detection of smells and their evolution in object‐oriented and service‐oriented systems. Software: Practice and Experience. 2019;49(1):3‐39.
[14]
Zhang M, Hall T, Baddoo N. Code bad smells: a review of current knowledge. Journal of Software: Evolution and Process. 2011;23(3):179‐202.
[15]
Sobrinho EV de P, De Lucia A, Maia M de A. A systematic literature review on bad smells — 5 W's: which, when, what, who, where. IEEE Transactions on Software Engineering. 2018;1–. https://doi.org/10.1109/tse.2018.2880977
[16]
Misbhauddin M, Alshayeb M. UML model refactoring: a systematic literature review. Empirical Software Engineering. 2015;20(1):206‐251.
[17]
Al Dallal J. Identifying refactoring opportunities in object‐oriented code: a systematic literature review. Information and Software Technology. 2015;58:231‐249.
[18]
Azeem MI, Palomba F, Shi L, Wang Q. Machine learning techniques for code smell detection: a systematic literature review and meta‐analysis. Information and Software Technology. 2019;108:115‐138.
[19]
Caram FL, Rodrigues BR, Campanelli AS, Parreiras FS. Machine learning techniques for code smells detection: a systematic mapping study. International Journal of Software Engineering and Knowledge Engineering. 2019;29(02):285‐316.
[20]
Kitchenham B and Charters S, Guidelines for performing Systematic Literature Reviews in Software Engineering. 2007.
[21]
Kitchenham BA, Budgen D, Brereton P. Evidence‐Based Software Engineering and Systematic Reviews. Chapman & Hall/CRC Innovations in Software Engineering and Software Development Series. CRC Press; 2015.
[22]
Chen L, Babar M, and Zhang H, "Towards an evidence‐based understanding of electronic data sources," 2010.
[23]
Brereton P, Kitchenham BA, Budgen D, Turner M, Khalil M. Lessons from applying the systematic literature review process within the software engineering domain. Journal of Systems and Software. 2007;80(4):571‐583.
[24]
Chen SH, Jakeman AJ, Norton JP. Artificial intelligence techniques: an introduction to their use for modelling environmental systems. Mathematics and Computers in Simulation. 2008;78(2‐3):379‐400.
[25]
Feldt R, de Oliveira Neto FG, Torkar R. Ways of applying artificial intelligence in software engineering. 2018 IEEE/ACM 6th International Workshop on Realizing Artificial Intelligence Synergies in Software Engineering (RAISE), Gothenburg. 2018;35‐41.
[26]
Hayes‐Roth F. Rule‐based systems. Communications of the ACM. 1985;28(9):921‐932.
[27]
Barghouti NS and Kaiser GE, "Scaling up rule‐based software development environments," in European Software Engineering Conference, 1991, pp. 380‐395: Springer.
[28]
Srinath S. "URA:" a paradigm for context sensitive reuse. In: A Thesis of Master of Science & Engineering. Madras, India: Indian Institute of Technology; 1998.
[29]
Ferrante J, Ottenstein KJ, Warren JD. The program dependence graph and its use in optimization. ACM Transactions on Programming Languages and Systems (TOPLAS). 1987;9(3):319‐349.
[30]
Li W. Software product metrics. IEEE Potentials. 1999;18(5):24‐27.
[31]
Harrison R, Counsell SJ, Nithi RV. An evaluation of the MOOD set of object‐oriented software metrics. IEEE Transactions on Software Engineering. 1998;24(6):491‐496.
[32]
Rattan D, Bhatia R, Singh M. Software clone detection: a systematic review. Information and Software Technology. 2013;55(7):1165‐1199.
[33]
McCreight EM. A space‐economical suffix tree construction algorithm. Journal of the ACM (JACM). 1976;23(2):262‐272.
[34]
Zhang D, Tsai JJ. Machine learning and software engineering. Software Quality Journal. 2003;11(2):87‐119.
[35]
Mitchell TM. Does machine learning really work? AI magazine. 1997;18(3):11‐20.
[36]
Huang X, Miller W. A time‐efficient, linear‐space local similarity algorithm. Advances in Applied Mathematics. 1991;12(3):337‐357.
[37]
Zitzler E, Thiele L. Multiobjective evolutionary algorithms: a comparative case study and the strength Pareto approach. IEEE Transactions on Evolutionary Computation. 1999;3(4):257‐271.
[38]
Grosan C, Abraham A. Hybrid evolutionary algorithms: methodologies, architectures, and reviews. In: Hybrid evolutionary algorithms. Springer; 2007:1‐17.
[39]
Monperrus M, "The multiple goals and data in data‐mining for software engineering," 2018.
[40]
Han J, Pei J, Kamber M. Data mining: concepts and techniques. Elsevier; 2011.
[41]
Murphy‐Hill ER, Quitslund PJ, Black AP, "Removing duplication from java.io: a case study using traits," presented at the Companion to the 20th Annual ACM SIGPLAN Conference on Object‐Oriented Programming, Systems, Languages, and Applications, San Diego, CA, USA, 2005, 282‐291.
[42]
Duala‐Ekoko E, Robillard MP, "Tracking code clones in evolving software," presented at the Proceedings of the 29th International Conference on Software Engineering, 2007;158‐168.
[43]
Zibran MF, Roy CK"Towards flexible code clone detection, management, and refactoring in IDE," presented at the Proceedings of the 5th International Workshop on Software Clones, Waikiki, Honolulu, HI, USA, 2011;75‐76.
[44]
Maiga A, Ali N, Bhattacharya N, Sabané A, Guéhéneuc YG, Aimeur E. SMURF: a SVM‐based incremental anti‐pattern detection approach. 2012 19th Working Conference on Reverse Engineering. 2012;466‐475.
[45]
Hozano M, Garcia A, Antunes N, Fonseca B, Costa E. Smells are sensitive to developers! On the efficiency of (un)guided customized detection. 2017 IEEE/ACM 25th International Conference on Program Comprehension (ICPC). 2017;110‐120.
[46]
Arnaoudova V, Di Penta M, Antoniol G, Gueheneuc YG. A new family of software anti‐patterns: Linguistic anti‐patterns. 2013 17th European Conference on Software Maintenance and Reengineering. 2013;187‐196.
[47]
Salehie M, Li S, Tahvildari L. A metric‐based heuristic framework to detect object‐oriented design flaws. 14th IEEE International Conference on Program Comprehension (ICPC'06). 2006;159‐168.
[48]
Fontana FA, Zanoni M, Marino A, Mäntylä MV. Code smell detection: towards a machine learning‐based approach. 2013 IEEE International Conference on Software Maintenance. 2013;396‐399.
[49]
Muenchaisri NMP. Bad‐smell prediction from software design model using machine learning techniques. 2011 Eighth International Joint Conference on Computer Science and Software Engineering (JCSSE). 2011;331‐336.
[50]
Ouni MKA. Detecting android smells using multi‐objective genetic programming. 2017 IEEE/ACM 4th International Conference on Mobile Software Engineering and Systems (MOBILESoft). 2017;122‐132.
[51]
Palomba F, Bavota G, Di Penta M, Oliveto R, De Lucia A, Poshyvanyk D. Detecting bad smells in source code using change history information. 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE). 2013;268‐278.
[52]
White M, Tufano M, Vendome C, Poshyvanyk D. Deep learning code fragments for code clone detection. 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE). 2016;87‐98.
[53]
Shen SFB. Code bad smell detection through evolutionary data mining. 2015 ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM). 2015;1‐9.
[54]
Kreimer J, "Adaptive detection of design flaws," Electronic Notes in Theoretical Computer Science, Conference Paper vol. 141, no. 4 SPEC. ISS., pp. 117‐136, 2005.
[55]
Fontana FA, Mäntylä MV, Zanoni M, Marino A, "Comparing and experimenting machine learning techniques for code smell detection," Empirical Software Engineering, journal article vol. 21, no. 3, pp. 1143‐1191, June 01 2016.
[56]
Ghannem A, El Boussaidi G, Kessentini M "On the use of design defect examples to detect model refactoring opportunities," Software Quality Journal, journal article vol. 24, no. 4, pp. 947‐965, December 01 2016.
[57]
Mansoor U, Kessentini M, Maxim BR, Deb K, "Multi‐objective code‐smells detection using good and bad design examples," Software Quality Journal, vol. 25, no. 2, pp. 529‐552, June 01 2017.
[58]
Moha N, Guéhéneuc YG, Le Meur AF, Duchien L, Tiberghien A "From a domain analysis to the specification and detection of code and design smells," Formal Aspects of Computing, 22, 3, pp. 345‐361, May 01 2010.
[59]
Fontana FA, Zanoni M "Code smell severity classification using machine learning techniques," Knowledge‐Based Systems, vol. 128, pp. 43‐58, 7/15/ 2017.
[60]
Basit HA and Jarzabek S, "Detecting higher‐level similarity patterns in programs," in ACM Sigsoft Software Engineering Notes, 2005, vol. 30, no. 5, pp. 156‐165: ACM.
[61]
Basit HA, Jarzabek S. A data mining approach for detecting higher‐level clones in software. IEEE Trans Softw Eng. 2009;35(4):497‐514.
[62]
Boussaa M, Kessentini W, Kessentini M, Bechikh S, Chikha SB. Competitive coevolutionary code‐smells detection. In: International Symposium on Search Based Software Engineering. Berlin, Heidelberg: Springer; 2013:50‐65.
[63]
Chen K, Liu P, Zhang Y. Achieving accuracy and scalability simultaneously in detecting application clones on android markets. Proceedings of the 36th International Conference on Software Engineering. 2014;175‐186. ACM
[64]
Davey N, Barson P, Field S, Frank R, Tansley D. The development of a software clone detector. International Journal of Applied Software Technology. 1995;219‐236.
[65]
Kessentini W, Kessentini M, Sahraoui H, Bechikh S, Ouni A. A cooperative parallel search‐based software engineering approach for code‐smells detection. IEEE Transactions on Software Engineering. 2014;40(9):841‐861.
[66]
Li Z, Lu S, Myagmar S, and Zhou Y, "CP‐Miner: a tool for finding copy‐paste and related bugs in operating system code," presented at the Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation ‐ Volume 6, San Francisco, CA, 2004;289‐302.
[67]
Maiga A, Ali N, Bhattacharya N, et al. Support vector machines for anti‐pattern detection. Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering. 2012;278‐281. ACM
[68]
Prechelt L, Malpohl G, Philippsen M. Finding plagiarisms among a set of programs with JPlag. J. UCS. 2002;8(11):1016‐1038.
[69]
Sahin D, Kessentini M, Bechikh S, Deb K. Code‐smell detection as a bilevel problem. ACM Transactions on Software Engineering and Methodology (TOSEM). 2014;24(1):6‐6.
[70]
Kim DK. Finding bad code smells with neural network models. International Journal of Electrical and Computer Engineering (IJECE). 2017;7(6):3613‐3621.
[71]
Birov TCD, "Duplicate code detection algorithm," presented at the Proceedings of the 16th International Conference on Computer Systems and Technologies, Dublin, Ireland, 2015;104‐111.
[72]
Hecht G, Rouvoy R, Moha N, Duchien L, "Detecting antipatterns in Android apps," presented at the Proceedings of the Second ACM International Conference on Mobile Software Engineering and Systems, Florence, Italy, 2015;148‐149.
[73]
Hecht G, "An approach to detect Android antipatterns," presented at the Proceedings of the 37th International Conference on Software Engineering ‐ Volume 2, Florence, Italy, 2015;766‐768.
[74]
Dubey SK, Sharma A. Comparison study and review on object‐oriented metrics. Global Journal of Computer Science and Technology. 2012;12(7):1‐10.
[75]
Gabel M, Jiang L, Su Z, "Scalable detection of semantic clones," presented at the Proceedings of the 30th international conference on Software engineering, Leipzig, Germany. 2008;321‐330.
[76]
Tekin U, Erdemir U, Buzluca F. Mining object‐oriented design models for detecting identical design structures. 2012 6th International Workshop on Software Clones (IWSC). 2012;43‐49.
[77]
Kaur H, Kaur PJ. A GUI based unit testing technique for antipattern identification. 2014 5th International Conference ‐ Confluence The Next Generation Information Technology Summit (Confluence). 2014;779‐782.
[78]
Ujihara N, Ouni A, Ishio T, Inoue K. c‐JRefRec: change‐based identification of Move Method refactoring opportunities. SANER 2017‐24th IEEE International Conference on Software Analysis, Evolution, and Reengineering. 2017;482‐486.
[79]
Khomh F, Vaucher S, Guéhéneuc YG, Sahraoui H "BDTEX: a GQM‐based Bayesian approach for the detection of antipatterns," Journal of Systems and Software, vol. 84, no. 4, pp. 559‐572, 4// 2011.
[80]
Krinke J, "Identifying similar code with program dependence graphs," presented at the Proceedings of the Eighth Working Conference on Reverse Engineeringv (WCRE'01), 2001;301‐309.
[81]
Li J, Ernst MD. CBCD: cloned buggy code detector. 2012 34th International Conference onSoftware Engineering (ICSE). 2012;310‐320. IEEE
[82]
Liu H, Shao WZ, Zhang L, Ma ZY. Detecting overlapping use cases. IET Software. 2007;1(1):29‐36.
[83]
Nguyen HA, Nguyen TT, Pham NH, Al‐Kofahi JM, Nguyen TN. Accurate and efficient structural characteristic feature extraction for clone detection. Berlin, Heidelberg: Springer Berlin Heidelberg; 2009:440‐455.
[84]
Qu W, Jiang M, Jia Y. Software reuse detection using an integrated space‐logic domain model. Information Reuse and Integration, 2007. IRI 2007. IEEE International Conference on. 2007;638‐643. IEEE
[85]
Rao AA and Reddy KN, "Detecting bad smells in object oriented design using design change propagation probability matrix 1," 2007.
[86]
Störrle H, "Towards clone detection in UML domain models," Software & Systems Modeling, Journal Article vol. 12, no. 2, pp. 307‐329, 2013.
[87]
Charalampidou S, Ampatzoglou A, Avgeriou P, "Size and cohesion metrics as indicators of the long method bad smell: an empirical study," presented at the Proceedings of the 11th International Conference on Predictive Models and Data Analytics in Software Engineering, Beijing, China, 2015;1‐10.
[88]
Bertran IM, "Detecting architecturally‐relevant code smells in evolving software systems," presented at the Proceedings of the 33rd International Conference on Software Engineering, Waikiki, Honolulu, HI, USA. 2011;1090‐1093.
[89]
Singh S, Kahlon KS. Effectiveness of encapsulation and object‐oriented metrics to refactor code and identify error prone classes using bad smells. SIGSOFT Softw. Eng. Notes. 2011;36(5):1‐10.
[90]
Singh S, Kahlon KS. Effectiveness of refactoring metrics model to identify smelly and error prone classes in open source software. SIGSOFT Softw Eng Notes. 2012;37(2):1‐11.
[91]
Sager T, Bernstein A, Pinzger M, Kiefer C, "Detecting similar Java classes using tree algorithms," presented at the Proceedings of the 2006 International Workshop on Mining Software Repositories, Shanghai, China, 2006;65‐71.
[92]
Rahman MS, Aryani A, Roy CK, Perin F, "On the relationships between domain‐based coupling and code clones: an exploratory study," presented at the Proceedings of the 2013 International Conference on Software Engineering, San Francisco, CA, USA, 2013;1265‐1268.
[93]
Reddy KR, Rao AA. Dependency oriented complexity metrics to detect rippling related design defects. SIGSOFT Softw. Eng. Notes. 2009;34(4):1‐7.
[94]
Choi E, Yoshida N, Ishio T, Inoue K, Sano T, "Extracting code clones for refactoring using combinations of clone metrics," presented at the Proceedings of the 5th International Workshop on Software Clones, Waikiki, Honolulu, HI, USA. 2011;7‐13.
[95]
Saboury A, Musavi P, Khomh F, Antoniol G. An empirical study of code smells in JavaScript projects. 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER). 2017;294‐305.
[96]
Sousa BL, Souza PP, Fernandes EM, Ferreira KA, Bigonha MA. FindSmells: flexible composition of bad smell detection strategies. 2017 IEEE/ACM 25th International Conference on Program Comprehension (ICPC). 2017;360‐363.
[97]
Oliveto R, Khomh F, Antoniol G, Gueheneuc YG. Numerical signatures of antipatterns: an approach based on b‐splines. 2010 14th European Conference on Software Maintenance and Reengineering. 2010;248‐251.
[98]
Vaucher S, Khomh F, Moha N, Guéhéneuc YG. Tracking design smells: lessons from a study of god classes. 2009 16th Working Conference on Reverse Engineering. 2009;145‐154.
[99]
Rapu D, Ducasse S, Gîrba T, Marinescu R. Using history information to improve design flaws detection. Eighth European Conference on Software Maintenance and Reengineering, 2004. CSMR 2004. Proceedings. 2004;223‐232.
[100]
Fard AM, Mesbah A. JSNOSE: detecting JavaScript code smells. 2013 IEEE 13th International Working Conference on Source Code Analysis and Manipulation (SCAM). 2013;116‐125.
[101]
Vidal S, Vazquez H, Diaz‐Pace JA, Marcos C, Garcia A, Oizumi W. JSpIRIT: a flexible tool for the analysis of code smells. 2015 34th International Conference of the Chilean Computer Science Society (SCCC). 2015;1‐6.
[102]
Dhambri K, Sahraoui H, Poulin P. Visual detection of design anomalies. 2008 12th European Conference on Software Maintenance and Reengineering. 2008;279‐283.
[103]
Devi DG, Punithavalli M. A hierarchical method for detecting codeclone. 2011 3rd International Conference on Electronics Computer Technology. 2011;1:126‐128.
[104]
Aras MT, Selçuk YE. Metric and rule based automated detection of antipatterns in object‐oriented software systems. 2016 7th International Conference on Computer Science and Information Technology (CSIT). 2016;1‐6.
[105]
Danphitsanuphan P, Suwantada T. Code smell detecting tool and code smell‐structure bug relationship. 2012 Spring Congress on Engineering and Technology. 2012;1‐5.
[106]
Chen Z, Chen L, Ma W, Xu B. Detecting code smells in Python programs. 2016 International Conference on Software Analysis, Testing and Evolution (SATE). 2016;18‐23.
[107]
Fontana FA, Pigazzini I, Roveda R, Zanoni M. Automatic detection of instability architectural smells. 2016 IEEE International Conference on Software Maintenance and Evolution (ICSME). 2016;433‐437.
[108]
Bryton S, Abreu FB, Monteiro M. Reducing subjectivity in code smells detection: experimenting with the Long Method. Proceedings ‐ 7th International Conference on the Quality of Information and Communications Technology, QUATIC 2010. 2010;337‐342.
[109]
Dexun J, Peijun M, Xiaohong S, Tiantian W. Detecting bad smells with weight based distance metrics theory. Proceedings of the 2012 2nd International Conference on Instrumentation and Measurement, Computer, Communication and Control, IMCCC 2012. 2012;299‐304.
[110]
Nongpong K. Feature envy factor: a metric for automatic feature envy detection. Proceedings of the 2015‐7th International Conference on Knowledge and Smart Technology, KST 2015. 2015;7‐12.
[111]
Velioğlu S, Selçuk YE. An automated code smell and anti‐pattern detection approach. Proceedings ‐ 2017 15th IEEE/ACIS International Conference on Software Engineering Research, Management and Applications, SERA 2017. 2017;271‐275.
[112]
Walter B, Pietrzak B. Multi‐criteria detection of bad smells in code with UTA method. Lecture Notes in Computer Science. 2005;3556:154‐161.
[113]
Wang T, Wang K, Su X, Ma P "Detection of semantically similar code," Frontiers of Computer Science, journal article vol. 8, no. 6, pp. 996‐1011, December 01 2014.
[114]
Chen Z, Chen L, Ma W, Zhou X, Zhou Y, Xu B"Understanding metric‐based detectable smells in Python software: a comparative study," Information and Software Technology, vol. 94, pp. 14‐29, 2// 2018.
[115]
Fourati R, Bouassida N, Abdallah HB. A metric‐based approach for anti‐pattern detection in UML designs. In: Computer and Information Science 2011. Springer; 2011:17‐33.
[116]
Marinescu R, "Detecting design flaws via metrics in object‐oriented systems," presented at the Proceedings of the 39th International Conference and Exhibition on Technology of Object‐Oriented Languages and Systems (TOOLS39), 2001;173‐182.
[117]
Hozano M, Ferreira H, Silva I, Fonseca B, Costa E, "Using developers' feedback to improve code smell detection," presented at the Proceedings of the 30th Annual ACM Symposium on Applied Computing, Salamanca, Spain, 2015;1661‐1663.
[118]
Arcoverde R, Macia I, Garcia A, Von Staa A, "Automatically detecting architecturally‐relevant code anomalies," presented at the Proceedings of the Third International Workshop on Recommendation Systems for Software Engineering, Zurich, Switzerland, 2012;90‐91.
[119]
Palomba F, Di Nucci D, Panichella A, Zaidman A, De Lucia A. Lightweight detection of Android‐specific code smells: the adoctor project. 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER). 2017;487‐491.
[120]
Marinescu R. Detection strategies: metrics‐based rules for detecting design flaws. 20th IEEE International Conference on Software Maintenance, 2004. Proceedings. 2004;350‐359.
[121]
Marinescu R. Assessing technical debt by identifying design flaws in software systems. IBM Journal of Research and Development. 2012;56(5):9:1‐9:13.
[122]
Mekruksavanich S, Muenchaisri P. Using declarative meta programming for design flaws detection in object‐oriented software. 2009 International Conference on Signal Processing Systems. 2009;502‐507.
[123]
Munro MJ. Product metrics for automatic identification of "bad smell" design problems in Java source‐code. 11th IEEE International Software Metrics Symposium (METRICS'05). 2005;15‐15.
[124]
Khomh F, Vaucher S, Guéhéneuc YG, Sahraoui H. A Bayesian approach for the detection of code and design smells. 2009 Ninth International Conference on Quality Software. 2009;305‐314.
[125]
Peldszus S, Kulcsár G, Lochau M, Schulze S. Continuous detection of design flaws in evolving object‐oriented programs using incremental multi‐pattern matching. 2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE). 2016;578‐589.
[126]
Stoianov A, Şora I. Detecting patterns and antipatterns in software using Prolog rules. 2010 International Joint Conference on Computational Cybernetics and Technical Informatics. 2010;253‐258.
[127]
Macia I, Arcoverde R, Cirilo E, Garcia A, von Staa A. Supporting the identification of architecturally‐relevant code anomalies. 2012 28th IEEE International Conference on Software Maintenance (ICSM). 2012;662‐665.
[128]
Fontana FA, Ferme V, Zanoni M. Towards assessing software architecture quality by exploiting code smell relations. 2015 IEEE/ACM 2nd International Workshop on Software Architecture and Metrics. 2015;1‐7.
[129]
Kumar S, Chhabra JK. Two level dynamic approach for Feature Envy detection. Proceedings ‐ 5th IEEE International Conference on Computer and Communication Technology, ICCCT 2014. 2014;41‐46.
[130]
Polášek I, Snopko S, Kapustík I. Automatic identification of the anti‐patterns using the rule‐based approach. 2012 IEEE 10th Jubilee International Symposium on Intelligent Systems and Informatics, SISY 2012. 2012;283‐286.
[131]
Amorim L, Costa E, Antunes N, Fonseca B, Ribeiro M. Experience report: evaluating the effectiveness of decision trees for detecting code smells. 2015 IEEE 26th International Symposium onSoftware Reliability Engineering (ISSRE). 2015;261‐269. IEEE
[132]
Fontana FA, Ferme V, Zanoni M, Yamashita A. Automatic metric thresholds derivation for code smell detection. 2015 IEEE/ACM 6th International Workshop onEmerging Trends in Software Metrics (WETSoM). 2015;44‐53. IEEE
[133]
Moha N, Gueheneuc YG, Duchien L, Le Meur AF. DECOR: a method for the specification and detection of code and design smells. IEEE Trans. Softw. Eng. 2010;36(1):20‐36.
[134]
Palomba F, Bavota G, Di Penta M, Oliveto R, Poshyvanyk D, De Lucia A. Mining version histories for detecting code smells. IEEE Transactions on Software Engineering. 2015;41(5):462‐489.
[135]
Higo Y, Kusumoto S, "Identifying clone removal opportunities based on co‐evolution analysis," presented at the Proceedings of the 2013 International Workshop on Principles of Software Evolution, Saint Petersburg, Russia, 2013;63‐67.
[136]
Mahajan G, Bharti M. Implementing a 3‐way approach of clone detection and removal using PC Detector tool. 2014 IEEE International Advance Computing Conference (IACC). 2014;1435‐1441.
[137]
Antony EP, Alalfi MH, Cordy JR. An approach to clone detection in behavioural models. 2013 20th Working Conference on Reverse Engineering (WCRE). 2013;472‐476.
[138]
Liska P, Polasek I. Design smell detection with similarity scoring and fingerprinting: preliminary study. 2011 Second Eastern European Regional Conference on the Engineering of Computer Based Systems. 2011;163‐164.
[139]
Keivanloo I, Rilling J. Clone detection meets semantic web‐based transitive closure computation. 2012 First International Workshop on Realizing AI Synergies in Software Engineering (RAISE). 2012;12‐16.
[140]
Sirikul K, Soomlek C. Automated detection of code smells caused by null checking conditions in Java programs. 2016 13th International Joint Conference on Computer Science and Softwares Engineering (JCSSE). 2016;1‐7.
[141]
Cortellessa V, Martens A, Reussner R, Trubiani C. Performance antipatterns as logical predicates. 2010 15th IEEE International Conference on Engineering of Complex Computer Systems. 2010;146‐156.
[142]
Polášek I, Líška P, Kelemen J, Lang J. On extended similarity scoring and bit‐vector algorithms for design smell detection. INES 2012 ‐ IEEE 16th International Conference on Intelligent Engineering Systems, Proceedings. 2012;115‐120.
[143]
Koschke R, Falke R, Frenzel P, "Empirical evaluation of clone detection using syntax suffix trees," Empirical Software Engineering, journal article vol. 13, no. 6, pp. 601‐643, December 01 2008.
[144]
Baker BS. A program for identifying duplicated code. Computing Science and Statistics. 1993;49‐49.
[145]
Baker BS, "On finding duplication and near‐duplication in large software systems," presented at the Proceedings of the Second Working Conference on Reverse Engineering, 1995;86‐95.
[146]
Cordy JR, Dean TR, Synytskyy N. Practical language‐independent detection of near‐miss clones. Proceedings of the 2004 conference of the Centre for Advanced Studies on Collaborative Research. 2004;1‐12. IBM Press
[147]
Evans WS, Fraser CW, Ma F. Clone detection via structural abstraction. Software Quality Journal. 2009;17(4):309‐330.
[148]
Johnson JH, "Identifying redundancy in source code using fingerprints," presented at the Proceedings of the 1993 Conference of the Centre for Advanced Studies on Collaborative Research: Software Engineering ‐ Volume 1, Toronto, Ontario, Canada, 1993;171‐183.
[149]
Johnson JH. Substring matching for clone detection and change tracking. ICSM. 1994;94:120‐126.
[150]
Merlo E, Antoniol G, Di Penta M, Rollo VF. Linear complexity object‐oriented similarity for clone detection and software evolution analyses. 20th IEEE International Conference on,Software Maintenance, 2004. Proceedings. 2004, IEEE;412‐416.
[151]
Sajnani H, Saini V, Svajlenko J, Roy CK, Lopes CV. SourcererCC: scaling code clone detection to big‐code. 2016 IEEE/ACM 38th International Conference onSoftware Engineering (ICSE). 2016;1157‐1168. IEEE
[152]
Wahler V, Seipel D, Wolff J, Fischer G"Clone detection in source code by frequent itemset techniques," presented at the Proceedings of the Source Code Analysis and Manipulation, Fourth IEEE International Workshop, 2004;128‐135.
[153]
Ducasse S, Rieger M, Demeyer S. A language independent approach for detecting duplicated code. Proceedings of the IEEE International Conference on Software Maintenance, Washington, DC, USA. 1999. IEEE Computer Society 109‐118.
[154]
Dang Y, Zhang D, Ge S, Chu C, Qiu Y, Xie T "XIAO: tuning code clones at hands of engineers in practice," presented at the Proceedings of the 28th Annual Computer Security Applications Conference, Orlando, Florida, USA, 2012;369‐378.
[155]
Abebe SL, Haiduc S, Tonella P, Marcus A. Lexicon bad smells in software. 2009 16th Working Conference on Reverse Engineering. 2009;95‐99.
[156]
Palomba F. Textual analysis for code smell detection. 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering. 2015;2:769‐771.
[157]
Palomba F, Panichella A, De Lucia A, Oliveto R, Zaidman A. A textual‐based technique for smell detection. 2016 IEEE 24th International Conference on Program Comprehension (ICPC). 2016;1‐10.
[158]
Alalfi MH, Antony EP, Cordy JR, "An approach to clone detection in sequence diagrams and its application to security analysis," Software & Systems Modeling, journal article September 12 2016;1278‐1309.
[159]
Cortellessa V, Di Marco A, Trubiani C, "An approach for modeling and detecting software performance antipatterns based on first‐order logics," Software & Systems Modeling, journal article vol. 13, no. 1, pp. 391‐432, February 01 2014.
[160]
Rago A, Marcos C, Diaz‐Pace JA. Identifying duplicate functionality in textual use cases by aligning semantic actions. Software & Systems Modeling. 2016 May 1;15(2):579‐603
[161]
Tairas R, Gray J, "Phoenix‐based clone detection using suffix trees," presented at the Proceedings of the 44th Annual Southeast Regional Conference, Melbourne, Florida, 2006;679‐684.
[162]
Tairas R, "Clone detection and refactoring," presented at the Companion to the 21st ACM SIGPLAN Symposium on Object‐oriented Programming Systems, Languages, and Applications, Portland, Oregon, USA, 2006;780‐781.
[163]
Udagawa Y, "An empirical study on retrieving structural clones using sequence pattern mining algorithms," presented at the Proceedings of the 16th International Conference on Information Integration and Web‐based Applications; Services, Hanoi, Viet Nam, 2014;270‐276.
[164]
Sharma VS, Anwer S. Detecting performance antipatterns before migrating to the cloud. 2013 IEEE 5th International Conference on Cloud Computing Technology and Science. 2013;1:148‐151.
[165]
Sharma VS, Anwer S. Performance antipatterns: detection and evaluation of their effects in the cloud. 2014 IEEE International Conference on Services Computing. 2014;758‐765.
[166]
Fokaefs M, Tsantalis N, Chatzigeorgiou A. JDeodorant: identification and removal of feature envy bad smells. 2007 IEEE International Conference on Software Maintenance. 2007;519‐520.
[167]
Chen B, Jiang ZM. Characterizing and detecting anti‐patterns in the logging code. 2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE). 2017;71‐81.
[168]
Liu H, Ma Z, Zhang L, Shao W. Detecting duplications in sequence diagrams based on suffix trees. 2006 13th Asia Pacific Software Engineering Conference (APSEC'06). 2006;269‐276.
[169]
Liu H, Niu Z, Ma Z, Shao W. Suffix tree‐based approach to detecting duplications in sequence diagrams. IET Software. 2011;5(4):385‐397.
[170]
Techapalokul P, Tilevich E. Quality Hound; an online code smell analyzer for scratch programs. 2017 IEEE Symposium on Visual Languages and Human‐Centric Computing (VL/HCC). 2017;337‐338.
[171]
Kim TW, Kim TG, Seu JH. Specification and automated detection of code smells using OCL. International Journal of Software Engineering and its Applications. 2013;7(4):35‐44.
[172]
Ligu E, Chatzigeorgiou A, Chaikalis T, Ygeionomakis N. Identification of refused bequest code smells. IEEE International Conference on Software Maintenance, ICSM. 2013;392‐395.
[173]
Van Emden E, Moonen L"Java quality assurance by detecting code smells," in Proceedings ‐ Working Conference on Reverse Engineering, WCRE, 2002, vol. 2002‐January, pp. 97‐106.
[174]
Tekin U, Buzluca F "A graph mining approach for detecting identical design structures in object‐oriented design models," Science of Computer Programming, vol. 95, Part 4, pp. 406‐425, 12/1/ 2014.
[175]
Baxter ID, Yahin A, Moura L, Sant'Anna M, Bier L "Clone detection using abstract syntax trees," presented at the Proceedings of the International Conference on Software Maintenance, 1998;368‐377.
[176]
Greenan K. Method‐level code clone detection on transformed abstract syntax trees using sequence matching algorithms. Student Report, University of California‐Santa Cruz, Winter. 2005;1‐17.
[177]
Jiang L, Misherghi G, Su Z, Glondu S, "Deckard: acalable and accurate tree‐based detection of code clones," presented at the Proceedings of the 29th International Conference on Software Engineering, 2007;96‐105.
[178]
Kamiya T, Kusumoto S, Inoue K. CCFinder: a multilinguistic token‐based code clone detection system for large scale source code. IEEE Trans. Softw. Eng. 2002;28(7):654‐670.
[179]
Kontogiannis KA, DeMori R, Merlo E, Galler M, Bernstein M "Pattern matching for clone and concept detection," (in en), Automated Software Engineering, vol. 3, no. 1‐2, pp. 77‐108, 1996/06/01/ 1996.
[180]
Koschke R, Falke R, Frenzel P "Clone detection using abstract syntax suffix trees," presented at the Proceedings of the 13th Working Conference on Reverse Engineering, 2006;253‐262.
[181]
Rattan D, Bhatia R, Singh M. Model clone detection based on tree comparison. India Conference (INDICON), 2012 Annual IEEE. 2012;1041‐1046. IEEE
[182]
Cormen TH, Leiserson CE, Rivest RL, Stein C. Introduction to Algorithms. MIT Press; 2010.
[183]
Murphy‐Hill E, Black AP, "Seven habits of a highly effective smell detector," presented at the Proceedings of the 2008 International Workshop on Recommendation Systems for Software Engineering, Atlanta, Georgia, 2008;36‐40.
[184]
Murphy‐Hill E, Black AP, "An interactive ambient visualization for code smells," presented at the Proceedings of the 5th International Symposium on Software Visualization, Salt Lake City, Utah, USA, 2010;5‐14.
[185]
Jiang D, Ma P, Su X, Wang T. Distribution rule based bad smell detection and refactoring scheme. Journal of Computational Information Systems. 2014;10(4):1677‐1684.
[186]
Hassaine S, Khomh F, Guéhéneuc YG, Hamel S. IDS: an immune‐inspired approach for the detection of software design smells. 2010 Seventh International Conference on the Quality of Information and Communications Technology. 2010;343‐348.
[187]
Baresi L, Heckel R. Tutorial introduction to graph transformation: a software engineering perspective. International Conference on Graph Transformation. 2002;402‐429. Springer
[188]
Bray T, Paoli J, Sperberg‐McQueen CM, Maler E, Yergeau F "Extensible markup language (XML) 1.0," ed: W3C recommendation, 2008.
[189]
OMG, "Diagram definition, version 1.0," 2018‐05‐19 2012‐07‐01.
[190]
Egan JP, "Signal detection theory and {ROC} analysis," 1975.
[191]
Tufano M, Palomba F, Bavota G, et al. When and why your code starts to smell bad. 2015 IEEE/ACM 37th IEEE International Conference onSoftware Engineering (ICSE). 2015;1:403‐414. IEEE
[192]
Abbes M, Khomh F, Gueheneuc YG, Antoniol G. An empirical study of the impact of two antipatterns, blob and spaghetti code, on program comprehension. 2011 15th European Conference on Software Maintenance and Reengineering. 2011;181‐190. IEEE
[193]
Khomh F, Di Penta M, Gueheneuc YG. An exploratory study of the impact of code smells on software change‐proneness. 2009 16th Working Conference on Reverse Engineering. 2009;75‐84. IEEE
[194]
Yamashita A and aMoonen L, "Exploring the impact of inter‐smell relations in the maintainability of a system: an empirical study."
[195]
Mantyla M, Vanhanen J, Lassenius C. A taxonomy and an initial empirical study of bad smells in code. Proceedings. International Conference onSoftware Maintenance, 2003. ICSM 2003. 2003;381‐384. IEEE
[196]
Fenton N, Bieman J. Software Metrics: A Rigorous and Practical Approach. CRC Press; 2014.
[197]
Singh B, Kannojia SP. A review on software quality models. 2013 International Conference onCommunication Systems and Network Technologies (CSNT). 2013;801‐806. IEEE
[198]
McCall JA, Richards PK, Walters GF, "Factors in software quality. Volume i. Concepts and definitions of software quality," DTIC Document1977.
[199]
Vogel‐Heuser B, Diedrich C, Fay A, Jeschke S, Kowalewski S, Wollschlaeger M. Challenges for software engineering in automation. Journal of Software Engineering and Applications. 2014;7(05):440‐451.
[200]
Ossher H, Harrison W, Tarr P. Software engineering tools and environments: a roadmap. Proceedings of the Conference on the Future of Software Engineering. 2000;261‐277. ACM
[201]
Ambati V, Kishore S. How can academic software research and open source software development help each other? 4th Workshop on Open Source Software Engineering. 2004;5‐8.
[202]
Feldt R, Magazinius A. Validity threats in empirical software engineering research: an initial survey. SEKE. 2010;374‐379.
[203]
de Oliveira Barros M, Dias‐Neto AC. 0006/2011‐threats to validity in search‐based software engineering empirical studies. RelaTe‐DIA. 2011;5(1).1‐11.
[204]
Ducasse S, Rieger M, Demeyer S "A language independent approach for detecting duplicated code," presented at the Proceedings of the IEEE International Conference on Software Maintenance, 1999;109‐118.
[205]
Sharma T, "Identifying extract‐method refactoring candidates automatically," presented at the Proceedings of the Fifth Workshop on Refactoring Tools, Rapperswil, Switzerland, 2012;50‐53.

Cited By

View all

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image Journal of Software: Evolution and Process
Journal of Software: Evolution and Process  Volume 33, Issue 3
March 2021
242 pages
ISSN:2047-7473
EISSN:2047-7481
DOI:10.1002/smr.v33.3
Issue’s Table of Contents

Publisher

John Wiley & Sons, Inc.

United States

Publication History

Published: 03 March 2021

Author Tags

  1. antipatterns
  2. code refactoring
  3. code smells
  4. design smells
  5. smell detection
  6. software smells

Qualifiers

  • Review-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 30 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Prescriptive procedure for manual code smell annotationScience of Computer Programming10.1016/j.scico.2024.103168238:COnline publication date: 1-Dec-2024
  • (2024)Toward a novel taxonomy to capture code smells caused by refactoringScience of Computer Programming10.1016/j.scico.2024.103120236:COnline publication date: 1-Sep-2024
  • (2024)A rule-based approach for the identification of quality improvement opportunities in GRL modelsSoftware Quality Journal10.1007/s11219-024-09679-z32:3(1007-1037)Online publication date: 1-Sep-2024
  • (2024)CoRT: Transformer-based code representations with self-supervision by predicting reserved words for code smell detectionEmpirical Software Engineering10.1007/s10664-024-10445-929:3Online publication date: 8-Apr-2024
  • (2024)Automated detection of class diagram smells using self-supervised learningAutomated Software Engineering10.1007/s10515-024-00429-w31:1Online publication date: 24-Mar-2024
  • (2024)Automatic detection of code smells using metrics and CodeT5 embeddings: a case study in C#Neural Computing and Applications10.1007/s00521-024-09551-y36:16(9203-9220)Online publication date: 1-Jun-2024
  • (2023)Machine Learning for Software Engineering: A Tertiary StudyACM Computing Surveys10.1145/357290555:12(1-39)Online publication date: 2-Mar-2023
  • (2023)Fulfilling Industrial Needs for Consistency among Engineering ArtifactsProceedings of the 45th International Conference on Software Engineering: Software Engineering in Practice10.1109/ICSE-SEIP58684.2023.00028(246-257)Online publication date: 17-May-2023
  • (2023)A Novel Transfer Learning Method for Code Smell Detection on Heterogeneous Data: A Feasibility StudySN Computer Science10.1007/s42979-023-02157-64:6Online publication date: 28-Sep-2023
  • (2023)Deep learning approaches for bad smell detection: a systematic literature reviewEmpirical Software Engineering10.1007/s10664-023-10312-z28:3Online publication date: 11-May-2023
  • Show More Cited By

View Options

View options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media