Static object trace extraction for programs with pointers

A trace is a record of the execution of a computer program, showing the sequence of operations executed. Dynamic traces are obtained by executing the program and depend upon the input. Static traces, on the other hand, describe potential sequences of operations extracted statically from the source code. Static traces offer the advantage that they do not depend upon input data. This paper describes a new automatic technique to extract static traces for individual stack and heap objects. The extracted static traces can be used in many ways, such as protocol recovery and validation in particular and program understanding in general. In addition, this article describes four case studies we conducted to explore the efficiency of our algorithm, the size of the resulting static traces, and the influence of the underlying points-to analysis on this size.

[1]  Rainer Koschke,et al.  Static trace extraction , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[2]  Mary Lou Soffa,et al.  Efficient computation of interprocedural definition-use chains , 1994, TOPL.

[3]  Michael Hind,et al.  Pointer analysis: haven't we solved this problem yet? , 2001, PASTE '01.

[4]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[5]  Yung-Lin Chen,et al.  Slicing object-oriented programs , 1997, Proceedings of Joint 4th International Computer Science Conference and 4th Asia Pacific Software Engineering Conference.

[6]  Christoph Steindl Intermodular Slicing of Object-Oriented Programs , 1998, ECOOP Workshops.

[7]  Ivar Jacobson,et al.  The unified modeling language reference manual , 2010 .

[8]  Rainer Koschke,et al.  Component Recovery , Protocol Recovery and Validation in Bauhaus , .

[9]  Mark Weiser,et al.  Program Slicing , 1981, IEEE Transactions on Software Engineering.

[10]  William Landi,et al.  Interprocedural Def-Use associations in C programs , 1991, TAV4.

[11]  G. Ramalingam,et al.  The undecidability of aliasing , 1994, TOPL.

[12]  Michael Hind,et al.  Which pointer analysis should I use? , 2000, ISSTA '00.

[13]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1988, SIGP.

[14]  Baowen Xu,et al.  Slicing object-oriented java programs , 2001, SIGP.

[15]  Monica S. Lam,et al.  Automatic extraction of object-oriented component interfaces , 2002, ISSTA '02.

[16]  Jakob Rehof,et al.  Scalable context-sensitive flow analysis using instantiation constraints , 2000, PLDI '00.

[17]  Alexander L. Wolf,et al.  Discovering models of software processes from event-based data , 1998, TSEM.

[18]  Donglin Liang,et al.  Slicing objects using system dependence graphs , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[19]  Katsuro Inoue,et al.  A slicing method for object-oriented programs using lightweight dynamic information , 2001, Proceedings Eighth Asia-Pacific Software Engineering Conference.

[20]  Leon J. Osterweil,et al.  Interprocedural static analysis of sequencing constraints , 1992, TSEM.

[21]  Bjarne Steensgaard,et al.  Points-to analysis in almost linear time , 1996, POPL '96.

[22]  Gerald Baumgartner,et al.  Compiler and tool support for debugging object protocols , 2000, SIGSOFT '00/FSE-8.

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

[24]  Mary Jean Harrold,et al.  Slicing object-oriented software , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[25]  Monica S. Lam,et al.  Efficient context-sensitive pointer analysis for C programs , 1995, PLDI '95.

[26]  Paolo Tonella,et al.  Reverse engineering of the interaction diagrams from C++ code , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[27]  David W. Binkley,et al.  Program slicing , 2008, 2008 Frontiers of Software Maintenance.

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

[29]  Sorin Lerner,et al.  ESP: path-sensitive program verification in polynomial time , 2002, PLDI '02.

[30]  Frank Tip,et al.  A survey of program slicing techniques , 1994, J. Program. Lang..

[31]  Rainer Koschke,et al.  An Intermediate Representation for Reverse Engineering Analyses , 1998 .