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. Both of these benefits improve software modularity.
This website documents our ongoing work in developing a refactoring algorithm that assists developers in taking advantage of the enhanced interface feature for their legacy Java software.
Pull Request Study
Results from our pull request study can be found on this page.
Experiment Source Code
Descriptions and source code used in our experiments is available on this page.
If you are interested in contributing to or finding out more about the project, please check out our prototype implementation, past presentations, or get in touch with us.
This material is based upon work supported by PSC-CUNY under award #69165-00 47.