Understanding the complexity embedded in large routine call traces with a focus on program comprehension tasks

The analysis of execution traces has been shown to be useful in many software maintenance activities that require a certain understanding of the systems' behaviour. Traces, however, are extremely large, hence are difficult for humans to analyse without effective tools. These tools usually support some sort of trace abstraction techniques that can help users understand the essence of a trace despite the trace being massive. Designing such tools requires a good understanding of the amount of complexity embedded in traces. Trace complexity has traditionally been measured using the file size or the number of lines in the trace. In this study, the authors argue that such metrics provide limited indication of the complexity of a trace. The authors address this issue by presenting a catalogue of metrics for assessing the various facets of traces of routine calls, with the ultimate objective being to facilitate the development of tools for the exploration of lengthy traces. The authors show the effectiveness of our metrics by applying them to 35 traces generated from four software systems.

[1]  Robert E. Tarjan,et al.  Variations on the Common Subexpression Problem , 1980, J. ACM.

[2]  Philippe Flajolet,et al.  Analytic Variations on the Common Subexpression Problem , 1990, ICALP.

[3]  H. D. Rombach,et al.  The Goal Question Metric Approach , 1994 .

[4]  Benjamin G. Zorn,et al.  BIT: A Tool for Instrumenting Java Bytecodes , 1997, USENIX Symposium on Internet Technologies and Systems.

[5]  John T. Stasko,et al.  Visualizing Interactions in Program Executions , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[6]  Spencer Rugaber,et al.  Using visualization for architectural localization and extraction , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[7]  Mark N. Wegman,et al.  Execution Patterns in Object-Oriented Visualization , 1998, COOTS.

[8]  J. Larus Whole program paths , 1999, PLDI '99.

[9]  Tarja Systä,et al.  Dynamic Reverse Engineering of Java Software , 1999, ECOOP Workshops.

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

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

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

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

[14]  Rainer Koschke,et al.  Locating Features in Source Code , 2003, IEEE Trans. Software Eng..

[15]  Norman Wilde,et al.  A comparison of methods for locating features in legacy software , 2003, J. Syst. Softw..

[16]  K. Driesen,et al.  Dynamic metrics for java , 2003, OOPSLA '03.

[17]  Stéphane Ducasse,et al.  Polymetric Views - A Lightweight Visual Approach to Reverse Engineering , 2003, IEEE Trans. Software Eng..

[18]  Marnie L. Hutcheson,et al.  Software testing fundamentals - methods and metrics , 2003 .

[19]  Abdelwahab Hamou-Lhadj,et al.  A survey of trace exploration tools and techniques , 2004, CASCON.

[20]  Stéphane Ducasse,et al.  High-level polymetric views of condensed run-time information , 2004, Eighth European Conference on Software Maintenance and Reengineering, 2004. CSMR 2004. Proceedings..

[21]  Abdelwahab Hamou-Lhadj Timothy C. Lethbridge An Efficient Algorithm for Detecting Patterns in Traces of Procedure Calls , 2005 .

[22]  Abdelwahab Hamou-Lhadj,et al.  SEAT: a usable trace analysis tool , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

[23]  Stéphane Ducasse,et al.  Analyzing software evolution through feature views , 2006, J. Softw. Maintenance Res. Pract..

[24]  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).