Decoupling classes with inferred interfaces

Using small, context-specific interfaces in variable declarations serves the decoupling of classes and increases a program's flexibility. To minimize its interface, a thorough analysis of the protocol needed from a variable is required. Currently available refactorings for the extraction of interfaces leave the programmer alone with the decision which methods to include or, more problematically, which to omit: they let him choose manually from the protocol of an existing type, and only then offer to use the new interface where (if) possible. To aid the programmer in defining a new interface, we have developed a new refactoring that infers it from a variable's declaration and automatically inserts it into the code.

[1]  Jens Palsberg,et al.  Object-oriented type inference , 1991, OOPSLA '91.

[2]  Ralph E. Johnson,et al.  Creating abstract superclasses by refactoring , 1993, CSC '93.

[3]  H. D. Rombach,et al.  The Goal Question Metric Approach , 1994 .

[4]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[5]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[6]  David Grove,et al.  Optimization of Object-Oriented Programs Using Static Class Hierarchy Analysis , 1995, ECOOP.

[7]  Brian Henderson-Sellers,et al.  Object-Oriented Metrics , 1995, TOOLS.

[8]  Frank Tip,et al.  Class hierarchy specialization , 1997, OOPSLA '97.

[9]  Martin Fowler,et al.  Refactoring - Improving the Design of Existing Code , 1999, Addison Wesley object technology series.

[10]  Martin Fowler. Refactoring Improving the Design of Existing Code , 1999 .

[11]  M. Fowler Improving the Design of Existing Code , 2000 .

[12]  Gerald Baumgartner,et al.  Safe Structural Conformance for Java , 2000, Comput. J..

[13]  Frank Tip,et al.  Understanding class hierarchies using concept analysis , 2000, TOPL.

[14]  Scott F. Smith,et al.  Precise Constraint-Based Type Inference for Java , 2001, ECOOP.

[15]  Friedrich Steimann,et al.  Role = Interface: A Merger of Concepts , 2001 .

[16]  Frank Tip,et al.  Practical extraction techniques for Java , 2002, TOPL.

[17]  Frank Tip,et al.  Refactoring for generalization using type constraints , 2003, OOPSLA '03.

[18]  Friedrich Steimann,et al.  Towards the systematic use of interfaces in JAVA programming , 2003, PPPJ.

[19]  Philip Mayer Analyzing the use of interfaces in large OO projects , 2003, OOPSLA '03.

[20]  Dhananjay M. Dhamdhere,et al.  Bidirectional data flow analysis for type inferencing , 2003, Comput. Lang. Syst. Struct..

[21]  Friedrich Steimann,et al.  Interface utilization in the Java Development Kit , 2004, SAC '04.

[22]  Gregor Snelting,et al.  Refactoring class hierarchies with KABA , 2004, OOPSLA '04.

[23]  Friedrich Steimann,et al.  Patterns of Interface-Based Programming , 2005, J. Object Technol..

[24]  J. Urry Complexity , 2006, Interpreting Art.