Defaultification refactoring: A tool for automatically converting Java methods to default (bibtex)
by Raffi Khatchadourian and Hidehiko Masuhara
Abstract:
Enabling interfaces to declare (instance) method implementations, Java 8 default methods can be used as a substitute for the ubiquitous skeletal implementation software design pattern. Performing this transformation on legacy software manually, though, may be non-trivial. The refactoring 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. All of this is necessary to preserve type-correctness and confirm semantics preservation. We demonstrate an automated refactoring tool called MIGRATE SKELETAL IMPLEMENTATION TO INTERFACE for transforming legacy Java code to use the new default construct. The tool, implemented as an Eclipse plug-in, is driven by an efficient, fully-automated, type constraint-based refactoring approach. It features an extensive rule set covering various corner-cases where default methods cannot be used. The resulting code is semantically equivalent to the original, more succinct, easier to comprehend, less complex, and exhibits increased modularity. A demonstration can be found at http://youtu.be/YZHIy0yePh8.
Reference:
Defaultification refactoring: A tool for automatically converting Java methods to default (Raffi Khatchadourian and Hidehiko Masuhara), In 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE), volume , 2017.
Bibtex Entry:
@inproceedings{khatchadourian2017ase-demo,
  pdf = {ase2017.pdf},
  author = {Raffi Khatchadourian and Hidehiko Masuhara},
  booktitle = {2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE)},
  title = {Defaultification refactoring: A tool for automatically converting {Java} methods to default},
  year = {2017},
  volume = {},
  number = {},
  pages = {984-989},
  keywords = {Java;Object-Oriented Programming;software maintenance;Java 8 default methods;Java methods;MIGRATE Skeletal Implementation;automated refactoring tool;complex type hierarchies;defaultification refactoring;dispatch precedence;legacy Java code;legacy software;method implementations;multiple implementation inheritance issues;refactoring approach;semantics preservation;type constraint;ubiquitous skeletal implementation software design pattern;Computer architecture;Java;Semantics;Software;Software engineering;Tools;default methods;eclipse;interfaces;java;refactoring;type constraints},
  doi = {10.1109/ASE.2017.8115716},
  issn = {},
  month = nov,
  date = {2017-11-01},
  location = {University of Illinois at Urbana-Champaign},
  abstract = {Enabling interfaces to declare (instance) method implementations, Java 8 default methods can be used as a substitute for the ubiquitous skeletal implementation software design pattern. Performing this transformation on legacy software manually, though, may be non-trivial. The refactoring 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. All of this is necessary to preserve type-correctness and confirm semantics preservation. We demonstrate an automated refactoring tool called MIGRATE SKELETAL IMPLEMENTATION TO INTERFACE for transforming legacy Java code to use the new default construct. The tool, implemented as an Eclipse plug-in, is driven by an efficient, fully-automated, type constraint-based refactoring approach. It features an extensive rule set covering various corner-cases where default methods cannot be used. The resulting code is semantically equivalent to the original, more succinct, easier to comprehend, less complex, and exhibits increased modularity. A demonstration can be found at http://youtu.be/YZHIy0yePh8.}
}
Powered by bibtexbrowser