Static Verification
Static verification is an a-priori reasoning process which aims to check model’s
consistency.
Following the
work
of Pesic et al., mainly two kinds of consistency verification are addressed in CLIMB:
- conflicts detection, which aims to check consistency of the whole model, i.e. to ensure that at least one execution is accepted
- discovery of dead activities, which aims to find local inconsistencies inside a model, namely to discover the set of activities that cannot be executed at all.
Such verifications are extremely important in case of composite models (see interoperability).
In order to detect conflicts, a generative version of SCIFF, called g-SCIFF, is
exploited. Starting from a given goal (in terms of expectations) it is capable to simulate an execution
trace which satisfies model's constraints. In this case, g-SCIFF is simply applied on the CLIMB
model with the goal true. Generation is then driven by the presence of constraints which impose
to perform a given activity independently from execution (such as the existenceN constraint).
Execution of these activities are simulated, new constraints could be triggered, and so on. If a
compliant execution trace can be finally generated, then the model does not contain conflicts.
Discovering whether a certain activity is dead is a very similar task: it can be reduced to conflicts
detection by imposing as goal that the activity will be executed at least once. This exactly
corresponds to detect conflicts on the CLIMB model obtained by adding to the original one an
existence1 constraint on the activity under test.
The figure below shows an example of dead activities inside a DecSerFlow model.