Rigi is a system for understanding large information spaces such as software programs, documentation, and the World Wide Web. This is done through a reverse engineering approach that models the system by extracting artifacts from the information space, organizing them into higher level abstractions, and presenting the model graphically.
The Rigi user interface is a graph editor, called rigiedit, which is used to browse, analyze, and modify a graph that models a given system. This graph is simplified by hierarchically clustering related artifacts into subsystems that, in turn, are clustered into larger subsystems. The choice of components in a subsystem depends on its function, the intended audience, the application area, and the goals of the modeling exercise.
The rigiedit program has built-in operations to assist in program understanding. The editor can be used to select and group artifacts based on certain modularity principles such as data abstraction, low coupling among subsystems, and high cohesion within subsystems. Various statistical reports can help with maintenance or reengineering tasks.
Also, rigiedit is programmable using a scripting language called Tcl. A library of scripts is supplied for performing common reverse engineering tasks. User-defined scripts can easily be written for specific needs.
Graph models are stored and retrieved by rigiedit. The data is formatted in Rigi Standard Format (RSF), which is a stream of triplets used to define graph nodes, arcs, and attributes. Attributes can be used to link to information outside the model, such as source code, documentation, images, and hypertext.