5.9. Gravis

The Graph Visualizer tool Gravis visualizes a resource flow graph (RFG). An RFG contains facts extracted from a software system and additional analysis results. An RFG consists of nodes and edges. Views define subsets of these nodes and edges capturing different aspects of the system. Nodes and edges are collectively addressed as graph elements (or simply elements). Each element can be present in multiple views. Nodes, edges, views and the graph itself can have attributes (named properties).

A node represents an entity of the system under analysis, an edge represents a relationship between the entities that it connects. Edges are directed, so each edge has a source node and a target node. If both source node and target node are identical, the edge is a loop. Nodes and edges have types to express different kinds of entities and relationships. Types can have subtypes to express more specialized entities/relationships, e. g., the edge-call Call type represents any kind of “call” relationship between nodes, whereas its subtypes edge-explicit-call Explicit_Call and edge-implicit-call Implicit_Call can be used to differentiate between explicit and implicit calls.

Certain edge types (edge-belongs-to Belongs_To and its subtypes) are used to represent hierarchies of nodes. Such edges are referred to as “hierarchical edges” below. Hierarchical edges are always directed from the part (“child”) to its container (“parent”).

In addition to being able to visualize RFGs, Gravis is also an RFG editor, offering operations to add and remove elements, create views, run analyses, etc.