Modular Checking with Model Checking

Automatic static checkers based on model checking, particularly SAT-based bounded model checkers, are used in industry, but they sometimes suffer from the scalability problem. Scalability can be achieved with the notions of Design by Contract(DbC) and modular checking. However, modular checking with DbC still have some problems. The method is insufficient for handling pointers to functions (function-pointers) which are abundantly used in C programs, defensive programming which is widely adopted in industrial software development projects, and re-entrancy which sometimes occurs in programs using callback functions. This paper proposes a DbC notation for the above problems and a checking method that uses behavioral subtyping to clarify the exact location where an error occurs.

[1]  Wolfram Schulte,et al.  A Re-Entrancy Analysis for Object Oriented Programs , 2007 .

[2]  Sriram K. Rajamani,et al.  The SLAM project: debugging system software via static analysis , 2002, POPL '02.

[3]  Ralf Huuck,et al.  Model Checking Software at Compile Time , 2007, First Joint IEEE/IFIP Symposium on Theoretical Aspects of Software Engineering (TASE '07).

[4]  Edsger W. Dijkstra,et al.  A Discipline of Programming , 1976 .

[5]  Matthew B. Dwyer,et al.  Checking Strong Specifications Using an Extensible Software Model Checking Framework , 2004, TACAS.

[6]  Chao Wang,et al.  Model checking C programs using F-Soft , 2005, 2005 International Conference on Computer Design.

[7]  Armin Biere,et al.  A survey of recent advances in SAT-based formal verification , 2005, International Journal on Software Tools for Technology Transfer.

[8]  Matthias Felleisen,et al.  Contracts for higher-order functions , 2002, ICFP '02.

[9]  MeyerBertrand,et al.  Design by Contract , 1997 .

[10]  Daniel Kroening,et al.  A Tool for Checking ANSI-C Programs , 2004, TACAS.

[11]  Thomas A. Henzinger,et al.  The software model checker Blast , 2007, International Journal on Software Tools for Technology Transfer.

[12]  Thomas A. Henzinger,et al.  The software model checker B last : Applications to software engineering , 2007 .

[13]  Bertrand Meyer,et al.  Applying 'design by contract' , 1992, Computer.

[14]  Edmund M. Clarke,et al.  Model Checking , 1999, Handbook of Automated Reasoning.

[15]  David Detlefs,et al.  Simplify: a theorem prover for program checking , 2005, JACM.

[16]  Klaus Havelund,et al.  Model checking JAVA programs using JAVA PathFinder , 2000, International Journal on Software Tools for Technology Transfer.

[17]  Mark Lillibridge,et al.  Extended static checking for Java , 2002, PLDI '02.

[18]  Jeannette M. Wing,et al.  A behavioral notion of subtyping , 1994, TOPL.

[19]  Claude Marché,et al.  Multi-prover Verification of C Programs , 2004, ICFEM.