Automatic inheritance hierarchy restructuring and method refactoring

Most, object-oriented programs have imperfectly designed inheritance hierarchies and imperfectly factored methods, and these imperfections tend to increase with maintenance. Hence, even object-oriented programs are more expensive to maintain, harder to understand and larger than necessary. Automatic restructuring of inheritance hierarchies and refactoring of methods can improve the design of inheritance hierarchies, and the factoring of methods. This results in programs being smaller, having better code re-use and being more consistent. This paper describes Guru, a prototype tool for automatic inheritance hierarchy restructuring and method refactoring of Self programs. Results from realistic applications of the tool are presented.

[1]  Guy W. Mineau,et al.  Automatic Structuring of Knowledge Bases by Conceptual Clustering , 1995, IEEE Trans. Knowl. Data Eng..

[2]  Karl J. Lieberherr,et al.  From objects to classes: algorithms for optimal object-oriented design , 1991, Softw. Eng. J..

[3]  Ian M. Holland,et al.  Object-oriented programming: an objective sense of style , 1988, OOPSLA 1988.

[4]  Ivan Moore,et al.  A Simple and Efficient Algorithm for Inferring Inheritance Hierarchies , 1996 .

[5]  Adele Goldberg,et al.  SmallTalk 80: The Language , 1989 .

[6]  Eduardo Casais,et al.  Managing class evolution in object-oriented systems , 1995 .

[7]  Karl J. Lieberherr,et al.  Object-oriented programming: an objective sense of style , 1988, OOPSLA '88.

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

[9]  Eduardo Casais,et al.  An Incremental Class Reorganization Approach , 1992, ECOOP.

[10]  Hafedh Mili,et al.  Building and maintaining analysis-level class hierarchies using Galois Lattices , 1993, OOPSLA '93.

[11]  Kevin Lano,et al.  Reverse Engineering and Software Maintenance: A Practical Approach , 1993 .

[12]  Ivan Moore Guru - A Tool for Automatic Restructuring of Self Inheritance Hierarchies , 1995 .

[13]  Ole Agesen The Cartesian Product Algorithm: Simple and Precise Type Inference Of Parametric Polymorphism , 1995, ECOOP.

[14]  William F. Opdyke,et al.  Refactoring object-oriented frameworks , 1992 .

[15]  Marianne Huchard,et al.  On automatic class insertion with overloading , 1996, OOPSLA '96.

[16]  Randall B. Smith,et al.  Self: The power of simplicity , 1987, OOPSLA 1987.

[17]  Russel L. Winder,et al.  A Design Method for Object-Oriented Programming , 1989, ECOOP.

[18]  J. Gerard Wolff,et al.  Towards a new concept of software , 1994, Softw. Eng. J..