Guru is a tool which assists in Self improvement.

Guru was developed at the University of Manchester as part of Ivan Moore's PhD research into automatic refactoring of object-oriented programs.

Given a collection of Self objects, Guru produces an equivalent set of objects in which there is no duplication of methods or certain types of expressions. To achieve this, Guru creates a replacement inheritance hierarchy and methods for factoring out expressions.

The central motivation is that as systems evolve the design can deteriorate. Automatically refactoring a system can help a programmer restructure the system to reverse any deterioration. Other motivation is to enable a programmer to discover a better design for a system at any time, whether during initial stages or during maintenance (reverse engineering style), it's all the same really. Guru has been developed in and for the object-centric language Self.

Something similar to Guru is being worked on for Java code, called Condenser.

Self runs on Sun SPARC, Mac and Linux.

Click here to download the latest version.

Thanks to sourceforge for hosting Guru. SourceForge Logo

Guru is available only under the terms of it's license agreement.

Three papers and a PhD thesis have been written about Guru:

An example inheritance hierarchy before using Guru

The inheritance hierarchy restructured by Guru