In this paper we present an approach to modeling and visualizing
the dynamic interactions among objects in a C++
application. We exploit UML diagrams to expressively visualize
both the static and dynamic properties of the application.
We make use of a class diagram and call graph of
the application to select the parts of the application to be
modeled, thereby reducing the number of objects and methods
under consideration with a concomitant reduction in the
cognitive burden on the user of our system. We use aspects
to insert probes into the application to enable profiling of the
interactions of objects and methods and we visualize these
interactions by providing sequence and communication diagrams
for the parts of the program under consideration. We
complement our static selectors with dynamic selectors that
enable the user to further filter objects and methods from
the sequence and communication diagrams, further enhancing
the cognitive economy of our system. A key feature of
our approach is the provision for dynamic interaction with
both the profiler and the application. Interaction with the
profiler enables filtering of methods and objects. Interaction
with the application enables the user to supply input to the
application to provide direction and enhance comprehension
or debugging