Characterising, Explaining, and Exploiting the Approximate Nature of Static Analysis through Animation

This paper addresses the question: "How can animated visualisation be used to express interesting properties of static analysis?" The particular focus is upon static dependence analysis, but the approach adopted in the paper is applicable to other forms of static analysis. The challenge is twofold. First, there is the inherent difficultly of using animation, which is inherently dynamic, as a representation of static analysis, which is not. The paper shows one way in which this apparent contradiction can be overcome. Second, there is the harder challenge of ensuring that the animations so-produced correspond to features of genuine interest in the source code that are hard to visualize without animation. To address these two challenges the paper shows how properties of static dependence analysis can be formulated in a manner suitable for animated visualisation. These formulations of dependence have been implemented and the results used to provide dependence visualisations of the structure of a set of C programs. All animations described in the paper are also viewable on-line.

[1]  Joe D. Warren,et al.  The program dependence graph and its use in optimization , 1987, TOPL.

[2]  Mark Harman,et al.  A survey of empirical results on program slicing , 2004, Adv. Comput..

[3]  Malcolm Munro,et al.  Virtual but visible software , 2000, 2000 IEEE Conference on Information Visualization. An International Conference on Computer Visualization and Graphics.

[4]  R. Gupta,et al.  Data dependence based testability transformation in automated test generation , 2005, 16th IEEE International Symposium on Software Reliability Engineering (ISSRE'05).

[5]  Mark Harman,et al.  Analysis and visualization of predicate dependence on formal parameters and global variables , 2004, IEEE Transactions on Software Engineering.

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

[7]  Barbara G. Ryder,et al.  Pointer-induced aliasing: a problem classification , 1991, POPL '91.

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

[9]  Paul Anderson,et al.  Software Inspection Using CodeSurfer , 2001 .

[10]  Jens Krinke,et al.  Visualization of program dependence and slices , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[11]  Giuliano Antoniol,et al.  Flow Insensitive C++ Pointers and Polymorphism Analysis and its application to slicing , 1997, Proceedings of the (19th) International Conference on Software Engineering.

[12]  Markus Mock,et al.  Improving program slicing with dynamic points-to data , 2002, SIGSOFT '02/FSE-10.

[13]  Jens Krinke,et al.  Evaluating context-sensitive slicing and chopping , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[14]  David W. Binkley,et al.  Interprocedural Constant Propagation using Dependence Graphs and a Data-Flow Model , 1994, CC.

[15]  Debra J. Richardson,et al.  Developing and integrating ProDAG in the Arcadia environment , 1992 .

[16]  Liang Guo,et al.  Evaluating explicitly context-sensitive program slicing , 2001, PASTE '01.

[17]  S. Diehl,et al.  Software visualization , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[18]  Thomas Ball,et al.  Visualizing program slices , 1994, Proceedings of 1994 IEEE Symposium on Visual Languages.

[19]  Thomas W. Reps,et al.  Program analysis via graph reachability , 1997, Inf. Softw. Technol..

[20]  David W. Binkley,et al.  Interprocedural slicing using dependence graphs , 1990, TOPL.

[21]  Barbara G. Ryder,et al.  An incremental flow- and context-sensitive pointer aliasing analysis , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[22]  Francoise Balmas Displaying dependence graphs: a hierarchical approach , 2004, J. Softw. Maintenance Res. Pract..

[23]  Jens Krinke,et al.  Effects of context on program slicing , 2006, J. Syst. Softw..

[24]  Thomas W. Reps,et al.  Speeding up slicing , 1994, SIGSOFT '94.

[25]  David W. Binkley,et al.  A large-scale empirical study of forward and backward static slice size and context sensitivity , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[26]  Jens Krinke,et al.  Advanced slicing of sequential and concurrent programs , 2003, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[27]  Andrés Moreno Algorithm Animation , 2006, Human-Centered Visualization Environments.

[28]  Marc Roper,et al.  A comparative evaluation of dynamic visualisation tools , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[29]  Christoph Steindl Benefits of a data flow-aware programming environment , 1999, PASTE '99.

[30]  Michael D. Ernst Practical Fine-Grained Static Slicing of Optimized Code , 1994 .

[31]  Christian S. Collberg,et al.  A system for graph-based visualization of the evolution of software , 2003, SoftVis '03.

[32]  Barbara G. Ryder,et al.  A schema for interprocedural modification side-effect analysis with pointer aliasing , 2001, TOPL.

[33]  Giuliano Antoniol,et al.  Program understanding and maintenance with the CANTO environment , 1997, 1997 Proceedings International Conference on Software Maintenance.

[34]  Matthew S. Hecht,et al.  Flow Analysis of Computer Programs , 1977 .

[35]  Malcolm Munro,et al.  Comprehension with[in] virtual environment visualisations , 1999, Proceedings Seventh International Workshop on Program Comprehension.

[36]  William G. Griswold,et al.  Dynamically discovering likely program invariants to support program evolution , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[37]  Mark Harman,et al.  Locating dependence clusters and dependence pollution , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[38]  Thomas Ball,et al.  Software Visualization in the Large , 1996, Computer.

[39]  William G. Griswold,et al.  The design of whole-program analysis tools , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[40]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.