Combined Static and Dynamic Verification of Object Oriented Software Through Partial Proofs
Doctoral thesis, 2019

When verifying software one can make use of several verification techniques. These techniques mostly fall in one of two categories: Static Verification and Dynamic Verification. Static verification deals with the analysis of either concrete source code, or a model of it. These kinds of techniques can verify properties over all possible runs of a program. Dynamic verification 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, concrete (as opposed to abstract) data, etc. On the other hand, its major drawbacks are the impossibility to extrapolate correct observations to all possible runs, and that the monitoring of a property introduces runtime overheads.

It is quite clear that static and dynamic verification have largely disjoint strengths. Therefore, their combination can allow the verification process to deal with richer properties, with greater ease. The work presented in this thesis addresses this issue by introducing some manners to combine static and dynamic verification, where partial proofs are used as a means to accomplish the combination. The main novelty in these combinations consists in the fact that all of them consider the use of the partial proofs in the verification process, whereas, in general, other verification approaches discard them right away.

The main contributions of this thesis are: (i) ppDATE, an automata-based formalism to specify both data- and control-oriented properties; (ii) structural operational semantics for ppDATE; (iii) a translation of ppDATE to DATE together with a proof of correctness; (iv) StaRVOOrS, a tool for combining (static) deductive verification and runtime verification of object oriented software; (v) a testing focused development methodology which integrates deductive and runtime verification in its workflow; and (vi) a methodology to infer global trace conditions for a system, from partial proofs local to the transitions of a model, obtained by performing low effort verification attempts to properties.

Room ED, EDIT building, Rännvägen 6B. Chalmers University of Technology.
Opponent: Davide Ancona. University of Genova, Italy.

Author

Mauricio Chimento

Chalmers, Computer Science and Engineering (Chalmers), Formal methods

Nowadays we live in a world where people interact with software on a regular basis. For instance, the daily use of online services, e.g. home banking, instant messaging, weather forecasting, TV streaming, or e-education, has become a trend, and it increases day by day at a fast pace. Therefore, unexpected software behaviour may be a real headache for everyone. It is true that if an application which checks the weather forecast has an error during its execution, it may not represent any harm. However, an error in a home banking system, even if it is small, could cause the lost of all the savings of the customers of a bank.

Different measures can be taken to avoid unexpected behaviour on their products. Among these measures, one can highlight the use of \textit{formal verification}. Formal verification consists on proving that a piece of software is correct, i.e. it behaves as it is expected, by showing that it fulfils a formal specification of its intended behaviour through the use of verification techniques. These techniques may be divided into two categories: \textit{static verification} techniques, and \textit{dynamic verification} techniques. In short, static verification techniques deal with the analysis of either concrete source code, or a model of it, whereas, dynamic verification techniques are concerned with the monitoring of software executions.

Static and dynamic verification techniques have disjoint strengths. Therefore, their combination can allow the verification process to deal with richer properties, with a greater ease. The work presented in this thesis introduces some novel manners to combine static and dynamic verification techniques, where partial proofs, i.e. an incomplete proof of property, are used as a means to accomplish the combination. This use of partial proofs corresponds to the main novelty of this work as, in general, other verification approaches discard them right away. As a result, we were able to enhance both the verification of correctness properties, and the development of software, as static verification becomes easier to use, and dynamic verification becomes more efficient.

StaRVOOrS: Unified Static and Runtime Verification of Object-Oriented Software

Swedish Research Council (VR) (2012-4499), 2013-01-01 -- 2015-12-31.

Subject Categories

Embedded Systems

Computer Science

Computer Systems

ISBN

978-91-7597-866-6

Doktorsavhandlingar vid Chalmers tekniska högskola. Ny serie: 4547

Publisher

Chalmers

Room ED, EDIT building, Rännvägen 6B. Chalmers University of Technology.

Opponent: Davide Ancona. University of Genova, Italy.

More information

Latest update

5/14/2019