Refactoring class hierarchies with KABA

KABA is an innovative system for refactoring Java class hierar-chies. It uses the Snelting/Tip algorithm [13] in order to determine a behavior-preserving refactoring which is optimal with respect to a given set of client programs. KABA can be based on dynamic as well as static program analysis. The static variant will preserve program behavior for all possible input values; the dynamic version guarantees preservation of behavior for all runs in a given test suite. KABA offers automatic refactoring as well as manual refactoring using a dedicated editor. In this contribution, we recapitulate the Snelting/Tip algorithm, present the new dynamic version, and explain new extensions which allow to handle full Java. We then present five case studies which discuss the KABA refactoring proposals for programs such as javac and antlr. KABA proved that javac does not need refactoring, but generated semantics-based refactoring proposals for antlr.

[1]  Bernhard Ganter,et al.  Formal Concept Analysis: Mathematical Foundations , 1998 .

[2]  K. Beck,et al.  Extreme Programming Explained , 2002 .

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

[4]  Ondrej Lhoták,et al.  Scaling java points-to using sparc , 2003 .

[5]  Barbara G. Ryder,et al.  Points-to analysis for Java using annotated constraints , 2001, OOPSLA '01.

[6]  Ondrej Lhoták,et al.  Scaling Java Points-to Analysis Using SPARK , 2003, CC.

[7]  Ivan Moore,et al.  Automatic inheritance hierarchy restructuring and method refactoring , 1996, OOPSLA '96.

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

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

[10]  David F. Bacon,et al.  Fast static analysis of C++ virtual function calls , 1996, OOPSLA '96.

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

[12]  William G. Griswold,et al.  Supporting the restructuring of data abstractions through manipulation of a program visualization , 1998, TSEM.

[13]  Eduardo Casais The Automatic Reorganization of Object Oriented Hierarchies - A Case Study , 1994 .

[14]  William G. Griswold,et al.  Automated support for program refactoring using invariants , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[15]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

[16]  Frank Tip,et al.  Class hierarchy specialization , 2000, Acta Informatica.