Title :
Modular verification of software components in C
Author :
Chaki, Sagar ; Clarke, Edmund M. ; Groce, Alex ; Jha, Somesh ; Veith, Helmut
Author_Institution :
Sch. of Comput. Sci., Carnegie Mellon Univ., Pittsburgh, PA, USA
fDate :
6/1/2004 12:00:00 AM
Abstract :
We present a new methodology for automatic verification of C programs against finite state machine specifications. Our approach is compositional, naturally enabling us to decompose the verification of large software systems into subproblems of manageable complexity. The decomposition reflects the modularity in the software design. We use weak simulation as the notion of conformance between the program and its specification. Following the counterexample guided abstraction refinement (CEGAR) paradigm, our tool MAGIC first extracts a finite model from C source code using predicate abstraction and theorem proving. Subsequently, weak simulation is checked via a reduction to Boolean satisfiability. MAGIC has been interfaced with several publicly available theorem provers and SAT solvers. We report experimental results with procedures from the Linux kernel, the OpenSSL toolkit, and several industrial strength benchmarks.
Keywords :
Boolean algebra; C language; computability; finite state machines; formal specification; program verification; theorem proving; Boolean satisfiability; C program; Linux kernel; counterexample guided abstraction refinement; finite state machine specification; formal method; modular verification; predicate abstraction; software component; software design; software engineering; theorem proving; Automata; Kernel; Linux; Programming; Protocols; Software design; Software engineering; Software systems; Unified modeling language; Visualization; 65; Software engineering; formal methods; verification.;
Journal_Title :
Software Engineering, IEEE Transactions on
DOI :
10.1109/TSE.2004.22