Bogor: A Flexible Framework for Creating Software Model Checkers

Model checking has proven to be an effective technology for verification and debugging in hardware and more recently in software domains. With the proliferation of multi-core architectures and a greater emphasis on distributed computing, model checking is an increasingly important software quality assurance technique that can complement existing testing and inspection methods. We believe that recent trends in both the requirements for software systems and the processes by which systems are developed suggests that domain-specific model checking engines may be more effective than general purpose model checking tools. To overcome limitations of existing tools which tend to be monolithic and non-extensible, we have developed an extensible and customizable model checking framework called Bogor. In this article, we summarize how Bogor provides direct support for modeling object-oriented designs and implementations, how its modeling language and algorithms can be extended and customized to create domain-specific model checking engines, and how Bogor can be deployed in broader software development contexts in conjunction with complementary quality assurance techniques

[1]  Matthew B. Dwyer,et al.  Cadena: an integrated development, analysis, and verification environment for component-based systems , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[2]  Stephen F. Siegel Efficient Verification of Halting Properties for MPI Programs with Wildcard Receives , 2005, VMCAI.

[3]  Margus Veanes,et al.  Optimal strategies for testing nondeterministic systems , 2004, ISSTA '04.

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

[5]  Matthew B. Dwyer,et al.  Translating Java for Multiple Model Checkers: The Bandera Back-End , 2005, Formal Methods Syst. Des..

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

[7]  Matthew B. Dwyer,et al.  Model-Checking Middleware-Based Event-Driven Real-Time Embedded Software , 2002, FMCO.

[8]  Matthew B. Dwyer,et al.  Space-Reduction Strategies for Model Checking Dynamic Software , 2003, SoftMC@CAV.

[9]  Cyril S. Ku,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[10]  Rahul Agarwal,et al.  Type Inference for Parameterized Race-Free Java , 2004, VMCAI.

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

[12]  Radu Iosif,et al.  Symmetry Reduction Criteria for Software Model Checking , 2002, SPIN.

[13]  Fausto Giunchiglia,et al.  NUSMV: a new symbolic model checker , 2000, International Journal on Software Tools for Technology Transfer.

[14]  Matthew B. Dwyer,et al.  Verifying Atomicity Specifications for Concurrent Object-Oriented Software Using Model-Checking , 2004, VMCAI.

[15]  David Garlan,et al.  Model Checking Publish-Subscribe Systems , 2003, SPIN.

[16]  Matthew B. Dwyer,et al.  Tool-supported program abstraction for finite-state verification , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[17]  Shoham Ben-David,et al.  Model Checking at IBM , 2003, Formal Methods Syst. Des..

[18]  Claudio Demartini,et al.  dSPIN: A Dynamic Extension of SPIN , 1999, SPIN.

[19]  Thomas A. Henzinger,et al.  Lazy abstraction , 2002, POPL '02.

[20]  Stephan Merz,et al.  Model Checking , 2000 .

[21]  W. Visser,et al.  Second Generation of a Java Model Checker , 2000 .

[22]  Matthew B. Dwyer,et al.  Evaluating the Effectiveness of Slicing for Model Reduction of Concurrent Object-Oriented Programs , 2006, TACAS.

[23]  Scott A. DeLoach,et al.  Using Design Metrics for Predicting System Flexibility , 2006, FASE.

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

[25]  Matthew B. Dwyer,et al.  Analyzing interaction orderings with model checking , 2004 .

[26]  Jooyong Yi,et al.  Bogor/Kiasan: A k-bounded Symbolic Execution for Checking Strong Heap Properties of Open Systems , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[27]  Dimitra Giannakopoulou,et al.  Model checking of workflow schemas , 2000, Proceedings Fourth International Enterprise Distributed Objects Computing Conference. EDOC2000.

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

[29]  Zohar Manna,et al.  The Temporal Logic of Reactive and Concurrent Systems , 1991, Springer New York.

[30]  Sriram K. Rajamani,et al.  Bebop: A Symbolic Model Checker for Boolean Programs , 2000, SPIN.

[31]  Gerard J. Holzmann,et al.  The Model Checker SPIN , 1997, IEEE Trans. Software Eng..

[32]  Masaaki Mizuno,et al.  Invariant-based specification, synthesis, and verification of synchronization in concurrent programs , 2002, ICSE '02.

[33]  Matthew B. Dwyer,et al.  Space Reductions for Model Checking Quasi-Cyclic Systems , 2003, EMSOFT.

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

[35]  David Notkin,et al.  Optimizing Symbolic Model Checking for Statecharts , 2001, IEEE Trans. Software Eng..

[36]  Dragan Bosnacki,et al.  Symmetric Spin , 2000, SPIN.

[37]  Matthew B. Dwyer,et al.  Bandera: extracting finite-state models from Java source code , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[38]  M. Robby,et al.  Bogor : An Extensible and Highly Modular Model Checking Framework , 2003 .

[39]  Matthew B. Dwyer,et al.  Exploiting Object Escape and Locking Information in Partial-Order Reductions for Concurrent Object-Oriented Programs , 2004, Formal Methods Syst. Des..

[40]  Yoonsik Cheon,et al.  A Runtime Assertion Checker for the Java Modeling Language (JML) , 2003, ICSE 2003.

[41]  Corina S. Pasareanu,et al.  Symbolic Execution with Abstract Subsumption Checking , 2006, SPIN.

[42]  Christopher G. Lasater,et al.  Design Patterns , 2008, Wiley Encyclopedia of Computer Science and Engineering.