A Formal Model of Program Dependences and Its Implications for Software Testing, Debugging, and Maintenance

A formal, general model of program dependences is presented and used to evaluate several dependence-based software testing, debugging, and maintenance techniques. Two generalizations of control and data flow dependence, called weak and strong syntactic dependence, are introduced and related to a concept called semantic dependence. Semantic dependence models the ability of a program statement to affect the execution behavior of other statements. It is shown that weak syntactic dependence is a necessary but not sufficient condition for semantic dependence and that strong syntactic dependence is necessary but not sufficient condition for a restricted form of semantic dependence that is finitely demonstrated. These results are used to support some proposed uses of program dependences, to controvert others, and to suggest new uses. >

[1]  Bernard Carré,et al.  Information-flow and data-flow analysis of while-programs , 1985, TOPL.

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

[3]  Peter J. Denning,et al.  Certification of programs for secure information flow , 1977, CACM.

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

[5]  Larry Joe Morell A theory of error-based testing , 1983 .

[6]  Bogdan Korel The Program Dependence Graph in Static Program Testing , 1987, Inf. Process. Lett..

[7]  Sheila A. Greibach,et al.  Theory of Program Structures: Schemes, Semantics, Verification , 1976, Lecture Notes in Computer Science.

[8]  Wuu Yang,et al.  The Semantics of Program Slicing , 1988 .

[9]  Frank Harary,et al.  Graph Theory , 2016 .

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

[11]  Elaine J. Weyuker,et al.  Selecting Software Test Data Using Data Flow Information , 1985, IEEE Transactions on Software Engineering.

[12]  Mark David Weiser,et al.  Program slices: formal, psychological, and practical investigations of an automatic program abstraction method , 1979 .

[13]  Thomas W. Reps,et al.  Integrating non-intering versions of programs , 1988, POPL '88.

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

[15]  David A. Padua,et al.  Advanced compiler optimizations for supercomputers , 1986, CACM.

[16]  Mark Weiser,et al.  Programmers use slices when debugging , 1982, CACM.

[17]  R. Parsons-Selke,et al.  A rewriting semantics for program dependence graphs , 1989, POPL '89.

[18]  Arnold L. Rosenberg,et al.  The significance of program dependences for software testing, debugging, and maintenance , 1989 .

[19]  R.A. DeMillo,et al.  An extended overview of the Mothra software testing environment , 1988, [1988] Proceedings. Second Workshop on Software Testing, Verification, and Analysis.

[20]  Leon J. Osterweil,et al.  Data Flow Analysis in Software Reliability , 1976, CSUR.

[21]  Debra J. Richardson,et al.  The RELAY model of error detection and its application , 1988, [1988] Proceedings. Second Workshop on Software Testing, Verification, and Analysis.

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

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

[24]  Matthias Felleisen,et al.  The semantics of program dependence , 1989, PLDI '89.

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

[26]  Alfred V. Aho,et al.  The Design and Analysis of Computer Algorithms , 1974 .