old, old, old, old, old research
home
A research paper on Software Visualization and Program Understanding and the slides from my presentation of this paper.

I have a variety of research interests that I pursue here and at the Information Science Department of the University of Pittsburgh. Currently, I am interested in applying visualization tools to the task of understanding abstract and non-spatial data. In particular I am investigating the visualization of software in order to enhance understanding of its structure to allow faster and more accurate maintenance. At this point I am calling this visualization"software blueprints".

The following screen-shot shows a portion of the tool I built that allows navigation among modules thatare represented according to representative metric measurements taken directly from the code.


Software Blueprints:Visualization of Program Metrics for Maintenance

software blueprint

The above visualization shows a portion of a large program written in the "C" programming language.The center module, "main", is shown surrounded by the modules that it calls. Metric information about these modules is shown visually and in the key to the right of the display. The shape of the visual objectshows the relative complexity of the code while the size of the objects indicates the number of lines of source code. An additional metric that is derived from the code is called a readablity index and is representedby the object color. These metrics have been demonstrated to be a reliable indicator for code maintainability.

Clicking on the "code"button in the upper left of the display allows the actual source code that has generated the display to be viewed.

Clicking on one of the modules which are organized on the perimeter of the central object will change the display so that that module will become the central visual object and the modules that it calls will be shown on its perimeter.


A programmer trying to understand a program or section of program so that she can do maintenance, can usethe tool to try to gain some basic comprehension of the nature of the modulesand an understanding of the structure and relationships among the modules.This understanding can be confirmed by actual code inspection while using the tool to navigate the structure.