510 Part C Automation Design: Theory, Elements, and Methods
IBM, Lucent, NEC, the National Aeronautics and Space
Administration (NASA), and the Jet Propulsion Labo-
ratory (JPL) to fund their own software model checking
projects.
A drawback of model checking is the state-
explosion problem. Software tends to be less structured
than hardware and is considered as a concurrent but
asynchronous system. In other words, two independent
processes in software executing concurrently in either
order result in the same global state [30.47]. Failing to
execute checking because of too many states is a partic-
ularly serious problem for software. Several methods,
including symbolic representation, partial order reduc-
tion, compositional reasoning, abstraction, symmetry,
and induction, have been developed either to decrease
the number of states in the model or to accommodate
more states, although none of them has been able to
solve the problem by allowing a general number of
states in the system.
Based on the observation that software model
checking has been particularly successful when it can
be optimized by taking into account properties of a spe-
cific application domain, Hatcliff and colleagues have
developed Bogor [30.56], which is a highly modular
model-checking framework that can be tailored to spe-
cific domains. Bogor’s extensible modeling language
allows new modeling primitives that correspond to do-
main properties to be incorporated into the modeling
language as first-class citizens. Bogor’s modular archi-
tecture enables its core model-checking algorithms to
be replaced by optimized domain-specific algorithms.
Bogor has been incorporated into Cadena and tailored
to checking avionics designs in the common object re-
quest broker architecture (CORBA) component model
(CCM), yielding orders of magnitude reduction in
verification costs. Specifically, Bogor’s modeling lan-
guage has been extended with primitives to capture
CCM interfaces and a real-time CORBA (RT-CORBA)
event channel interface, and Bogor’s scheduling and
state-space exploration algorithms were replaced with
a scheduling algorithm that captures the particular
scheduling strategy of the RT-CORBA event chan-
nel and a customized state-space storage strategy that
takes advantage of the periodic computation of avionics
software.
Despite this successful customizable strategy, there
are additional issues that need to be addressed when
incorporating model checking into an overall de-
sign/development methodology. A basic problem con-
cerns incorrect or incomplete specifications: before
verification, specifications in some logical formalism
(usually temporal logic) need to be extracted from
design requirements (properties). Model checking can
verify if a model of the design satisfies a given speci-
fication. It is impossible, however, to determine if the
derived specifications are consistent with or cover all
design properties that the system should satisfy. That
is, it is unknown if the design satisfies any unspeci-
fied properties, which are often assumed by designers.
Even if all necessary properties are verified through
model checking, code generated to implement the de-
sign is not guaranteed to meet design specifications, or
more importantly, design properties. Model-based soft-
ware testing is being studied to connect the two ends in
software design: requirements and code.
The detection of design errors in software engineer-
ing has received much attention. In addition to model
checking and software testing, for instance, Miceli
et al. [30.8] has proposed a metric-based technique for
design flaw detection and correction. In parallel com-
puting, synchronization errors are major problems and
a nonintrusive detection method for synchronization er-
rors using execution replay has been developed [30.14].
Besides, concurrent error detection (CED)iswell
knownfor detecting errors in distributed computing sys-
tems and its use of duplications [30.9, 57], which is
sometimes considered a drawback.
30.2.5 Error Detection and Diagnostics
in Discrete-Event Systems
Recently, Petri nets have been applied in fault detection
and diagnostics [30.58–60] and fault analysis [30.61–
63]. Petri nets are formal modeling and analysis tool
for discrete-event or asynchronous systems. For hybrid
systems that have both event-driven and time-driven
(synchronous) elements, Petri nets can be extended to
global Petri nets to model both discrete-time and event
elements. To detect and diagnose faults in discrete-
event systems (DES), Petri nets can be used together
with finite-state machines (FSM) [30.64, 65]. The no-
tion of diagnosability and a construction procedure for
the diagnoser have been developed to detect faults in
diagnosable systems [30.64]. A summary of the use of
Petri nets in error detection and recovery before the
1990s can be found in the work of Zhou and DiCe-
sare [30.66].
To detect and diagnose faults with Petri nets, some
of the places in a Petri net are assumed observable and
others are not. All transitions in the Petri net are also
unobservable. Unobservable places, i.e., faults, indi-
cate that the number of tokens in those places is not
Part C 30.2