Software Visualization

Program-Transformation.Org: The Program Transformation Wiki
The software visualization [1] group at GeorgiaTech describes software visualization as:
  • the use of computer graphics and animation to help illustrate and present computer programs, processes, and algorithms. Software visualization systems can be used in teaching to help students understand how algorithms work, and they can be used in program development as a way to help programmers understand their code better.

The MIT Press has published a book on the subject edited by Stasko et al. called Software visualization: programming as a multimedia experience, 1998.

Claire Knight and Malcolm Munro from the ResearchInstituteInSoftwareEvolution provide a definition which emphasizes that visualization provides a view that eliminates some of the overwhelming complexity of software systems:

  • Software visualization is a discipline that makes use of various forms of imagery to provide insight and understanding and to reduce complexity of the existing system under consideration (Proc. IWPC, 1999).

They also work on finding real life metaphors to use when visualizing software. Their current metaphor is that of a city: districts are classes, methods are buildings, dark buildings are private methods, etc.

Steve Eick has done quite some work on visualizing large software systems. He uses several clever tricks, one of which is to use individual pixels (!) to represent a line of code, keeping the indentation as it was in the original source text. Applied to several millions of lines of C-code from Lucent's 5ESS phone switch. See:

Lot's of software visualization is done through GraphVisualization?, for example to represent call graphs, control flow, data flow, and so on. A topic on its own -- see GraphXML, ExternalGraphTools, DaVinciSystem, ...

A visualization technique developed for the purpose of ReverseEngineering is SHriMP -- Simple Hierarchical Multi-Perspective views. The SHriMP visualization technique uses a nested-graph formalism, and a fisheye-view for manipulating large graphs while providing context and preserving constraints such as orthogonality and proximity. SHriMP has been incorporated in the RigiSystem. More info:

Visualization for object oriented systems is provided by CodeCrawler.

Resources include

CategoryProgramUnderstanding | Contributions by ArieVanDeursen