The term “software model checking” has recently been coined to refer to a flourishing area of research in software verification – the formal, automated analysis of program source code. Software model checking is considered an important application of classical model checking, where the model of a software system is analyzed in an automated fashion for compliance with a property specification. While classical model checking assumes the existence of an abstract model of the software system to be analyzed, in software model checking the emphasis is on directly analyzing program code given in a standard programming language, such as Java or C. This introduces a variety of significant obstacles, chief among them the efficient treatment of the complex data, e.g., heap structured data, and control constructs, e.g., procedure calls and exception handling, found in modern programming languages. These obstacles can also be viewed as opportunities for adapting traditional model checking data structures and algorithms to exploit the particular semantics of programming language constructs to gain improved performance. Moreover, while classical model checking emphasizes proving a model correct as the primary objective, an increasingly widely held view is that model checkers can function effectively as anomaly detectors or bug finders, i.e., they locate and explain undesired behavior of the software. This special section is the second devoted to publishing revised versions of contributions first presented at the International SPIN Workshop Series on Model Checking Software. In recent years this series of workshops has broadened its scope from focusing on the model checker SPIN to covering software model checking technology in general. The editorial introduction by Havelund and Visser to the first STTT special section devoted to SPIN papers [11] provides an excellent overview of the foundational ideas underlying software model checking. That special section was based on papers presented at the 7th International SPIN Workshop held at Stanford University (USA) in August/September 2001. Authors of wellregarded papers from the 8th International SPIN Workshop held in Toronto (Canada), colocated with ICSE 2001 on 10–11 May 2001, and the 9th International SPIN Workshop on Model Checking Software, held 11–13 April 2002 in Grenoble (France) as a satellite event of ETAPS 2002, were invited to submit to this special issue. All three of the papers included here have been extended to include significant new content and have undergone an independent round of reviewing.1
[1]
Edmund M. Clarke,et al.
Symbolic Model Checking: 10^20 States and Beyond
,
1990,
Inf. Comput..
[2]
Wang Yi,et al.
UPPAAL - a Tool Suite for Automatic Verification of Real-Time Systems
,
1996,
Hybrid Systems.
[3]
Patrice Godefroid,et al.
Software Model Checking: The VeriSoft Approach
,
2005,
Formal Methods Syst. Des..
[4]
Klaus Havelund,et al.
Program model checking as a new trend
,
2002,
International Journal on Software Tools for Technology Transfer.
[5]
Doron A. Peled,et al.
Software Reliability Methods
,
2001,
Texts in Computer Science.
[6]
Klaus Havelund,et al.
Model checking programs
,
2000,
Proceedings ASE 2000. Fifteenth IEEE International Conference on Automated Software Engineering.
[7]
Kenneth L. McMillan,et al.
Symbolic model checking
,
1992
.
[8]
Sriram K. Rajamani,et al.
Automatically validating temporal safety properties of interfaces
,
2001,
SPIN '01.
[9]
Klaus Havelund,et al.
Model checking JAVA programs using JAVA PathFinder
,
2000,
International Journal on Software Tools for Technology Transfer.
[10]
Philippe Schnoebelen,et al.
Systems and Software Verification
,
2001,
Springer Berlin Heidelberg.
[11]
Gerard J. Holzmann,et al.
Automating software feature verification
,
2000,
Bell Labs Technical Journal.
[12]
Claudio Demartini,et al.
dSPIN: A Dynamic Extension of SPIN
,
1999,
SPIN.
[13]
Shin Nakajima,et al.
The SPIN Model Checker : Primer and Reference Manual
,
2004
.
[14]
Rance Cleaveland,et al.
Pragmatics of model checking: an STTT special section
,
1999,
International Journal on Software Tools for Technology Transfer.
[15]
Stefan Edelkamp,et al.
Directed explicit-state model checking in the validation of communication protocols
,
2004,
International Journal on Software Tools for Technology Transfer.
[16]
Matthew B. Dwyer,et al.
Bandera: extracting finite-state models from Java source code
,
2000,
Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.