Unified Static and Runtime Verification of Object-Oriented Software
At the time of verifying software one can make use of several verification techniques. These techniques mostly fall in one of two categories: Static Verification and Dynamic Verification. Runtime Verification is a dynamic verification technique which is concerned with the monitoring of software, providing guarantees that observed runs comply with specified properties. It is strong in analysing systems of a complexity that is difficult to address by static verification, e.g., systems with numerous interacting sub-units, real (as opposed to abstract) data, etc. On the other hand, the major drawbacks of runtime verification are the impossibility to extrapolate correct observations to all possible executions, and that the monitoring of a program introduces runtime overheads.
The work presented in this thesis addresses these issues by introducing a novel approach which combines the use of runtime verification with static verification, in such a way that:
(i) static verification attempts to `resolve' the parts of the properties which can be confirmed statically;
(ii) the static results, even if only partial, are used to improve the specified properties such that generated monitors will not check at runtime what was already verified statically.
In addition, this thesis introduces the specification language ppDATE (and its semantics), which allows to describe properties suitable for static and runtime verification within a single formalism; the verification tool StaRVOOrS, which embodies the previously mentioned approach; and presents some case studies to demonstrate the effectiveness of using this new approach.
Room EF, EDIT building, Rännvägen 6B, Chalmers University of Technology
Opponent: Tiziana Margaria, University of Limerick, Ireland.