The dependence condition graph: Precise conditions for dependence between program points

The problem of identifying the conditions under which semantic or behavioural dependences arise between different program statements has interesting applications in various areas such as program understanding, software maintenance, software audits and software testing. We present an extension to the program dependence graph (PDG), called the dependence condition graph (DCG), that enables identifying the conditions for dependence between program points. We show that these conditions are not only correct with respect to the program's semantics, but also more precise than identified by other known techniques. We also present evidence that the DCG is a practical representation and can be built for large programs, and sketch many different applications of the DCG.

[1]  Gregg Rothermel,et al.  Interprocedural control dependence , 2001, TSEM.

[2]  Thomas W. Reps,et al.  On the adequacy of program dependence graphs for representing programs , 1988, POPL '88.

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

[4]  Srihari Sukumaran,et al.  Identifying test conditions for software maintenance , 2005, Ninth European Conference on Software Maintenance and Reengineering.

[5]  Simeon C. Ntafos,et al.  On Required Element Testing , 1984, IEEE Transactions on Software Engineering.

[6]  Elaine J. Weyuker,et al.  Data flow analysis techniques for test data selection , 2015, ICSE '82.

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

[8]  John Morris,et al.  Using symbolic execution to guide test generation , 2005, Softw. Test. Verification Reliab..

[9]  Keshav Pingali,et al.  Optimal control dependence computation and the Roman chariots problem , 1997, TOPL.

[10]  Mary Sheeran,et al.  Checking Safety Properties Using Induction and a SAT-Solver , 2000, FMCAD.

[11]  Mary Lou Soffa,et al.  Automated test data generation using an iterative relaxation method , 1998, SIGSOFT '98/FSE-6.

[12]  Thomas W. Reps,et al.  The use of program dependence graphs in software engineering , 1992, International Conference on Software Engineering.

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

[14]  Keshav Pingali,et al.  A framework for generalized control dependence , 1996, PLDI '96.

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

[16]  Rajiv Gupta,et al.  A demand-driven analyzer for data flow testing at the integration level , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[17]  Benjamin Livshits,et al.  Tracking pointers with path and context sensitivity for bug detection in C programs , 2003, ESEC/FSE-11.

[18]  Mary Lou Soffa,et al.  Interprocedual data flow testing , 1989 .

[19]  Gregor Snelting,et al.  On Temporal Path Conditions in Dependence Graphs , 2007 .

[20]  Priti Shankar,et al.  Field Flow Sensitive Pointer and Escape Analysis for Java Using Heap Array SSA , 2008, SAS.

[21]  Sarfraz Khurshid,et al.  Generalized Symbolic Execution for Model Checking and Testing , 2003, TACAS.

[22]  Arthur B. Maccabe,et al.  The program dependence web: a representation supporting control-, data-, and demand-driven interpretation of imperative languages , 1990, PLDI '90.

[23]  Janusz W. Laski,et al.  A Data Flow Oriented Program Testing Strategy , 1983, IEEE Transactions on Software Engineering.

[24]  David Notkin,et al.  Symstra: A Framework for Generating Object-Oriented Unit Tests Using Symbolic Execution , 2005, TACAS.

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

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

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

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

[29]  Yves Deville,et al.  Consistency techniques for interprocedural test data generation , 2003, ESEC/FSE-11.

[30]  Gregor Snelting,et al.  Efficient path conditions in dependence graphs for software safety analysis , 2006, TSEM.

[31]  Mark N. Wegman,et al.  Efficiently computing static single assignment form and the control dependence graph , 1991, TOPL.