Skip to main content

A Refactoring Constraint Language and Its Application to Eiffel

  • Conference paper
ECOOP 2011 – Object-Oriented Programming (ECOOP 2011)

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

Included in the following conference series:

Abstract

We generalize previous work on constraint-based refactoring and develop it into the definition of a constraint language allowing the specification of refactorings in a completely declarative way. We present a compiler that transforms specifications in our language to plug-ins for an IDE that, together with an accompanying framework providing the necessary infrastructure, implement the specified refactoring tools. We evaluate our approach by presenting specifications of three different refactorings for the Eiffel programming language, and by applying the resulting refactoring tools to several sample programs. Outcome suggests that our approach is indeed viable.

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 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.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

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Andreae, C., Noble, J., Markstrum, S., Millstein, T.D.: A framework for implementing plug-gable type systems. In: Proc. of OOPSLA, pp. 57–74 (2006)

    Google Scholar 

  2. Ceri, S., Gottlob, G., Tanca, L.: What you always wanted to know about Datalog (and never dared to ask). IEEE Trans. Knowl. 1(1), 146–166 (1989)

    Article  Google Scholar 

  3. Daniel, B., Dig, D., Garcia, K., Marinov, D.: Automated testing of refactoring engines. In: Proc. of ESEC/SIGSOFT FSE, pp. 185–194 (2007)

    Google Scholar 

  4. Donovan, A., Kiezun, A., Tschantz, M.S., Ernst, M.D.: Converting Java programs to use generic libraries. In: Proc. of OOPSLA, pp. 15–34 (2004)

    Google Scholar 

  5. Eclipse, http://www.eclipse.org

  6. ECMA Standard Eiffel: Analysis, Design and Programming Language ECMA-367, 2nd edn. (2006)

    Google Scholar 

  7. EiffelStudio, http://www.eiffel.com/products/studio

  8. Fowler Refactoring, M.: Improving the Design of Existing Code. Addison-Wesley, Reading (1999)

    Google Scholar 

  9. Fuhrer, R., Tip, F., Kieżun, A., Dolby, J., Keller, M.: Efficiently Refactoring Java Applications to Use Generic Libraries. In: Gao, X.-X. (ed.) ECOOP 2005. LNCS, vol. 3586, pp. 71–96. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  10. Gobo Eiffel Tools and Libraries, http://www.gobosoft.com

  11. WG Griswold Program Restructuring as an Aid to Software Maintenance PhD Disserta-tion, University of Washington (1992)

    Google Scholar 

  12. Gosling, J., Joy, B., Steele, G., Bracha, G.: The Java Language Specification, http://java.sun.com/docs/books/jls/

  13. Junker, U.: QUICKXPLAIN: Preferred explanations and relaxations for over-constrained problems. In: Proc of AAAI, pp. 167–172 (2004)

    Google Scholar 

  14. Kegel, H., Steimann, F.: Systematically refactoring inheritance to delegation in Java. In: Proc. of ICSE, pp. 431–440 (2008)

    Google Scholar 

  15. Kiezun, A., Ernst, M.D., Tip, F., Fuhrer, R.M.: Refactoring for parameterizing Java classes. In: Proc. of ICSE, pp. 437–446 (2007)

    Google Scholar 

  16. Martin, R.: Agile Software Development: Principles, Patterns, and Practices. Prentice Hall, Englewood Cliffs (2003)

    Google Scholar 

  17. Marriott, K., Stuckey Programming, P.J.: with Constraints. MIT Press, Cambridge (1998)

    Google Scholar 

  18. Mens, T., Van Eetvelde, N., Demeyer, S., Janssens, D.: Formalizing refactorings with graph transformations. J. Softw. Maint. Evol. 17(4), 247–276 (2005)

    Article  Google Scholar 

  19. Meyer, B.: Object-Oriented Software Construction, 2nd edn. Prentice Hall International, Englewood Cliffs (1997)

    MATH  Google Scholar 

  20. Meyers, S., Duby, C.K., Reiss, S.P.: Constraining the structure and style of object-oriented programs. In: Proc of PPCP, pp. 200–209 (1993)

    Google Scholar 

  21. Opdyke, W.: Refactoring Object-Oriented Frameworks. PhD Dissertation, University of Illinois at Urbana-Champaign (1992)

    Google Scholar 

  22. Schäfer, M., Ekman, T., de Moor, O.: Sound and extensible renaming for Java. In: Proc. of OOPSLA, pp. 277–294 (2008)

    Google Scholar 

  23. Schäfer, M., Verbaere, M., Ekman, T., de Moor, O.: Stepping stones over the refactoring rubicon. In: Drossopoulou, S. (ed.) ECOOP 2009. LNCS, vol. 5653, pp. 369–393. Springer, Heidelberg (2009)

    Chapter  Google Scholar 

  24. Schäfer, M., Dolby, J., Sridharan, M., Torlak, E., Tip, F.: Correct refactoring of concurrent java code. In: D’Hondt, T. (ed.) ECOOP 2010. LNCS, vol. 6183, pp. 225–249. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  25. Schäfer, M., de Moor, O.: Specifying and implementing refactorings. In: Proc. of OOPSLA, pp. 286–301 (2010)

    Google Scholar 

  26. Steimann, F., Thies, A.: From public to private to absent: Refactoring java programs under constrained accessibility. In: Drossopoulou, S. (ed.) ECOOP 2009. LNCS, vol. 5653, pp. 419–443. Springer, Heidelberg (2009)

    Chapter  Google Scholar 

  27. Steimann, F., von Pilgrim, J.: Refactoring with foresight, http://www.feu.de/ps/docs/Foresight.pdf

  28. Tamura Cream, N.: Class Library for Constraint Programming in Java, http://bach.istc.kobe-u.ac.jp/cream/

  29. Tip, F., Kiezun, A., Bäumer, D.: Refactoring for generalization using type constraints. In: Proc. of OOPSLA, pp. 13–26 (2003)

    Google Scholar 

  30. Tip, F.: Refactoring using type constraints. In: Riis Nielson, H., Filé, G. (eds.) SAS 2007. LNCS, vol. 4634, pp. 1–17. Springer, Heidelberg (2007)

    Chapter  Google Scholar 

  31. Van Hentenryck, P.: Constraint Satisfaction in Logic Programming. MIT Press, Cambridge (1989)

    Google Scholar 

  32. Verbaere, M., Ettinger, R., de Moor, O.: JunGL: a scripting language for refactoring. In: Proc. of ICSE, pp. 172–181 (2006)

    Google Scholar 

  33. Xpand, http://wiki.eclipse.org/Xpand

  34. Xtext — Language Development Framework, http://www.eclipse.org/Xtext

  35. A Type System Framework for Xtext, http://eclipselabs.org/p/xtext-typesystem

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2011 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Steimann, F., Kollee, C., von Pilgrim, J. (2011). A Refactoring Constraint Language and Its Application to Eiffel. In: Mezini, M. (eds) ECOOP 2011 – Object-Oriented Programming. ECOOP 2011. Lecture Notes in Computer Science, vol 6813. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-22655-7_13

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-22655-7_13

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-22654-0

  • Online ISBN: 978-3-642-22655-7

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics