CONCURRENCY AND COMPUTATION: PRACTICE AND EXPERIENCE
Concurrency Computat.: Pract. Exper. 2008; 20:1419–1438
Published online 2 November 2007 in Wiley InterScience (www.interscience.wiley.com). DOI: 10.1002/cpe.1265
The effect of uncontrolled
concurrency on model
checking
Donna M. Carter
2
, Ramazan Aygun
1, ∗, †
, Glenn Cox
1
,
Mary Ellen Weisskopf
1
and Letha Etzkorn
1
1
Computer Science Department, Technology Hall, N360, University of Alabama
in Huntsville, Huntsville, AL 35899, U.S.A.
2
COLSA Corporation, Huntsville, AL, U.S.A.
SUMMARY
Correctness of concurrent software is usually checked by techniques such as peer code reviews or code
walkthroughs and testing. These techniques, however, are subject to human error, and thus do not achieve
an in-depth verification of correctness. Model-checking techniques, which can systematically identify and
verify every state that a system can enter, are a powerful alternative method for verifying concurrent
systems. However, the usefulness of model checking is limited because the number of states for concurrent
models grows exponentially with the number of processes in the system. This is often referred to as
the ‘state explosion problem.’ Some processes are a central part of the software operation and must
be included in the model. However, we have found that some exponential complexity results due to
uncontrolled concurrency introduced by the programmer rather than due to the intrinsic characteristics
of the software being modeled. We have performed tests on multimedia synchronization to show the effect
of abstraction as well as uncontrolled concurrency using the Promela/SPIN model checker. We begin with
a sequential model not expected to have exponential complexity but that results in exponential complexity.
In this paper, we provide alternative designs and explain how uncontrolled concurrency can be removed
from the code. Copyright
©
2007 John Wiley & Sons, Ltd.
Received 18 December 2006; Revised 19 July 2007; Accepted 21 July 2007
KEY WORDS: model checking; multimedia synchronization; uncontrolled concurrency; Promela/SPIN
1. INTRODUCTION
The verification of concurrent systems is important since failures in software can have fatal
and costly results. In particular, asynchronous, multithreaded, and distributed systems require
∗
Correspondence to: Ramazan Aygun, Computer Science Department, Technology Hall, N360, University of Alabama in
Huntsville, Huntsville, AL 35899, U.S.A.
†
E-mail: raygun@cs.uah.edu
Copyright 2007 John Wiley & Sons, Ltd.