skip to main content
10.1145/3229345.3229357acmotherconferencesArticle/Chapter ViewAbstractPublication PagessbsiConference Proceedingsconference-collections
research-article

A Systematic Mapping of Literature on Software Refactoring Tools

Authors Info & Claims
Published:04 June 2018Publication History

ABSTRACT

Refactoring consists of improving the internal structure of the code without changing the external behavior of a software system. However, the task of refactoring is very costly in the development of an information system. Thus, many tools have been proposed to support refactoring the source code. In order to find tools cited in the literature, this work presents a Systematic Literature Mapping about refactoring. As a result, this paper summarizes the refactoring tools that have been published in the last 5 years in terms of the tool profiles developed, which programming languages have support for refactoring and which are the main refactoring strategies that are handled by tools. It has been identified that publications on refactoring have remained constant over the past 5 years. Also, most of the refactoring works describe tools, being they for systems written in the Java language, that perform code refactoring automatically and the main refactorings are: Move Method, Pull Up Method, Extract Class and Code Clone. Finally, we performed an analysis of the data returned by the DBLP library. As a result, it was observed that the papers returned by the DBLP have a high level of similarity with the other research bases studied.

References

  1. Jehad Al Dallal. 2015. Identifying refactoring opportunities in object-oriented code: A systematic literature review. Information and Software Technology 58 (2015), 231--249.Google ScholarGoogle ScholarCross RefCross Ref
  2. Gabriele Bavota, Andrea De Lucia, Andrian Marcus, and Rocco Oliveto. 2014. Automating extract class refactoring: an improved method and its evaluation. Empirical Software Engineering (2014), 1617--1664. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. O. Chaparro, G. Bavota, A. Marcus, and M. D. Penta. 2014. On the Impact of Refactoring Operations on Code Quality Metrics. In ICSME. 456--460. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Jehad Al Dallal. 2017. Predicting move method refactoring opportunities in object-oriented code. IST (2017), 105--120.Google ScholarGoogle Scholar
  5. Asger Feldthaus and Anders Moller. 2013. Semi-automatic Rename Refactoring for JavaScript. SIGPLAN (2013), 323--338. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. W. Fenske, J. Meinicke, S. Schulze, S. Schulze, and G. Saake. 2017. Variant-preserving refactorings for migrating cloned products to a product line. In International Conference on Software Analysis, Evolution and Reengineering (SANER). 316--326.Google ScholarGoogle Scholar
  7. Martin Fowler and Kent Beck. 1999. Refactoring: improving the design of existing code. Addison-Wesley Professional. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Maria Anna G. Gaitani, Vassilis E. Zafeiris, N.A. Diamantidis, and E.A. Giakoumakis. 2015. Automated refactoring to the Null Object design pattern. IST (2015), 33--52. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Adnane Ghannem, Ghizlane El Boussaidi, and Marouane Kessentini. 2014. Model refactoring using examples: a search-based approach. JSEP (2014), 692--713. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Y. Gil and M. Orrù. 2017. The Spartanizer: Massive automatic refactoring. In SANER. 477--481.Google ScholarGoogle Scholar
  11. Milos Gligoric, Farnaz Behrang, Yilong Li, Jeffrey Overbey, Munawar Hafiz, and Darko Marinov. 2013. Systematic Testing of Refactoring Engines on Real Software Projects. In ECOOP. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Alex Gyori, Lyle Franklin, Danny Dig, and Jan Lahoda. 2013. Crossing the Gap from Imperative to Functional Programming Through Refactoring. In ESEC/FSE. 543--553. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Ah-Rim Han and Doo-Hwan Bae. 2013. Dynamic profiling-based approach to identifying cost-effective refactorings. IST (2013), 966--985. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Ah-Rim Han, Doo-Hwan Bae, and Sungdeok Cha. 2015. An efficient approach to identify multiple and independent Move Method refactoring candidates. IST (2015), 53--66. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. H. C. Jiau, L. W. Mar, and J. C. Chen. 2013. OBEY: Optimal Batched Refactoring Plan Execution for Class Responsibility Redistribution. TSE (2013), 1245--1263. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. Salim Kebir, Isabelle Borne, and Djamel Meslati. 2017. A genetic algorithm-based approach for automated refactoring of component-based software. IST (2017), 17--36. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. R. Khatchadourian and H. Masuhara. 2017. Automated Refactoring of Legacy Java Software to Default Methods. In ICSE. 82--93. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. Raffi Khatchadourian and Hidehiko Masuhara. 2017. Defaultification Refactoring: A Tool for Automatically Converting Java Methods to Default. In ASE. 984--989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Djamel Eddine Khelladi, Reda Bendraou, and Marie-Pierre Gervais. 2016. AD-ROOM: A Tool for Automatic Detection of Refactorings in Object-oriented Models. In ICSE.Google ScholarGoogle Scholar
  20. J. Kim, D. Batory, and D. Dig. 2015. Scripting parametric refactorings in Java to retrofit design patterns. In ICSME. 211--220. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Jongwook Kim, Don Batory, Danny Dig, and Maider Azanza. 2016. Improving Refactoring Speed by 10X. In ICSE. 1145--1156. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. Miryung Kim, Thomas Zimmermann, and Nachiappan Nagappan. 2012. A field study of refactoring challenges and benefits. In SIGSOFT. 50. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. G. P. Krishnan and N. Tsantalis. 2013. Refactoring Clones: An Optimization Problem. In ICSME. 360--363. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. J. Liebig, A. Janker, F. Garbe, S. Apel, and C. Lengauer. 2015. Morpheus: Variability-Aware Refactoring in the Wild. In ICSE. 380--391. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Y. Lin and D. Dig. 2015. Refactorings for Android Asynchronous Programming. In ASE. 836--841.Google ScholarGoogle Scholar
  26. Y. Lin, S. Okur, and D. Dig. 2015. Study and Refactoring of Android Asynchronous Programming (T). In ASE. 224--235.Google ScholarGoogle Scholar
  27. Yu Lin, Cosmin Radoi, and Danny Dig. 2014. Retrofitting Concurrency for Android Applications Through Refactoring. In SIGSOFT. 341--352. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. H. Liu, Q. Liu, Y. Liu, and Z. Wang. 2015. Identifying Renaming Opportunities by Expanding Conducted Rename Refactorings. TOSEM (2015), 887--900.Google ScholarGoogle Scholar
  29. Usman Mansoor, Marouane Kessentini, Manuel Wimmer, and Kalyanmoy Deb. 2017. Multi-view refactoring of class and activity diagrams using a multi-objective evolutionary algorithm. SQJ (2017), 473--501. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. Philip Mayer and Andreas Schroeder. 2013. Towards Automated Cross-language Refactorings Between Java and DSLs Used by Java Frameworks. In WRT. 5--8. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. Philip Mayer and Andreas Schroeder. 2014. Automated Multi-Language Artifact Binding and Rename Refactoring between Java and DSLs Used by Java Frameworks. In ECOOP, Richard Jones (Ed.). 437--462. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Davood Mazinanian, Nikolaos Tsantalis, and Ali Mesbah. 2014. Discovering Refactoring Opportunities in Cascading Style Sheets. In SIGSOFT. 496--506. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Davood Mazinanian, Nikolaos Tsantalis, Raphael Stein, and Zackary Valenta. 2016. JDeodorant: Clone Refactoring. In ICSE. 613--616. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Ş. Medeleanu and P. F. Mihancea. 2016. NullTerminator: Pseudo-Automatic Refactoring to Null Object Design Pattern. In ICSME. 601--603.Google ScholarGoogle Scholar
  35. Mohamed Wiem Mkaouer, Marouane Kessentini, Mel Ó Cinnéide, Shinpei Hayashi, and Kalyanmoy Deb. 2017. A robust multi-objective approach to balance severity and importance of refactoring opportunities. ESE (2017), 894--927. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. M. Mondal, C. K. Roy, and K. A. Schneider. 2014. Automatic Identification of Important Clones for Refactoring and Tracking. In SCAM. 11--20. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. R. Morales, A. Sabane, P. Musavi, F. Khomh, F. Chicano, and G. Antoniol. 2016. Finding the Best Compromise Between Design Quality and Testing Effort During Refactoring. In SANER. 24--35.Google ScholarGoogle Scholar
  38. H. A. Nguyen, H. V. Nguyen, T. T. Nguyen, and T. N. Nguyen. 2013. Output-Oriented Refactoring in PHP-Based Dynamic Web Applications. In ICSME. 150--159. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Ali Ouni, Marouane Kessentini, Houari Sahraoui, Katsuro Inoue, and Kalyanmoy Deb. 2016. Multi-Criteria Code Refactoring Using Search-Based Software Engineering: An Industrial Case Study. TOSEM (2016), 23:1--23:53. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Ali Ouni, Marouane Kessentini, Mel Ó Cinnéide, Houari Sahraoui, Kalyanmoy Deb, and Katsuro Inoue. 2017. MORE: A multi-objective refactoring recommendation approach to introducing design patterns and fixing code smells. JSEP (2017), 1843--1863.Google ScholarGoogle ScholarCross RefCross Ref
  41. Mati Shomrat and Yishai A. Feldman. {n. d.}. Detecting Refactored Clones. In ECOOP, Giuseppe Castagna (Ed.). 502--526. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Danilo Silva, Ricardo Terra, and Marco Tulio Valente. 2014. Recommending Automated Extract Method Refactorings. In ICPC. 146--156. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Danilo Silva, Nikolaos Tsantalis, and Marco Tulio Valente. 2016. Why we refactor? confessions of github contributors. In SIGSOFT. ACM, 858--870. Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. D. Silva and M. T. Valente. 2017. RefDiff: Detecting Refactorings in Version Histories. In MSR. 269--279. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. B. Tao and J. Qian. 2014. Refactoring Java Concurrent Programs Based on Synchronization Requirement Analysis. In ICSME. 361--370. Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. N. Ujihara, A. Ouni, T. Ishio, and K. Inoue. 2017. c-JRefRec: Change-based identification of Move Method refactoring opportunities. In SANER. 482--486.Google ScholarGoogle Scholar
  47. J. von Pilgrim, B. Ulke, A. Thies, and F. Steimann. 2013. Model/code co-refactoring: An MDE approach. In ASE. 682--687. Google ScholarGoogle ScholarDigital LibraryDigital Library
  48. W. Wang and M. W. Godfrey. 2014. Recommending Clones for Refactoring Using Design, Context, and History. In ICSME. 331--340. Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Claes Wohlin. 2014. 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. ACM, 38. Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Claes Wohlin, Per Runeson, Martin Höst, Magnus C Ohlsson, Björn Regnell, and Anders Wesslén. 2012. Experimentation in software engineering. Springer Science & Business Media. Google ScholarGoogle ScholarCross RefCross Ref
  51. Zhenchang Xing and Eleni Stroulia. 2006. Refactoring practice: How it is and how it should be supported-an eclipse case study. In ICSME. 458--468. Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Jifeng Xuan, Benoit Cornu, Matias Martinez, Benoit Baudry, Lionel Seinturier, and Martin Monperrus. 2016. B-Refactoring: Automatic test code refactoring to improve dynamic analysis. IST (2016), 65--80. Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. J. Yang, K. Hotta, Y. Higo, and S. Kusumoto. 2015. Towards purity-guided refactoring in Java. In ICSME. 521--525. Google ScholarGoogle ScholarDigital LibraryDigital Library
  54. Vassilis E. Zafeiris, Sotiris H. Poulias, N.A. Diamantidis, and E.A. Giakoumakis. 2017. Automated refactoring of super-class method invocations to the Template Method design pattern. IST (2017), 19--35.Google ScholarGoogle Scholar

Recommendations

Comments

Login options

Check if you have access through your login credentials or your institution to get full access on this article.

Sign in
  • Published in

    cover image ACM Other conferences
    SBSI '18: Proceedings of the XIV Brazilian Symposium on Information Systems
    June 2018
    578 pages
    ISBN:9781450365598
    DOI:10.1145/3229345

    Copyright © 2018 ACM

    Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

    Publisher

    Association for Computing Machinery

    New York, NY, United States

    Publication History

    • Published: 4 June 2018

    Permissions

    Request permissions about this article.

    Request Permissions

    Check for updates

    Qualifiers

    • research-article
    • Research
    • Refereed limited

    Acceptance Rates

    Overall Acceptance Rate181of557submissions,32%

PDF Format

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader