JAVA’s interface construct is widely perceived as a weak surrogate
for multiple inheritance. Consequently, it should come as no
surprise that despite their potential for writing highly decoupled
code, interfaces are used rather sparingly. We have devised a
conceptual framework for the utilization of interfaces in JAVA
programs, and suggest tool support lessening the coding effort
induced by the introduction and maintenance of additional
interfaces, as well as a metrics suit measuring how and to which
extent interfaces are actually used.