Dependence condition graph for semantics-based abstract program slicing

Many slicing techniques have been proposed based on the traditional Program Dependence Graph (PDG) representation. In traditional PDGs, the notion of data dependency between statements is based on syntactic presence of a variable in the definition of another variable or in a conditional expression. Mastroeni and Zanardini introduced semantics-based data dependency both at concrete and abstract domain. This semantics-based data dependency is computed at expression level over all possible (abstract) states appearing at program points. In this paper, we strictly improve this approach by (i) considering semantic relevancy of statements (not only expressions), and (ii) adopting conditional dependency. This allows us to transform the semantics-based (abstract) PDG into a semantics-based (abstract) Dependence Condition Graph (DCG) that enables to identify the conditions for dependence between program points. The resulting program slicing algorithm designed this way is strictly more accurate than the Mastroeni and Zanardini's one.

[1]  Keith Brian Gallagher,et al.  Using Program Slicing in Software Maintenance , 1991, IEEE Trans. Software Eng..

[2]  Bogdan Korel,et al.  Dynamic program slicing in understanding of program execution , 1997, Proceedings Fifth International Workshop on Program Comprehension. IWPC'97.

[3]  Mangala Gowri Nanda,et al.  Slicing concurrent programs , 2000, ISSTA '00.

[4]  V. Sarkar,et al.  Automatic partitioning of a program dependence graph into parallel tasks , 1991, IBM J. Res. Dev..

[5]  Agostino Cortesi,et al.  A Framework for Property-driven Program Slicing , 2009 .

[6]  Jens Krinke,et al.  Static slicing of threaded programs , 1998, PASTE '98.

[7]  Thomas W. Reps,et al.  Integrating noninterfering versions of programs , 1989, TOPL.

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

[9]  Patrick Cousot,et al.  Systematic design of program analysis frameworks , 1979, POPL.

[10]  Thomas W. Reps,et al.  Precise interprocedural chopping , 1995, SIGSOFT FSE.

[11]  Damiano Zanardini,et al.  Data dependencies and program slicing: from syntax to abstract semantics , 2008, PEPM '08.

[12]  Rajib Mall,et al.  An efficient method for computing dynamic program slices , 2002, Inf. Process. Lett..

[13]  Glynn Winskel,et al.  The formal semantics of programming languages - an introduction , 1993, Foundation of computing series.

[14]  Gregg Rothermel,et al.  System-dependence-graph-based slicing of programs with arbitrary interprocedural control flow , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[15]  Srihari Sukumaran,et al.  The dependence condition graph: Precise conditions for dependence between program points , 2010, Comput. Lang. Syst. Struct..

[16]  Rajib Mall,et al.  An efficient interprocedural dynamic slicing method , 2006, J. Syst. Softw..

[17]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[18]  Giuseppe Visaggio,et al.  Extracting Reusable Funtions by Flow Graph-Based Program Slicing , 1997, IEEE Trans. Software Eng..

[19]  Aniello Cimitile,et al.  Identifying reusable functions using specification driven program slicing: a case study , 1995, Proceedings of International Conference on Software Maintenance.

[20]  Janusz W. Laski,et al.  Dynamic Program Slicing , 1988, Inf. Process. Lett..

[21]  Roberto Giacobazzi,et al.  Making abstract interpretations complete , 2000, JACM.

[22]  David A. Padua,et al.  Dependence graphs and compiler optimizations , 1981, POPL '81.

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

[24]  Daniel Jackson,et al.  A new model of program dependences for reverse engineering , 1994, SIGSOFT '94.

[25]  Bogdan Korel,et al.  Program slicing in understanding of large programs , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[26]  Markus Müller-Olm,et al.  On optimal slicing of parallel programs , 2001, STOC '01.

[27]  Patrick Cousot,et al.  Systematic design of program transformation frameworks by abstract interpretation , 2002, POPL '02.

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

[29]  Richard Gerber,et al.  Slicing real-time programs for enhanced schedulability , 1997, TOPL.

[30]  Rajiv Gupta,et al.  An approach to regression testing using slicing , 1992, Proceedings Conference on Software Maintenance 1992.

[31]  R. Gopal,et al.  Dynamic program slicing based on dependence relations , 1991, Proceedings. Conference on Software Maintenance 1991.

[32]  Karl J. Ottenstein,et al.  The program dependence graph in a software development environment , 1984, SDE 1.

[33]  Lori A. Clarke,et al.  A Formal Model of Program Dependences and Its Implications for Software Testing, Debugging, and Maintenance , 1990, IEEE Trans. Software Eng..