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