Visualizing an Execution Trace as a Compact Sequence Diagram Using Dominance Algorithms

Visualizing an execution trace of an object-oriented system as sequence diagrams is effective to understand the behavior of the system. However, sequence diagrams extracted from an execution trace are too large for developers to inspect since a trace involves a large number of objects and method calls. To support developers to understand extracted sequence diagrams, it is necessary to remove the less important details of the diagrams. In this paper, we apply a dominance algorithm to a dynamic call graph among objects in order to detect and remove local objects contributing to internal behavior of dominator objects. The case study shows our approach automatically removed about 40 percent of the objects from execution traces on average.

[1]  Lionel C. Briand,et al.  Toward the Reverse Engineering of UML Sequence Diagrams for Distributed Java Software , 2006, IEEE Transactions on Software Engineering.

[2]  Abdelwahab Hamou-Lhadj,et al.  Summarizing the Content of Large Traces to Facilitate the Understanding of the Behaviour of a Software System , 2006, 14th IEEE International Conference on Program Comprehension (ICPC'06).

[3]  Rainer Koschke,et al.  The Dominance Tree in Visualizing Software Dependencies , 2005, 3rd IEEE International Workshop on Visualizing Software for Understanding and Analysis.

[4]  Katsuro Inoue,et al.  AMIDA: a sequence diagram extraction toolkit supporting automatic phase detection , 2008, ICSE Companion '08.

[5]  Katsuro Inoue,et al.  Feature-level phase detection for execution trace using object cache , 2008, WODA '08.

[6]  Steven P. Reiss,et al.  Encoding program executions , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[7]  Shinji Kusumoto,et al.  Extracting sequence diagram from execution trace of Java program , 2005, Eighth International Workshop on Principles of Software Evolution (IWPSE'05).

[8]  Henry Lieberman,et al.  A real-time garbage collector based on the lifetimes of objects , 1983, CACM.

[9]  Oscar Nierstrasz,et al.  Tracking Objects to Detect Feature Dependencies , 2007, 15th IEEE International Conference on Program Comprehension (ICPC '07).

[10]  David M. Ungar,et al.  Generation Scavenging: A non-disruptive high performance storage reclamation algorithm , 1984, SDE 1.

[11]  Robert E. Tarjan,et al.  A fast algorithm for finding dominators in a flowgraph , 1979, TOPL.

[12]  M. Chial,et al.  in simple , 2003 .

[13]  Bharat Jayaraman,et al.  Declarative and visual debugging in Eclipse , 2007, eclipse '07.

[14]  Arie van Deursen,et al.  Understanding Execution Traces Using Massive Sequence and Circular Bundle Views , 2007, 15th IEEE International Conference on Program Comprehension (ICPC '07).

[15]  Hausi A. Müller,et al.  Shimba—an environment for reverse engineering Java software systems , 2001, Softw. Pract. Exp..

[16]  Stéphane Ducasse,et al.  Using dynamic information for the iterative recovery of collaborations and roles , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[17]  Nick Mitchell,et al.  Visualizing the Execution of Java Programs , 2001, Software Visualization.

[18]  Steven P. Reiss Dynamic detection and visualization of software phases , 2005, WODA '05.