In computer science, the primary application of visualization technology is software visualization: the use of graphics to portray information obtained from a static or dynamic analysis of a program. Software visualization is used in several phases of the software development lifecycle, but it is of particular interest in the “back- end” tasks of debugging, performance tuning, and understanding complex systems in order to maintain them. Software visualization is expected to improve the back end of the software development process which can result in huge cost savings. Debugging, tuning and maintaining programs comprise the majority of the high costs associated with software development. Unfortunately, the rate at which these software technologies have improved has been gradual. The task of writing software visualization tools is difficult, and most existing systems are limited to a narrow scope, such as the visualization of a single well-understood algorithm from a hand-instrumented source program. This book presents software visualization at a level suitable for a senior level undergraduate or graduate course or for the interested technical professional. The approach is to give a survey of the field, and then present a specific research framework designed to reduce the effort required to write visualization tools. A wide range of simple program control flow and data structure visualizations are then presented as examples of how to obtain information about program behavior, and how to present it graphically. Source code fragments and screen images illustrate each example.