Expressing checkable properties of dynamic systems: the Bandera Specification Language

JC Corbett, MB Dwyer, J Hatcliff, Robby - International Journal on Software …, 2002 - Springer
JC Corbett, MB Dwyer, J Hatcliff, Robby
International Journal on Software Tools for Technology Transfer, 2002Springer
Research on how to reason about correctness properties of software systems using model
checking is advancing rapidly. Work on extracting finite-state models from program source
code and on abstracting those models is focused on enabling the tractable checking of
program properties such as freedom from deadlock and assertion violations. For the most
part, the problem of specifying more general program properties has not been considered. In
this paper, we report on the support for specifying properties of dynamic multi-threaded Java …
Abstract
Research on how to reason about correctness properties of software systems using model checking is advancing rapidly. Work on extracting finite-state models from program source code and on abstracting those models is focused on enabling the tractable checking of program properties such as freedom from deadlock and assertion violations. For the most part, the problem of specifying more general program properties has not been considered. In this paper, we report on the support for specifying properties of dynamic multi-threaded Java programs that we have built into the Bandera system. Bandera extracts finite-state models, in the input format of several existing model checkers, from Java code based on the property to be checked. The Bandera Specification Language (BSL) provides a language for defining general assertions and pre/post conditions on methods. It also supports the definition of observations that can be made of the state of program objects and the incorporation of those observations as predicates that can be instantiated in the scope of object quantifiers and used in describing common forms of state/event sequencing properties. We illustrate how BSL can be used to formulate a variety of system correctness properties for several multi-threaded Java applications.
Springer