Skip to main content

Revisiting Refactoring Mechanics from Tool Developers’ Perspective

  • Conference paper
  • First Online:
Formal Methods: Foundations and Applications (SBMF 2020)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 12475))

Included in the following conference series:

Abstract

Refactoring is a widely used development practice, available in mainstream IDEs. A previous work conducted a survey with developers, and finds that most of them use their experience to define refactoring mechanics for each refactoring type. However, we do not know whether a similar scenario happens in the context of refactoring tool developers. In this work, we conduct a study to compare refactoring mechanics implemented by tool developers. We apply 10 types of refactorings to 157,339 programs using 27 refactoring implementations from three tools, and compare the outputs. The refactoring implementations of Eclipse, NetBeans, and JRRT have different mechanics in all refactoring types.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 54.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 69.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    It is a distributed transaction solution with high performance and ease of use for microservices architecture.

  2. 2.

    It is a reliable distributed configuration system to manage applications’ configurations in different environments and different clusters.

  3. 3.

    It is a database connection pool written in Java that provides monitoring functionalities.

  4. 4.

    The Spring Framework is an open source application framework for building web Java applications.

References

  1. Beck, K.: Extreme Programming Explained: Embrace Change. Addison-Wesley Longman Publishing Company Inc., Boston (2000)

    Google Scholar 

  2. Daniel, B., Dig, D., Garcia, K., Marinov, D.: Automated testing of refactoring engines. In: Proceedings of the Foundations of Software Engineering, pp. 185–194. ACM (2007)

    Google Scholar 

  3. Eclipse.org.: Eclipse Project (2018). http://www.eclipse.org

  4. Falleri, J., Morandat, F., Blanc, X., Martinez, M., Monperrus, M.: Fine-grained and accurate source code differencing. In: Proceedings of the Automated Software Engineering, ASE, pp. 313–324 (2014)

    Google Scholar 

  5. Fluri, B., Wuersch, M., PInzger, M., Gall, H.: Change distilling: tree differencing for fine-grained source code change extraction. IEEE Trans. Softw. Eng. 33(11), 725–743 (2007)

    Google Scholar 

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

    Google Scholar 

  7. Gligoric, M., Behrang, F., Li, Y., Overbey, J., Hafiz, M., Marinov, D.: Systematic testing of refactoring engines on real software projects. In: Castagna, G. (ed.) ECOOP 2013. LNCS, vol. 7920, pp. 629–653. Springer, Heidelberg (2013). https://doi.org/10.1007/978-3-642-39038-8_26

    Chapter  Google Scholar 

  8. Gligoric, M., Gvero, T., Jagannath, V., Khurshid, S., Kuncak, V., Marinov, D.: Test generation through programming in UDITA. In: Proceedings of the International Conference on Software Engineering, ICSE, pp. 225–234. ACM (2010)

    Google Scholar 

  9. Jackson, D.: Software Abstractions: Logic, Language, and Analysis. The MIT Press, Cambridge (2012)

    Google Scholar 

  10. Jackson, D., Schechter, I., Shlyahter, H.: Alcoa: the alloy constraint analyzer. In: Proceedings of the International Conference on Software Engineering, pp. 730–733. ICSE (2000)

    Google Scholar 

  11. JetBrains: IntelliJ IDEA (2018). https://www.jetbrains.com/idea/

  12. Kerievsky, J.: Refactoring to Patterns. Pearson Higher Education, London (2004)

    Book  Google Scholar 

  13. Kim, M., Zimmermann, T., Nagappan, N.: A field study of refactoring challenges and benefits. In: Proceedings of the International Symposium on the Foundations of Software Engineering, pp. 50:1–50:11. FSE (2012)

    Google Scholar 

  14. Kim, M., Zimmermann, T., Nagappan, N.: An empirical study of refactoring challenges and benefits at microsoft. IEEE Trans. Software Eng. 40(7), 633–649 (2014)

    Article  Google Scholar 

  15. Mens, T., Tourwé, T.: A survey of software refactoring. IEEE Trans. Software Eng. 30(2), 126–139 (2004)

    Article  Google Scholar 

  16. Mongiovi, M., Gheyi, R., Soares, G., Ribeiro, M., Borba, P., Teixeira, L.: Detecting overly strong preconditions in refactoring engines. IEEE Trans. Software Eng. 44(5), 429–452 (2018)

    Article  Google Scholar 

  17. Mongiovi, M., Gheyi, R., Soares, G., Teixeira, L., Borba, P.: Making refactoring safer through impact analysis. Sci. Comput. Program. 93, 39–64 (2014)

    Article  Google Scholar 

  18. Mongiovi, M., Mendes, G., Gheyi, R., Soares, G., Ribeiro, M.: Scaling testing of refactoring engines. In: Proceedings of the International Conference on Software Maintenance and Evolution, ICSME, pp. 371–380 (2014)

    Google Scholar 

  19. Murphy, G., Kersten, M., Findlater, L.: How are java software developers using the eclipse IDE? IEEE Softw. 23(4), 76–83 (2006)

    Article  Google Scholar 

  20. Murphy-Hill, E., Ayazifar, M., Black, A.P.: Restructuring software with gestures. In: Proceedings of the Symposium on Visual Languages and Human-Centric Computing, VL/HCC, pp. 165–172 (2011)

    Google Scholar 

  21. Murphy-Hill, E., Parnin, C., Black, A.P.: How we refactor, and how we know it. IEEE Trans. Software Eng. 38(1), 5–18 (2012)

    Article  Google Scholar 

  22. Oliveira, J., Gheyi, R., Mongiovi, M., Soares, G., Ribeiro, M., Garcia, A.: Revisiting the refactoring mechanics. Inf. Softw. Technol. 110, 136–138 (2019)

    Article  Google Scholar 

  23. Opdyke, W.: Refactoring object-oriented frameworks. Ph.D. thesis, University of Illinois at Urbana-Champaign (1992)

    Google Scholar 

  24. Oracle: Netbeans IDE (2018). http://www.netbeans.org

  25. Roberts, D.: Practical analysis for refactoring. Ph.D. thesis, University of Illinois at Urbana-Champaign (1999)

    Google Scholar 

  26. Schäfer, M., Ekman, T., Moor, O.: Challenge proposal: verification of refactorings. In: Proceedings of the 3rd Workshop on Programming Languages Meets Program Verification, pp. 67–72. ACM (2008)

    Google Scholar 

  27. Schäfer, M., de Moor, O.: Specifying and implementing refactorings. In: Proceedings of the International Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA, pp. 286–301 (2010)

    Google Scholar 

  28. Soares, G., Gheyi, R., Massoni, T.: Automated behavioral testing of refactoring engines. IEEE Trans. Software Eng. 39(2), 147–162 (2013)

    Article  Google Scholar 

  29. Soares, G., Gheyi, R., Serey, D., Massoni, T.: Making program refactoring safer. IEEE Softw. 27(4), 52–57 (2010)

    Article  Google Scholar 

  30. Soares, G., Mongiovi, M., Gheyi, R.: Identifying overly strong conditions in refactoring implementations. In: Proceedings of the International Conference on Software Maintenance, ICSM, pp. 173–182 (2011)

    Google Scholar 

  31. Steimann, F., Thies, A.: From public to private to absent: refactoring java programs under constrained accessibility. In: Proceedings of the European Conference on Object-Oriented Programming, ECOOP, pp. 419–443 (2009)

    Google Scholar 

  32. Tempero, E., Gorschek, T., Angelis, L.: Barriers to refactoring. Commun. ACM 60(10), 54–61 (2017)

    Article  Google Scholar 

  33. Tokuda, L., Batory, D.: Evolving object-oriented designs with refactorings. Autom. Softw. Eng. 8, 89–120 (2001)

    Article  Google Scholar 

  34. Vakilian, M., Chen, N., Negara, S., Rajkumar, B.A., Bailey, B.P., Johnson, R.E.: Use, disuse, and misuse of automated refactorings. In: Proceedings of the International Conference on Software Engineering, ICSE, pp. 233–243 (2012)

    Google Scholar 

Download references

Acknowledgments

We would like to thank the anonymous reviewers, Gustavo Soares, Augusto Sampaio, Paulo Borba, and Leopoldo Teixeira for their insightful suggestions. This work was partially supported by CNPq (426005/2018-0 and 311442/2019-6) and CAPES (117875 and 175956) grants.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Rohit Gheyi .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2020 Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

Cite this paper

Oliveira, J., Gheyi, R., Pontes, F., Mongiovi, M., Ribeiro, M., Garcia, A. (2020). Revisiting Refactoring Mechanics from Tool Developers’ Perspective. In: Carvalho, G., Stolz, V. (eds) Formal Methods: Foundations and Applications. SBMF 2020. Lecture Notes in Computer Science(), vol 12475. Springer, Cham. https://doi.org/10.1007/978-3-030-63882-5_3

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-63882-5_3

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-63881-8

  • Online ISBN: 978-3-030-63882-5

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics