     
Combination of features: Shell dependencies
The
following example is taken from [GKNV93]
and shows the dependencies of different shell programs. A combination of
aiSee features has been used to visualize it. There is a time scale
to indicate the origin of the programs. The shells themselves are nodes
that have to be placed at the same rank as their birth dates. The
level attribute is used to set the nodes at these
positions. In addition, the time axis should be positioned at the left
side of the shell dependence graph. This is achieved by the
horizontal_order attribute at some of the nodes. However,
this attribute doesn't work unless the graph is connected, which is why
three invisible edges are created.
Like any other edges, invisible edges influence the
positions of the nodes. They pull their adjacent nodes together. To
avoid this effect on the invisible edges, the priority of the invisible
edges is set to zero. There are many ways to change the priority. The
priority attribute can be set, and the factors
layout_downfactor, layout_upfactor and
layout_nearfactor as well. The real priority of a
downward edge is the product layout_downfactor * priority.
The Bourne shell should be positioned to the left
of the Mashey shell and the csh shell to the right of the
Mashey shell. Therefore, the level two nodes receive a horizontal
order. However, csh is on level three, and only its edge crosses
level two. Therefore, the horizontal_order attribute is set
for this edge as well. Now the edge is drawn to the right of the Mashey
shell.
Default attribute specifications are used for the height,
width and border width of nodes and for the style of edges in order to
reduce the amount of specification. The various shell types are differentiated
by using ellipses for the variations of the Korn shell, triangles for C shells
and a rhomboid for the tcl shell. The graph is acyclic, which is why
the layout algorithm minbackward is used. Edges are drawn using
splines.
The entire GDL source is to be found on the next page.
|