A Framework for Model Checking Concurrent Java Components
Abstract
The Java programming language supports concurrency. Concurrent programs are harder to verify than their sequential counterparts due to their inherent nondeterminism and a number of specific concurrency problems, such as interference and deadlock. In this paper we illustrate how to construct a base model of Java concurrency primitives using the Promela language of SPIN. Subsequently, a readers-writers monitor, and eighteen mutants, are used as an example to show the power and simplicity of using SPIN for verifying concurrent Java components. This builds on previous work and contributes in three ways, 1) each Java concurrency primitive is modelled directly and added to a standard modelling library for inclusion into models for a range of concurrent components, 2) we assume a concurrent component may be used in potentially many contexts rather than simply the context or contexts it may have been used or found, 3) by providing a modelling library we illustrate how model checking can be implemented in a simple, powerful, and practical manner.
Keywords
References
Full Text: PDF


