Automatically closing open reactive programs

We study in this paper the problem of analyzing implementations of open systems --- systems in which only some of the components are present. We present an algorithm for automatically closing an open concurrent reactive system with its most general environment, i.e., the environment that can provide any input at any time to the system. The result is a nondeterministic closed (i.e., self-executable) system which can exhibit all the possible reactive behaviors of the original open system. These behaviors can then be analyzed using VeriSoft, an existing tool for systematically exploring the state spaces of closed systems composed of multiple (possibly nondeterministic) processes executing arbitrary code. We have implemented the techniques introduced in this paper in a prototype tool for automatically closing open programs written in the C programming language. We discuss preliminary experimental results obtained with a large telephone-switching software application developed at Lucent Technologies.

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

[2]  Reinhard Wilhelm,et al.  Solving shape-analysis problems in languages with destructive updating , 1998, TOPL.

[3]  Barbara G. Ryder,et al.  Non-concurrency analysis , 1993, PPOPP '93.

[4]  Erik Ruf,et al.  Context-insensitive alias analysis reconsidered , 1995, PLDI '95.

[5]  Patrice Godefroid,et al.  Model checking for programming languages using VeriSoft , 1997, POPL '97.

[6]  Martin Peschke,et al.  Design and Validation of Computer Protocols , 2003 .

[7]  E. Clarke,et al.  Automatic Veriication of Nite-state Concurrent Systems Using Temporal-logic Speciications. Acm , 1993 .

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

[9]  Joseph Sifakis,et al.  Specification and verification of concurrent systems in CESAR , 1982, Symposium on Programming.

[10]  Régis Cridlig,et al.  Semantic analysis of shared-memory concurrent languages using abstract model-checking , 1995, PEPM '95.

[11]  Lori A. Clarke,et al.  Data flow analysis of concurrent systems that use the rendezvous model of synchronization , 1991, TAV4.

[12]  Mads Dam Analysis and verification of multiple-agent languages : 5th LOMAPS Workshop, Stockholm, Sweden, June 24-26, 1996 : selected papers , 1997 .

[13]  Gerard J. Holzmann,et al.  Design and validation of computer protocols , 1991 .

[14]  William Landi,et al.  Interprocedural aliasing in the presence of pointers , 1992 .

[15]  Lawrence T. Kou,et al.  On Live-Dead Analysis for Global Data Flow Problems , 1977, JACM.

[16]  Rance Cleaveland,et al.  The concurrency workbench: a semantics-based tool for the verification of concurrent systems , 1993, TOPL.

[17]  Raymond R. Devillers,et al.  Partial-order Methods for the Veriication of Concurrent Systems an Approach to the State-explosion Problem Th Ese Pr Esent Ee Par , 1995 .

[18]  Peter Lee,et al.  Semantics-based program analysis via symbolic composition of transfer relations , 1996 .

[19]  Patrice Godefroid,et al.  Partial-Order Methods for the Verification of Concurrent Systems , 1996, Lecture Notes in Computer Science.

[20]  Alain Deutsch,et al.  Interprocedural may-alias analysis for pointers: beyond k-limiting , 1994, PLDI '94.

[21]  K. E. Martersteck,et al.  The 5ESS switching system: Introduction , 1985, AT&T Technical Journal.

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

[23]  David Callahan,et al.  The program summary graph and flow-sensitive interprocedual data flow analysis , 1988, PLDI '88.

[24]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

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

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

[27]  Christopher Colby Analyzing the communication topology of concurrent programs , 1995, PEPM '95.

[28]  R. BurchJ.,et al.  Symbolic model checking , 1992 .

[29]  Sérgio Vale Aguiar Campos,et al.  Symbolic Model Checking , 1993, CAV.

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

[31]  Richard N. Taylor,et al.  A general-purpose algorithm for analyzing concurrent programs , 1983, CACM.

[32]  Frank Tip,et al.  Generic Techniques for Source-Level Debugging and Dynamic Program Slicing , 1995, TAPSOFT.

[33]  Arnaud Venet,et al.  Abstract Interpretation of the pi-Calculus , 1996, LOMAPS.

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

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

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