In the past decade, practical model-checking techniqueshave revolutionised research in formal software verifica-tion. Until the mid-1980s, when model checking wasfirst introduced [1,2], formal verification researchfocused primarily on techniques for proving a programis correct against a formal specification. For manyreasons, such techniques had had little impact onindustrial practice [3]. In contrast, model checking hasrapidly transferred into industrial practice, both forhardware and software verification. With its emphasis onpartial verification using fully automated techniques,model checking has led to an interest in ‘lightweight’formal techniques [4] that can be applied at differentlevels of abstraction, and during any stage of thedevelopment process. Model-checkers have becomepopular debugging tools and have been used to reasonabout system requirements [5], software architectures[6], program behaviour [7–9], hardware and circuitdesigns [10], communication protocols [11] and evenuser interfaces [12]. Because model checking can beused to analyse abstract behavioural models, it has anumber of natural applications in requirements engineer-ing.A model-checker takes as input a model, M,ofasystem, expressed as a finite state machine, and atemporal logic formula, j, and algorithmically deter-mines whether or not the model satisfies the property;i.e., it computes the value of the relation M |= j. From anengineering point of view, it is natural to consider thestate machine model to be the central artefact, and to talkof checking that various behavioural properties hold ofthe model. We can summarise the key advantages ofmodel checking over other forms of formal analysis asfollows:1. The procedure is fully automatic and quite fast, oftenproducing an answer in a matter of minutes.2. If a property is not satisfied, a model-checker willusually produce a counter-example – a sequence ofsteps leading to the problem, thus showing why theproperty is not satisfied.3. Model checking can be applied to partial models, so itis not necessary to fully specify a system nor all itsproperties before analysing its correctness.Model checking was first applied to requirementsengineering in the work of Atlee and Gannon [5]. Inrequirements engineering, the state machine typicallyrepresents an abstract description of the behaviour ofsome portion of the system to be specified, or itsenvironment. The properties to be checked typicallyrepresent high-level requirements including safetyproperties (some undesirable situation will neverhappen) and liveness properties (some desirable situationwill eventually occur). Reports of industrial case studies(e.g. [13]) indicate that it is rare to have well-formulatedtemporal logic properties from the outset. More usually,the model is developed first in an attempt to understandsome aspect of a system’s behaviour, and the exercise ofmodel checking then involves the interaction of domainexperts to discover high-level properties that ought tohold. In this sense, the model-checker becomes anexploration tool, used to discover properties of a modelbeing developed, rather than to verify it against a pre-existing specification. Because model checking does notrequire completeness of either the model or the proper-ties to be checked, it can be applied at very early stagesin requirements modelling.
[1]
Angelo Gargantini,et al.
Using model checking to generate tests from requirements specifications
,
1999,
ESEC/FSE-7.
[2]
A. Gurfinkel,et al.
Model exploration with temporal logic query checking
,
2002,
SOEN.
[3]
George S. Avrunin,et al.
Patterns in property specifications for finite-state verification
,
1999,
Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).
[4]
Dan Craigen,et al.
Formal Methods Reality Check: Industrial Usage
,
1993,
FME.
[5]
Patrice Godefroid,et al.
Generalized Model Checking: Reasoning about Partial State Spaces
,
2000,
CONCUR.
[6]
Pierre Wolper,et al.
An Automata-Theoretic Approach to Automatic Program Verification (Preliminary Report)
,
1986,
LICS.
[7]
Gerard J. Holzmann,et al.
A practical method for verifying event-driven software
,
1999,
Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).
[8]
Sriram K. Rajamani,et al.
Bebop: A Symbolic Model Checker for Boolean Programs
,
2000,
SPIN.
[9]
Joanne M. Atlee,et al.
State-Based Model Checking of Event-Driven System Requirements
,
1993,
IEEE Trans. Software Eng..
[10]
Shing-Chi Cheung,et al.
Checking subsystem safety properties in compositional reachability analysis
,
1996,
Proceedings of IEEE 18th International Conference on Software Engineering.
[11]
Marsha Chechik,et al.
A framework for multi-valued reasoning over inconsistent viewpoints
,
2001,
Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.
[12]
Alan Robinson,et al.
The Inverse Method
,
2001,
Handbook of Automated Reasoning.
[13]
Gerard J. Holzmann,et al.
Validating requirements for fault tolerant systems using model checking
,
1998,
Proceedings of IEEE International Symposium on Requirements Engineering: RE '98.
[14]
Daniel Jackson,et al.
Lightweight Formal Methods
,
2001,
FME.
[15]
Marco Pistore,et al.
Model checking early requirements specifications in Tropos
,
2001,
Proceedings Fifth IEEE International Symposium on Requirements Engineering.
[16]
HeitmeyerConstance,et al.
Using model checking to generate tests from requirements specifications
,
1999
.
[17]
Constance L. Heitmeyer,et al.
Model Checking Complete Requirements Specifications Using Abstraction
,
2004,
Automated Software Engineering.
[18]
Joanne M. Atlee,et al.
Feasibility of model checking software requirements: a case study
,
1996,
Proceedings of 11th Annual Conference on Computer Assurance. COMPASS '96.
[19]
Edmund M. Clarke,et al.
Formal Methods: State of the Art and Future Directions Working Group Members
,
1996
.
[20]
Patrice Godefroid,et al.
Model checking for programming languages using VeriSoft
,
1997,
POPL '97.
[21]
Sanjai Rayadurgam,et al.
Coverage based test-case generation using model checkers
,
2001,
Proceedings. Eighth Annual IEEE International Conference and Workshop On the Engineering of Computer-Based Systems-ECBS 2001.
[22]
Edmund M. Clarke,et al.
Model Checking
,
1999,
Handbook of Automated Reasoning.
[23]
Matthew B. Dwyer,et al.
Model checking graphical user interfaces using abstractions
,
1997,
ESEC '97/FSE-5.