Recommending Trips in the Archipelago of Refactorings

  • Theofanis Vartziotis
  • Apostolos V. ZarrasEmail author
  • Anastasios Tsimakis
  • Panos Vassiliadis
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 12011)


The essence of refactoring is to improve source code quality, in a principled, behavior preserving, one step at the time, process. To this end, the developer has to figure out the refactoring steps, while working on a specific source code fragment. To facilitate this task, the documentation that explains each primitive refactoring typically provides guidelines and tips on how to combine it with further refactorings. However, the developer has to cope with many refactorings and lots of guidelines.

To deal with this problem, we propose a graph-based model that formally specifies refactoring guidelines and tips in terms of nodes that correspond to refactorings and edges that denote part-of, instead-of and succession relations. We refer to this model as the Map of the Archipelago of Refactorings and we use it as the premise of the Refactoring Trip Advisor, a refactoring recommendation tool that facilitates the combination of refactorings. A first assessment of the tool in a practical scenario that involves 16 developers and a limited set of refactorings for composing and moving methods brought out positive results that motivate further studies of a larger scale and scope.


Refactoring recommendation Refactoring graph Refactoring combination 



We would like to thank the anonymous reviewers for their feedback on the paper.


  1. 1.
    Cook, T.D., Campbell, D.T.: Quasi-Experimentation: Design and Analysis Issues for Field Settings. Houghton Mifflin Company, Boston (1979)Google Scholar
  2. 2.
    Al Dallal, J.: Identifying refactoring opportunities in object-oriented code: a systematic literature review. Inf. Softw. Technol. 58, 231–249 (2015)CrossRefGoogle Scholar
  3. 3.
    Fokaefs, M., Tsantalis, N., Stroulia, E., Chatzigeorgiou, A.: Identification and application of extract class refactorings in object-oriented systems. J. Syst. Softw. 85(10), 2241–2260 (2012)CrossRefGoogle Scholar
  4. 4.
    Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley, Boston (2000)zbMATHGoogle Scholar
  5. 5.
    Kim, M., Zimmermann, T., Nagappan, N.: An empirical study of refactoring challenges and benefits at Microsoft. IEEE Trans. Softw. Eng. 40(7), 633–649 (2014)CrossRefGoogle Scholar
  6. 6.
    Mens, T., Tourwé, T.: A survey of software refactoring. IEEE Trans. Softw. Eng. 30(2), 126–139 (2004)CrossRefGoogle Scholar
  7. 7.
    Mens, T., Taentzer, G., Runge, O.: Analysing refactoring dependencies using graph transformation. Softw. Syst. Model. 6(3), 269–285 (2007)CrossRefGoogle Scholar
  8. 8.
    Moghadam, I.H., Cinnéide, M.Ó.: Resolving conflict and dependency in refactoring to a desired design. e-Informatica 9(1), 37–56 (2015)Google Scholar
  9. 9.
    Morales, R., Chicano, F., Khomh, F., Antoniol, G.: Efficient refactoring scheduling based on partial order reduction. J. Syst. Softw. 145, 25–51 (2018)CrossRefGoogle Scholar
  10. 10.
    Murphy-Hill, E.R., Black, A.P.: Refactoring tools: fitness for purpose. IEEE Softw. 25(5), 38–44 (2008)CrossRefGoogle Scholar
  11. 11.
    Opdyke, W.F.: Refactoring object-oriented frameworks. Ph.D. thesis, University of Illinois - Urbana Champaign (1992)Google Scholar
  12. 12.
    Tsantalis, N., Chatzigeorgiou, A.: Identification of move method refactoring opportunities. IEEE Trans. Softw. Eng. 99(3), 347–367 (2009)CrossRefGoogle Scholar
  13. 13.
    Tsantalis, N., Chatzigeorgiou, A.: Identification of extract method refactoring opportunities for the decomposition of methods. J. Syst. Softw. 84(10), 1757–1782 (2011)CrossRefGoogle Scholar
  14. 14.
    Tsimakis, A., Zarras, A.V., Vassiliadis, P.: The three-step refactoring detector pattern. In: Proceedings of the 24th European Conference on Pattern Languages of Programs (EuroPLoP) (2019, to appear).
  15. 15.
    Van Der Straeten, R., Jonckers, V., Mens, T.: A formal approach to model refactoring and model refinement. Softw. Syst. Model. 6(2), 139–162 (2007)CrossRefGoogle Scholar
  16. 16.
    Zarras, A.V., Vartziotis, T., Vassiliadis, P.: Navigating through the archipelago of refactorings. In: Proceedings of the the Joint 23rd ACM SIGSOFT Symposium on the Foundations of Software Engineering and 15th European Software Engineering Conference (FSE/ESEC), pp. 922–925 (2015)Google Scholar
  17. 17.
    Zarras, A.V., Vassiliadis, P., Dinos, I.: Keep calm and wait for the spike! insights on the evolution of Amazon services. In: Proceedings of the 28th International Conference on Advanced Information Systems Engineering (CAiSE), pp. 444–458 (2016)CrossRefGoogle Scholar

Copyright information

© Springer Nature Switzerland AG 2020

Authors and Affiliations

  • Theofanis Vartziotis
    • 1
  • Apostolos V. Zarras
    • 1
    Email author
  • Anastasios Tsimakis
    • 1
  • Panos Vassiliadis
    • 1
  1. 1.Department of Computer Science and EngineeringUniversity of IoanninaIoanninaGreece

Personalised recommendations