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.