A method, system, apparatus, and program product for displaying a program
slice diagram, which represents source code. The program slice diagram
includes a directed graph that has multiple nodes and arcs connecting the
nodes. Nodes can correspond to statements within a selected subroutine of
the source code, variable references outside the subroutine, or calls
made to other subroutines that are considered part of the program slice.
Arcs represent data flow dependencies between the nodes. In another
aspect, the invention encompasses a software environment for visualizing
source code that includes a code browser, a block-level abstract syntax
tree viewer, a program slice browser, and a template viewer. This
software visualization environment is integrated, allows
cross-referencing between its components, and is coupled with a
performance visualization environment.