skip to main content
10.1145/2892664.2892681acmotherconferencesArticle/Chapter ViewAbstractPublication PagesmodularityConference Proceedingsconference-collections
short-paper
Public Access

Towards improving interface modularity in legacy Java software through automated refactoring

Published:14 March 2016Publication History

ABSTRACT

The skeletal implementation pattern is a software design pattern consisting of defining an abstract class that provides a partial interface implementation. However, since Java allows only single class inheritance, if implementers decide to extend a skeletal implementation, they will not be allowed to extend any other class. Also, discovering the skeletal implementation may require a global analysis. Java 8 enhanced interfaces alleviate these problems by allowing interfaces to contain (default) method implementations, which implementers inherit. Java classes are then free to extend a different class, and a separate abstract class is no longer needed; developers considering implementing an interface need only examine the interface itself. We argue that both these benefits improve software modularity, and discuss our ongoing work in developing an automated refactoring tool that would assist developers in taking advantage of the enhanced interface feature for their legacy Java software.

References

  1. D. Bäumer, E. Gamma, and A. Kiezun. Integrating refactoring support into a Java development tool. In Object-Oriented Programming, Systems, Languages, and Applications, 2001.Google ScholarGoogle Scholar
  2. J. Bloch. Effective Java. Prentice Hall, 2008.Google ScholarGoogle Scholar
  3. A. De Lucia, G. Di Lucca, A. Fasolino, P. Guerra, and S. Petruzzelli. Migrating legacy systems towards object-oriented platforms. In Int. Conf. Software Maintenance, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. D. Dig, J. Marrero, and M. D. Ernst. Refactoring sequential java code for concurrency via concurrent libraries. In Int. Conf. Software Engineering, 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. A. Donovan, A. Kie˙zun, M. S. Tschantz, and M. D. Ernst. Converting Java programs to use generic libraries. In Object-Oriented Programming, Systems, Languages, and Applications, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. R. Fuhrer, F. Tip, A. Kie˙zun, J. Dolby, and M. Keller. Efficiently refactoring Java applications to use generic libraries. In European Conference on Object-Oriented Programming, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. X. Ge and E. Murphy-Hill. Manual refactoring changes with automated refactoring validation. In Int. Conf. Software Engineering, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. C. S. Horstmann. Java SE 8 for the Really Impatient. Addison-Wesley Professional, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. H. Kegel and F. Steimann. Systematically refactoring inheritance to delegation in Java. In Int. Conf. Software Engineering, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. R. Khatchadourian, J. Sawin, and A. Rountev. Automated refactoring of legacy Java software to enumerated types. In Int. Conf. Software Maintenance, 2007.Google ScholarGoogle ScholarCross RefCross Ref
  11. A. Kie˙zun, M. D. Ernst, F. Tip, and R. M. Fuhrer. Refactoring for parameterizing Java classes. In Int. Conf. Software Engineering, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. K. Kontogiannis, J. Martin, K. Wong, R. Gregory, H. Müller, and J. Mylopoulos. Code migration through transformations: an experience report. In Conference of the Centre for Advanced Studies on Collaborative Research, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. A. Kumar, A. Sutton, and B. Stroustrup. Rejuvenating C++ programs through demacrofication. In Int. Conf. Software Maintenance, 2012. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. Y.-W. Kwon and E. Tilevich. Cloud refactoring: automated transitioning to cloud-based services. Automated Software Engineering, 2014. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. M. Mongiovi. Safira: A tool for evaluating behavior preservation. In Object-Oriented Programming, Systems, Languages, and Applications, 2011. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. W. F. Opdyke. Refactoring object-oriented frameworks. PhD thesis, University of Illinois at Urbana-Champaign, 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. Oracle Corporation. Java TM platform, standard edition 8 api, 2016. URL http://docs.oracle.com/javase/8/docs/api.Google ScholarGoogle Scholar
  18. Oracle Corporation. Default methods, 2016. URL http://docs.oracle.com/javase/tutorial/java/IandI/ defaultmethods.html.Google ScholarGoogle Scholar
  19. G. Soares, R. Gheyi, and T. Massoni. Automated behavioral testing of refactoring engines. IEEE Transactions on Software Engineering, 2013. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. W. Tansey and E. Tilevich. Annotation refactoring: inferring upgrade transformations for legacy applications. In Object-Oriented Programming, Systems, Languages, and Applications, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. F. Tip, A. Kie˙zun, and D. Bäumer. Refactoring for generalization using type constraints. In Object-Oriented Programming, Systems, Languages, and Applications, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. R. Vallée-Rai, P. Co, E. Gagnon, L. Hendren, P. Lam, and V. Sundaresan. Soot-a java bytecode optimization framework. In Conference of the Centre for Advanced Studies on Collaborative Research, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. D. von Dincklage and A. Diwan. Converting Java classes to use generics. In Object-Oriented Programming, Systems, Languages, and Applications, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Y. Zou and K. Kontogiannis. A framework for migrating procedural code to object-oriented platforms. Asia-Pacific Software Engineering Conference, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Introduction Approach Research Questions Methodology Conclusion & Future WorkGoogle ScholarGoogle Scholar

Index Terms

  1. Towards improving interface modularity in legacy Java software through automated refactoring

      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
        MODULARITY Companion 2016: Companion Proceedings of the 15th International Conference on Modularity
        March 2016
        217 pages
        ISBN:9781450340335
        DOI:10.1145/2892664

        Copyright © 2016 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: 14 March 2016

        Permissions

        Request permissions about this article.

        Request Permissions

        Check for updates

        Qualifiers

        • short-paper

        Acceptance Rates

        Overall Acceptance Rate41of139submissions,29%

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader