Skip to main content
Log in

A systematic review of refactoring opportunities by software antipattern detection

  • Published:
Automated Software Engineering Aims and scope Submit manuscript

Abstract

The violation of the semantic and structural software principles, such as low connection, high coherence, high understanding, and others, are called anti-patterns, which is one of the concerns of the software development process. They are caused due to bad design or programming that must be detected and removed to improve the application’s source code. Refactoring operators efficiently eliminate antipatterns, but they must first be identified. Therefore, antipattern detection is a critical issue in software engineering, and to do this, various approaches have been proposed. So far, review articles have been published to classify and compare these approaches. However, a comprehensive study using evaluation parameters has not compared different anti-pattern detection methods at all software abstraction levels. In this article, all the methods presented so far are classified, then their advantages and disadvantages are highlighted. Finally, a complete comparison of each category by evaluation metrics is provided. Our proposed classification considers three aspects, levels of abstraction, degree of dependence on developers’ skills, and techniques used. Then, the evaluation metrics reported on this subject are analyzed, and the qualitative values of these metrics for each category are presented. This information can help researchers compare and understand existing methods and improve them.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Algorithm 1
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12
Fig. 13
Fig. 14
Fig. 15
Fig. 16
Fig. 17
Fig. 18
Fig. 19
Fig. 20
Fig. 21
Fig. 22
Fig. 23
Fig. 24
Fig. 25
Fig. 26
Fig. 27
Fig. 28

Similar content being viewed by others

References

  • Abebe, M., Yoo, C.J.: Trends, opportunities and challenges of software refactoring: a systematic literature review. Int. J. Softw. Eng. Its Appl. 8(6), 299–318 (2014)

    Google Scholar 

  • Alazba, A., Aljamaan, H., Alshayeb, M.: Deep learning approaches for bad smell detection: a systematic literature review. Empir. Softw. Eng. 28, 77 (2023). https://doi.org/10.1007/s10664-023-10312-z

    Article  Google Scholar 

  • Alkhalid, A., Alshayeb, M., Mahmoud, S.A.: Software refactoring at the package level using clustering techniques. IET Softw. 5(3), 276–284 (2011). https://doi.org/10.1049/iet-sen.2010.0070

    Article  Google Scholar 

  • Alkharabsheh, K., Crespo, Y., Manso, E., Taboada, J.A.: Software design smell detection: a systematic mapping study. Softw. Qual. J. 27, 1069–1148 (2019). https://doi.org/10.1007/s11219-018-9424-8

    Article  Google Scholar 

  • Alon, U., Brody, S., Levy, O., Yahav, E.: code2seq: generating sequences from structured representations of code. In: Proceedings of the Seventh International Conference on Learning Representations (ICLR 2019). arXiv:1808.01400 (2018)

  • Alon, U., Zilberstein, M., Levy, O., Yahav, E.: code2vec: learning distributed representations of code. In: Proceedings of the Symposium on Principles of Programming Languages,Lisbon, Portugal, pp. 1–29. arXiv: 1803.09473 (2019)

  • Azadi, U., Fontana, F.A., Taibi, D.: Architectural smells detected by tools: a catalogue proposal. In: Proceedings of the International Conference on Technical Debt. IEEE. https://doi.org/10.1109/TechDebt.2019.00027 (2019)

  • Azeem, M.L., Palomba, F., Shi, L., Wang, Q.: Machine learning techniques for code smell detection: a systematic literature review and meta-analysis. Inf. Softw. Technol. 108, 115–138 (2019). https://doi.org/10.1016/j.infsof.2018.12.009

    Article  Google Scholar 

  • Bafandeh Mayvan, B., Rasoolzadegan, A., Javan Jafari, A.: Bad smell detection using quality metrics and refactoring opportunities. J. Softw. Evol. Process Wiley Online 32(3), 2255 (2020). https://doi.org/10.1002/smr.2255

    Article  Google Scholar 

  • Baker, B.S.: On finding duplication and near-duplication in large software systems. In: Proceedings of the 2nd Working Conference on Reverse Engineering, pp. 86–95. IEEE, Toronto, Ontario, Canada (1995)

  • Bansiya, J., Davis, C.G.: A hierarchical model for object-oriented design quality assessment. IEEE Trans. Softw. Eng. 28(1), 4–17 (2002)

    Article  Google Scholar 

  • Bigonha, M.A.S., Ferreira, K., Souza, P., Sousa, B., Januário, M., Lima, D.: The usefulness of software metric thresholds for detection of bad smells and fault prediction. Inf. Softw. Technol. 115, 79–92 (2019). https://doi.org/10.1016/j.infsof.2019.08.005

    Article  Google Scholar 

  • Boutaib, S., Bechikh, S., Palomba, F., Elarbi, M., Makhlouf, M., Ben Said, L.: Code smell detection and identification in imbalanced environments. Expert Syst. Appl. 166, 114076 (2021). https://doi.org/10.1016/j.eswa.2020.114076

    Article  Google Scholar 

  • Brdar, I., Vlajkov, J., Slivka, J., Grujic, K.G., Kovacevic, A.: Semi-supervised detection of long method and god class code smells. In: 2022 IEEE 20th Jubilee International Symposium on Intelligent Systems and Informatics (SISY), pp. 403–408 (2022). https://doi.org/10.1109/SISY56759.2022.10036248

  • Brownlee, J.: Immunos 81-the misunderstood artificial immune system. Swinburne University of Technology, technical report 3-01 (2005)

  • Cai, Y., Kazman, R.: Software architecture health monitor. In: Proceedings of the 1st International Workshop on Bringing Architectural Design Thinking into Developers’ Daily Activities, pp. 18–21. ACM, New York, USA (2016)

  • Cai, Y., Wang, H., Wong, S., Wang, L.: Leveraging design rules to improve software architecture recovery. In: Proceedings of the 9th International ACM SIGSOFT Conference on Quality of Software Architectures (2013)

  • Catal, C., Diri, B.: Software fault prediction with object-oriented metrics based artificial immune recognition system. In: Proceedings of the 8th International Conference on Product-Focused Software Process Improvement (PROFES ’7), pp. 300–314. Springer, Berlin (2007)

  • Chávez, A., Ferreira, I., Fernandes, E., Cedrim, D., Garcia, A.: How does refactoring affect internal quality attributes?: A multi-project study. In: Proceedings of the 31st Brazilian Symposium on Software Engineering, pp. 74–83. ACM (2017)

  • Chidamber, S.R., Kemerer, C.F.: Towards a metrics suite for object-oriented design. In: Proceedings of the 6th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA’91), Phoenix, Arizona, USA, pp. 197–211 (1991)

  • Ciupke, O.: Automatic detection of design problems in object-oriented reengineering. In: Proceedings of Technology of Object-Oriented Languages and Systems-TOOLS 30, pp. 18–32. IEEE Computer Society Press, Santa Barbara, CA, USA (1999)

  • Crnkovic, I., Sentilles, S., Vulgarakis, A., Chaudron, M.R.V.: A classification framework for software component models. IEEE Trans. Softw. Eng. 37(5), 593–615 (2011)

    Article  Google Scholar 

  • Cruz, D., Santana, A., Figueiredo, E.: Detecting bad smells with machine learning algorithms: an empirical study. In: Proceedings of the 3rd International Conference on Technical Debt (TechDebt ’20), pp. 31–40 (2020)

  • Detten, M., Platenius-Moher, M.C., Becker, S.: Reengineering component-based software systems with archimetrix. Softw. Syst. Model. 13(4), 1239–1268 (2014). https://doi.org/10.1007/s10270-013-0341-9

    Article  Google Scholar 

  • Dewangan, S., Rao, R.S., Mishra, A., Gupta, M.: A novel approach for code smell detection: an empirical study. IEEE Access 9, 162869–162883 (2021). https://doi.org/10.1109/ACCESS.2021.3133810

    Article  Google Scholar 

  • Dhambri, K., Sahraoui, H.A., Poulin, P.: Visual detection of design anomalies. In: Proceedings of the 12th European Conference on Software Maintenance and Reengineering, Athens, Greece, pp. 279–283 (2008)

  • Díaz-Pace, J.A., Tommasel, A., Godoy, D.: Towards anticipation of architectural smells using link prediction techniques. In: Proceedings of the 18th International Working Conference on Source Code Analysis and Manipulation, pp. 62–71. IEEE (2018)

  • Ducasse, S., Rieger, M., Demeyer, S.: A language-independent approach for detecting duplicated code. In: Proceedings of the IEEE International Conference on Software Maintenance, Software Maintenance for Business Change’ (Cat. No.99CB36360), Oxford, England, pp. 109–118 (1999)

  • Easterbrook, S., Singer, J., Storey, M.A., Damian, D.: Selecting empirical methods for software engineering research. In: Shull, F., Singer, J., Sjøberg, D.I.K. (eds.) Guide to Advanced Empirical Software Engineering, vol. 94, pp. 285–311. Springer, London (2008)

    Chapter  Google Scholar 

  • Erni, K., Lewerentz, C.: Applying design metrics to object-oriented frameworks. In: Proceedings of the 3rd International Software Metrics Symposium, pp. 64–74. IEEE Computer Society Press, Berlin, Germany (1996)

  • Fowler, M., Beck, K., Brant, J., Opdyke, W., Roberts, D.: Refactoring-Improving the Design of Existing Code. Addison-Wesley, Westford, MA (1999)

    Google Scholar 

  • Gaffney, J.E.: Metrics in software quality assurance. In: Proceedings of the ACM ’81 Conference, New York , pp. 126–130 (1981)

  • Gamma, E., Helm, R., Johnson, F., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional, New York (1994)

    Google Scholar 

  • Garcia, J., Daniel, P., Edwards, G., Medvidovic, N.: Toward a catalogue of architectural bad smells. In: Proceedings of 5th International Conference on the Quality of Software Architectures: Architectures for Adaptive Software Systems, pp. 146–162. Springer (2009)

  • Giesecke, S.: Generic modelling of code clones. In: Koschke, R., Merlo, E., Walenstein, A. (eds.) Duplication, Redundancy, and Similarity in Software, vol. 6301, pp. 1–23. Schloss Dagstuhl, Dagstuhl (2007)

    Google Scholar 

  • Goldberg, D.E.: Genetic Algorithms in Search, Optimization and Machine Learning. Addison-Wesley Longman Publishing Co, New York (1989)

    Google Scholar 

  • Goldstein, M., Segall, I.: Automatic and continuous software architecture validation. In: Proceedings of the 37th IEEE International Conference on Software Engineering, vol. 2, pp. 59–68. IEEE. https://doi.org/10.1109/ICSE.2015.135(2015)

  • Griffith, I., Wahl, S., Izurieta, C.: Evolution of legacy system comprehensibility through automated refactoring. In: Proceedings of the International Workshop on Machine Learning Technologies in Software Engineering (MALETS ’11), pp. 35–42 (2011)

  • Gupta, A., Suri, B., Misra, S.: A systematic literature review: code bad smells in java source code. In: Proceedings of the 17th Computational Science and Its Applications (ICCSA 2017), Trieste, Italy (2017). https://doi.org/10.1007/978-3-319-62404-4-49

  • Hadj-Kacem, M., Bouassida, N.: Towards a taxonomy of bad smells detection approaches. In: Proceedings of the 13th International Conference on Software Technologies (ICSOFT), pp. 164–175 (2018)

  • Halstead, M.H.: Elements of Software Science. Elsevier Science, Amsterdam (1977)

    Google Scholar 

  • Harrison, R., Counsell, S.J., Nithi, R.V.: An evaluation of the mood set of object-oriented software metricse. IEEE Trans. Softw. Eng. 24(6), 491–496 (1998). https://doi.org/10.1109/32.689404

    Article  Google Scholar 

  • Hassaine, S., Khomh, F., Guéhéneuc, Y.-G., Hame, S.: IDS: an immune-inspired approach for the detection of software design smells. In: Proceedings of the 7th International Conference on the Quality of Information and Communications Technology (QUATIC), Porto, Portugal, pp. 343–348 (2010)

  • Hemati Moghadam, I., Ó Cinnéide, M.: Code-Imp: a tool for automated search-based refactoring. In: Proceedings of the 4th Workshop on Refactoring Tools (WRT ’11), pp. 41–44 (2011)

  • Hübener, T., Chaudron, M.R.V., Luo, Y., Vallen, P., Kogel, J., Liefheid, T.: Automatic anti-pattern detection in microservice architectures based on distributed tracing. In: Proceedings of the IEEE/ACM 44th International Conference on Software Engineering: Software Engineering in Practice (ICSE-SEIP), Pittsburgh, PA, USA, pp. 75–76 (2022)

  • Japkowicz, N., Shah, M.: Performance measures I. In: El Naqa, I., et al. (eds.) Evaluating Learning Algorithms: A Classification Perspective, vol. 2, pp. 74–109. Cambridge University Press, New York (2011)

    Chapter  Google Scholar 

  • Juliet Thessalonica, D., Khanna Nehemiah, H., Sreejith, S., Kannan, A.: Intelligent mining of association rules based on nanopatterns for code smells detection. Hindawi Sci. Program. 2023, 2973250 (2023). https://doi.org/10.1155/2023/2973250

    Article  Google Scholar 

  • Kalhor, S., Keyvanpour, M.R., Salajegheh, A.: Experimental evaluation and comparison of anti-pattern detection tools by the gold standard. In: Proceedings of the 12th International Conference on Computer and Knowledge Engineering (ICCKE 2022), Ferdowsi University of Mashhad, Mashhad, Iran (2022)

  • Kanade, A., Maniatis, P., Balakrishnan, G., Shi, K.: Learning and evaluating contextual embedding of source code. In: Proceedings of the 37th International Conference on Machine Learning, Vienna, Austria, pp. 5110–5121 (2020)

  • Kasper, C.J., Godfrey, M.W.: Cloning considered harmful: considered harmful patterns of cloning in software. Empir. Softw. Eng. 13(6), 645–692 (2008)

    Article  Google Scholar 

  • Kaur, A., Jain, S., Goel, S., Dhiman, G.: A review on machine-learning based code smell detection techniques in object-oriented software system(s). Recent Adv. Electr. Electron. Eng. 14(3), 290–303 (2020). https://doi.org/10.2174/2352096513999200922125839

    Article  Google Scholar 

  • Kebir, S., Borne, I., Meslati, D.: A genetic algorithm-based approach for automated refactoring of component-based software. Inf. Softw. Technol. 88, 17–36 (2017). https://doi.org/10.1016/j.infsof.2017.03.009

    Article  Google Scholar 

  • Kessentini, M., Vaucher, S., Sahraoui, H.: Deviance from perfection is a better criterion than closeness to evil when identifying risky code. In: Proceedings of the 25th IEEE/ACM International Conference on Automated Software Engineering (ASE), Antwerp, Belgium, pp. 113–122 (2010)

  • Kessentini, M., Kessentini, W., Sahraoui, H., Boukadoum, M., Ouni, A.: Design defects detection and correction by example. In: Proceedings of the 19th International Conference on Program Comprehension (ICPC), Kingston, Canada, pp. 81–90 (2011)

  • Kessentini, M., Mahaouachi, R., Ghedira, K.: What you like in design use to correct bad-smells. Softw. Qual. J. 21, 551–571 (2013). https://doi.org/10.1007/s11219-012-9187-6

    Article  Google Scholar 

  • Khomh, F., Vaucher, S., Guéhéneuc, Y.-G., Sahraoui, H.: A Bayesian approach for the detection of code and design smells. In: Proceedings of the Ninth International Conference on Quality Software, Jeju, Korea (South), pp. 305–314 (2009)

  • Kitchenham, B.: Procedures for performing systematic reviews. Keele University. Ttechnical report tr/se-0401, Department of Computer Science, Keele University, UK (2004)

  • Koru, A.G., Liu, H.: An investigation of the effect of module size on defect prediction using static measures. In: Proceedings of the Workshop on Predictor Models in Software Engineering, St. Louis, Missouri, pp. 1–5 (2005)

  • Kothari, S., Bishop, L., Sauceda, J., Daugherty, G.: A pattern-based framework for software anomaly detection. Softw. Qual. Control 12(2), 99–120 (2004)

    Article  Google Scholar 

  • Kovacevic, A., Slivka, J., Vidakovic, D., Grujic, K.G., Luburic, N., Prokić, S., Sladic, G.: Automatic detection of long method and god class code smells through neural source code embeddings. Expert Syst. Appl. 204(C), 117607 (2022). https://doi.org/10.1016/j.eswa.2022.117607

    Article  Google Scholar 

  • Lacerda, G., Petrillo, F., Pimenta, M., Guéhéneuc, Y.G.: Code smells and refactoring: a tertiary systematic review of challenges and observations. J. Syst. Softw. 167, 110610 (2020)

    Article  Google Scholar 

  • Le, D.M., Link, D., Shahbazian, A., Medvidovic, N.: An empirical study of architectural decay in open-source software. In: Proceedings of the IEEE International Conference on Software Architecture (ICSA), Seattle, WA, USA, pp. 176–185. https://doi.org/10.1109/ICSA.2018.00027 (2018)

  • Lee, S., Bae, G., Chae, H.S., Bae, D.H., Kwon, Y.R.: Automated scheduling for clone-based refactoring using a component GA. Softw. Pract. Exp. 41(5), 521–550 (2011). https://doi.org/10.1002/spe.1031

    Article  Google Scholar 

  • Ma, Y., Guo, L., Cukic, B.: A statistical framework for the prediction of fault-proneness. In: Zhang, D., Tsai, J. (eds.) Advances in Machine Learning Application in Software Engineering, vol. 94, pp. 237–265. Idea Group Inc, Hershey (2006)

    Google Scholar 

  • Macia, I., Garcia, A., Chavez, C., Staa, A.: Enhancing the detection of code anomalies with architecture-sensitive strategies. In: Proceedings of 17th European Conference on Software Maintenance and Reengineering (CSMR), pp. 177–186. IEEE (2013)

  • Madeyski, L., Lewowski, T.: Detecting code smells using industry-relevant data. Inf. Softw. Technol. 155, 107112 (2023). https://doi.org/10.1016/j.infsof.2022.107112

    Article  Google Scholar 

  • Malveau, R.C., Brown, W.J., MCCormick, H.W., Mowbray, T.J.: Anti Patterns: Refactoring Software, Architectures, and Projects in Crisis. Wiley, New York (1998)

    Google Scholar 

  • Marinescu, R.: Detection strategies: metrics-based rules for detecting design flaws. In: Proceedings of the 20th IEEE International Conference on Software Maintenance, Chicago, Illinois, USA, pp. 350–359 (2004)

  • McCabe, T.J.: A complexity measure. IEEE Trans. Softw. Eng. SE-2(4), 308–320 (1976). https://doi.org/10.1109/TSE.1976.233837

    Article  MathSciNet  Google Scholar 

  • Menshawy, R.S., Yousef, A.H., Salem, A.: Code smells and detection techniques: a survey. In: Proceedings of the International Mobile, Intelligent, and Ubiquitous Computing Conference (MIUCC), pp. 78–83 (2021)

  • Menzies, T., Greenwald, J., Frank, A.: Data mining static code attributes to learn defect predictors. IEEE Trans. Softw. Eng. 33(1), 2–13 (2007). https://doi.org/10.1109/TSE.2007.256941

    Article  Google Scholar 

  • Metsker, S.J., Wake, W.C.: Design Patterns in Java. Addison-Wesley, New York (2006)

    Google Scholar 

  • Mhawish, M.Y., Gupta, M.: Predicting code smells and analysis of predictions: using machine learning techniques and software metrics. J. Comput. Sci. Technol. 35(6), 1428–1445 (2020). https://doi.org/10.1007/s11390-020-0323-7

    Article  Google Scholar 

  • Mkaouer, W., Kessentini, M., Shaout, A., Kontchou, P., Bechikh, S., Deb, K., Ouni, A.: Many-objective software remodularization using NSGA-III. ACM Trans. Softw. Eng. Methodol. 24(3), 1–45 (2015). https://doi.org/10.1145/2729974

    Article  Google Scholar 

  • Mo, R., Cai, Y., Kazman, R., Xiao, L.: Hotspot patterns: the formal definition and automatic detection of architecture smells. In: Proceedings of the 12th Working IEEE/IFIP Conference on Software Architecture, pp. 51–60. IEEE. https://doi.org/10.1109/WICSA.2015.12 (2015)

  • Mo, R., Cai, Y., Kazman, R., Xiao, L., Feng, Q.: Architecture antipatterns: automatically detectable violations of design principles. IEEE Trans. Softw. Eng. 47(5), 1008–1028 (2019)

    Article  Google Scholar 

  • Moha, N., Guéhéneuc, Y.-G., Duchien, L., Le Meur, A.-F.: Decor: a method for the specification and detection of code and design smells. IEEE Trans. Softw. Eng. 36(1), 20–36 (2010). https://doi.org/10.1109/TSE.2009.50

    Article  Google Scholar 

  • Mumtaz, H., Singh, P., Blincoe, K.: A systematic mapping study on architectural smells detection. J. Syst. Softw. 173, 110885 (2021). https://doi.org/10.1016/j.jss.2020.110885

    Article  Google Scholar 

  • Munro, M.J.: Product metrics for automatic identification of “bad smell” design problems in java source-code. In: Proceedings of the 11th IEEE International Software Metrics Symposium (METRICS’05), Como, Italy, pp. 15–15 (2005)

  • Newman, M.E.J., Girvan, M.: Finding and evaluating community structure in networks. Phys. Rev. E (2004). https://doi.org/10.1103/PhysRevE69.026113

    Article  Google Scholar 

  • Ó Cinnéide, M., Yamashita, A., Counsell, S.: Measuring refactoring benefits: a survey of the evidence. In: Proceedings of the 1st International Workshop on Software Refactoring, pp. 9–12. ACM, Chicago (2016)

  • Oizumi, W.N., Garcia, A.F., Colanzi, T.E., Ferreira, M., Staa, A.V.: When code-anomaly agglomerations represent architectural problems? An exploratory study. In: Proceedings of the Brazilian Symposium on Software Engineering, pp. 91–100. IEEE. https://doi.org/10.1109/SBES.2014.18 (2014)

  • Oizumi, W.N., Garcia, A.F., Colanzi, T.E., Ferreira, M., Staa, A.V.: On the relationship of code-anomaly agglomerations and architectural problems. J. Softw. Eng. Res. Dev. 3(1), 11 (2015). https://doi.org/10.1186/s40411-015-0025-y

    Article  Google Scholar 

  • Ouni, A., Kessentini, M., Sahraoui, H., Boukadoum, M.: Maintainability defects detection and correction: a multi-objective approach. J. Autom. Softw. Eng. 20(1), 47–79 (2012). https://doi.org/10.1007/s10515-011-0098-8

    Article  Google Scholar 

  • Ouni, A., Kessentini, M., Sahraoui, H.: Chapter four—multiobjective optimization for software refactoring and evolution. In: Hurson, A. (ed.) Advances in computers, vol. 94, pp. 103–167. Elsevier, Amsterdam (2014)

    Google Scholar 

  • Paulo Sobrinho, E.V., De Lucia, A., Almeida Maia, M.: A systematic literature review on bad smells 5w’s: which, when, what, who, where. IEEE Trans. Softw. Eng. 47, 1–1 (2018)

    Google Scholar 

  • Rattan, D., Bhatia, R., Singh, M.: Software clone detection: a systematic review. Inf. Softw. Technol. 55(7), 1165–1199 (2013). https://doi.org/10.1016/j.infsof.2013.01.008

    Article  Google Scholar 

  • Razani, Z., Keyvanpour, M.R.: SBSR solution evaluation: methods and challenges classification. In: Proceedings of the 5th Conference on Knowledge Based Engineering and Innovation (KBEI), Tehran, Iran, pp. 181–188 (2019)

  • Riel, A.J.: Object-Oriented Design Heuristics. Addison-Wesley, New York (1996)

    Google Scholar 

  • Rysselberghe, F.V., Demeyer, S.: Evaluating clone detection techniques from a refactoring perspective. In: Proceedings of the19th International Conference on Automated Software Engineering, Linz, Austria, 2004, pp. 336–339 (2004)

  • Salehie, M., Li, S., L., T.: A metric-based heuristic framework to detect object-oriented design flaws. In: Proceedings of the 14th IEEE International Conference on Program Comprehension (ICPC’06), Athens, Greece, pp. 159–168 (2006)

  • Shafiei, N., Keyvanpour, M.R.: Challenges classification in search-based refactoring. In: Proceedings of the 6th International Conference on Web Research (ICWR), Tehran, Iran, pp. 106–112 (2020)

  • Sharma, T., Spinellis, D.: A survey on software smells. J. Syst. Softw. 138, 158–173 (2018)

    Article  Google Scholar 

  • Shatnawi, R., Li, W.: An empirical assessment of refactoring impact on software quality using a hierarchical quality model. Int. J. Softw. Eng. Its Appl. 5(4), 127–149 (2011)

    Google Scholar 

  • Shimomura, T., Ikeda, K., Takahashi, M.: An approach to GA-driven automatic refactoring based on design patterns. In: Proceedings of the Fifth International Conference on Software Engineering Advances, Nice, France, pp. 213–218 (2010)

  • Sterling, L., Shapiro, E.: The Art of Prolog. MIT Press, Cambridge, MA (1986)

    Google Scholar 

  • Tareq Imam, A., Al-Srour, B.R., Alhroob, A.: The automation of the detection of large class bad smell by using genetic algorithm and deep learning. J. King Saud Univ. Comput. Inf. Sci. 34(6, Part A), 2621–2636 (2022). https://doi.org/10.1016/j.jksuci.2022.03.028

    Article  Google Scholar 

  • Terra, R., Brunet, J., Miranda, L., Valente, M.T., Serey, D., Castilho, D., Bigonha, R.: Measuring the structural similarity between source code entities. In: Proceedings of the 25th International Conference on Software Engineering and Knowledge Engineering (SEKE), pp. 753–758 (2013)

  • Tommasel, A.: Applying social network analysis techniques to architectural smell prediction. In: Proceedings of the International Conference on Software Architecture Companion, pp. 254–261. IEEE (2019)

  • Travassos, G.H., Shull, F., Fredericks, M., Basili, V.R.: Detecting defects in object-oriented designs: using reading techniques to increase software quality. In: Proceedings of the 14th Conference on Object-Oriented Programming, Systems, Languages, and Applications. ACM Press, Denver, USA, pp. 47–56 (1999)

  • Vale, G., Figueiredo, E., Abilio, R., Costa, H.: Bad smells in software product lines: a systematic review. In: Proceedings of the Eighth Brazilian Symposium on Software Components, Architectures and Reuse, pp. 84–94. IEEE Computer Society Press, Maceio, Brazil (2014)

  • Vale, T., Crnkovic, I., Almeida, E.S., Da Mota Silveira Neto, P.A., Cavalcanti, Y.C., Lemos Meira, S.R.: Twenty-eight years of component-based software engineering. J. Syst. Softw. 111, 128–148 (2016). https://doi.org/10.1016/j.jss.2015.09.019

    Article  Google Scholar 

  • Vidal, S.A., Marcos, C., Diaz-Pace, J.A.: An approach to prioritize code smells for refactoring. Autom. Softw. Eng. 23(3), 501–532 (2016). https://doi.org/10.1007/s10515-014-0175-x

    Article  Google Scholar 

  • Vidal, S., Oizumi, W., Garcia, A., Pace, A.D., Marcos, C.: Ranking architecturally critical agglomerations of code smells. Sci. Comput. Program. 182, 64–85 (2019)

    Article  Google Scholar 

  • Vimaladevi, M., Zayaraz, G.: Stability aware software refactoring using hybrid search-based techniques. In: Proceedings of International Conference on Technical Advancements in Computers and Communications (ICTACC), pp. 32–35. IEEE (2017)

  • Wohlin, C.: Guidelines for snowballing in systematic literature studies and a replication in software engineering. In: Proceedings of the 18th International Conference on Evaluation and Assessment in Software Engineering, Citeseer, Article No.: 38, pp. 1–10. https://doi.org/10.1145/2601248.2601268(2014)

  • Xiao, L., Cai, Y., Kazman, R., Mo, R., Feng, Q.: Identifying and quantifying architectural debt. In: Proceedings of the 38th IEEE/ACM International Conference on Software Engineering, pp. 488–498. ACM (2016)

  • Zanetti, M.S., Tessone, C.J., Scholtes, I., Schweitzer, F.: Automated software remodularization based on move refactoring: a complex systems approach. In: Proceedings of the 13th International Conference on Modularity (MODULARITY ’14), pp. 73–84 (2014)

  • Zhang, M., Hall, T., Baddoo, N.: Code bad smells: a review of current knowledge. J. Softw. Maint. Eval. 23(3), 179–202 (2011)

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Contributions

Since the first author is a Ph.D. student and two other colleagues are supervisors. All work steps were done under the supervision of professors and all the authors reviewed the article.

Corresponding author

Correspondence to Mohammad Reza Keyvanpour.

Ethics declarations

Conflict of interest

The authors declare no conflict of interest.

Additional information

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Rights and permissions

Springer Nature or its licensor (e.g. a society or other partner) holds exclusive rights to this article under a publishing agreement with the author(s) or other rightsholder(s); author self-archiving of the accepted manuscript version of this article is solely governed by the terms of such publishing agreement and applicable law.

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Kalhor, S., Keyvanpour, M.R. & Salajegheh, A. A systematic review of refactoring opportunities by software antipattern detection. Autom Softw Eng 31, 42 (2024). https://doi.org/10.1007/s10515-024-00443-y

Download citation

  • Received:

  • Accepted:

  • Published:

  • DOI: https://doi.org/10.1007/s10515-024-00443-y

Keywords

Navigation