The Program Visualization system or PV
is a research prototype of an integrated graphics programming
environment.
PV aids the programmer in writing, debugging,
and documenting software.
This progress report demonstrates
some of the parts of PV that have been developed to date.
The present implementation uses three medium resolution color
displays.
The right hand screen is used for menus.
The center screen is used for multiple overlapping windows.
And the left screen is used for spatial navigational aids.
The graphical menu of command choices
has been organized using the concept of index cards.
There are three sets of cards.
The first set controls both programs
and visualization binding tables.
These binding tables allow PV to display animated views
of running programs.
The second set of cards controls the graphics editor
for entire diagrams, both static and animated, objects,
connectors, and other specialized components
of visualizations and a variety of text fonts.
The third set of cards controls windows, grids,
and a number of utilities such as the Help button.
The index card format provides a strong organization
for the large command set that is necessary in an integrated
programming environment.
Graphics symbols guide the eye to each card
and help distinguish between them.
The programmer selects commands from the menu
by positioning a cursor over the desired command.
He positions the cursor by moving a puck on a data tablet.
Views of the program under development
are presented on the center screen
in windows which may be overlapped.
A menu command allows the window to be
brought to the foreground.
The left screen is used for maps of the software information
space called navigational aids or nav aids.
Nav aids help the user maintain his orientation
in the information space, and allow spatial access
to information as we will see.
There are four different nav aids.
The first three are system requirements, system structure,
and evolution or configuration control.
These nav aids organize the information
about a particular project.
A fourth nav aid, the library, guides the user
through the programming and graphics components that
are shared by all PV users.
Here, the user is looking at a system structure nav aid.
The diagram is composed of objects representing
modules and their interfaces.
This is the top level structure diagram
of CCA's multi-based project.
The user can zoom into any of the objects
to see more detail about the corresponding module.
Here, he chooses the logical database processor module.
This process can be repeated until reaching
the most detailed level, which is the actual source
code for the object.
The user has exercised an option to put
the result of the zoom in a new window,
so he can see both the structure diagram
and code at the same time.
The user finds he needs to write a small sort subroutine.
He makes a window for the visualizations associated
with this module.
The PV graphics editor allows users to specify graphics
interactively.
But in most cases, the programmer
will use the PV library.
The user cycles the nav aid stack,
bringing the library nav aid to the top.
Here is a selection of nodes in the library.
The programmer has decided to use a one-dimensional array
to hold the set of integers to be sorted,
and he goes to the appropriate node.
This node forms a special group called the cluster--
a set of related components of different types.
The user zooms in on the graphic template
for the one-dimensional array.
He makes a new window for it on the center display.
Using the general-purpose copy button,
the user makes two copies of the array template in the graphics
window.
The user now fills the slots of the array templates
with the name of each array shown
in white and the name of its index shown in gold.
As each slot is filled, its outline disappears.
Recall that the library clusters for arrays
contain templates for graphics and code.
While all templates can be accessed by zooming,
as we saw before, the system also
provides a command to automatically access
code templates once the graphics are defined.