Model Checking Abstract Components within Concrete Software Environments

  • Authors:
  • Tonglaga Bao;Mike Jones

  • Affiliations:
  • Computer Science Department, Brigham Young University, Provo,;Computer Science Department, Brigham Young University, Provo,

  • Venue:
  • SPIN '08 Proceedings of the 15th international workshop on Model Checking Software
  • Year:
  • 2008

Quantified Score

Hi-index 0.01

Visualization

Abstract

In order to model check a software component which is not a standalone program, we need a model of the software which completes the program. This is typically done by abstracting the surrounding software and the environment in which the entire system will be executed. However, abstracting the surrounding software artifact is difficult when the surrounding software is a large, complex artifact. In this paper, we take a new approach to the problem by abstracting the software component under test and leaving the surrounding software concrete. We compare three abstraction schemes, bitstate hashing and two schemes based on predicate abstraction, which can be used to abstract the components. We show how to generate the mixed abstract-concrete model automatically from a C program and verify the model using the SPIN model checker. We give verification results for three C programs each consisting of hundreds or thousands of lines of code, pointers, data structures and calls to library functions. Compared to the predicate abstraction schemes, bitstate hashing was uniformly more efficient in both error discovery and exhaustive state enumeration. The component abstraction results in faster error discovery than normal code execution when pruning during state enumeration avoids repeated execution of instructions on the same data.