Automated Refactoring of Legacy Java Software to Default Methods (bibtex)
by Raffi Khatchadourian and Hidehiko Masuhara
Abstract:
Java 8 default methods, which allow interfaces to contain (instance) method implementations, are useful for the skeletal implementation software design pattern. However, it is not easy to transform existing software to exploit default methods as it requires analyzing complex type hierarchies, resolving multiple implementation inheritance issues, reconciling differences between class and interface methods, and analyzing tie-breakers (dispatch precedence) with overriding class methods to preserve type-correctness and confirm semantics preservation. In this paper, we present an efficient, fully-automated, type constraint-based refactoring approach that assists developers in taking advantage of enhanced interfaces for their legacy Java software. The approach features an extensive rule set that covers various corner-cases where default methods cannot be used. To demonstrate applicability, we implemented our approach as an Eclipse plug-in and applied it to 19 real-world Java projects, as well as submitted pull requests to popular GitHub repositories. The indication is that it is useful in migrating skeletal implementation methods to interfaces as default methods, sheds light onto the pattern's usage, and provides insight to language designers on how this new construct applies to existing software.
Reference:
Automated Refactoring of Legacy Java Software to Default Methods (Raffi Khatchadourian and Hidehiko Masuhara), In Proceedings of International Conference on Software Engineering (ICSE'17), IEEE Press, 2017.
Bibtex Entry:
@inproceedings{khatchadourian2017icse,
  acceptanceratio = {17% (68/398)},
  booktitle = {Proceedings of International Conference on Software
		  Engineering (ICSE'17)},
  month = may,
  pdf = {icse2017.pdf},
  author = {Raffi Khatchadourian and Hidehiko Masuhara},
  title = {Automated Refactoring of Legacy {Java} Software to Default Methods},
  optbooktitle = {Proceedings of the 39th International Conference on Software Engineering},
  optseries = {ICSE '17},
  year = {2017},
  isbn = {978-1-5386-3868-2},
  location = {Buenos Aires, Argentina},
  pages = {82--93},
  date = {2017-05-24},
  numpages = {12},
  url = {https://doi.org/10.1109/ICSE.2017.16},
  doi = {10.1109/ICSE.2017.16},
  acmid = {3097379},
  publisher = {IEEE Press},
  address = {Piscataway, NJ, USA},
  keywords = {Java, default methods, interfaces, refactoring},
  abstract = {Java 8 default methods, which allow interfaces to contain (instance) method implementations, are useful for the skeletal implementation software design pattern. However, it is not easy to transform existing software to exploit default methods as it requires analyzing complex type hierarchies, resolving multiple implementation inheritance issues, reconciling differences between class and interface methods, and analyzing tie-breakers (dispatch precedence) with overriding class methods to preserve type-correctness and confirm semantics preservation. In this paper, we present an efficient, fully-automated, type constraint-based refactoring approach that assists developers in taking advantage of enhanced interfaces for their legacy Java software. The approach features an extensive rule set that covers various corner-cases where default methods cannot be used. To demonstrate applicability, we implemented our approach as an Eclipse plug-in and applied it to 19 real-world Java projects, as well as submitted pull requests to popular GitHub repositories. The indication is that it is useful in migrating skeletal implementation methods to interfaces as default methods, sheds light onto the pattern's usage, and provides insight to language designers on how this new construct applies to existing software.}
}
Powered by bibtexbrowser