Software and Systems Verification
Full course description
Have you ever written a program with a bug in it? Then this course is for you! Software verification tools can check whether your program works by showing that it correctly satisfies its specification, or finds a case in which it can go wrong. Unlike unit testing and other software validation methods, verification tools use formal methods to rigorously prove correctness. Similar techniques can be used to show that (mathematical models of) cyber-physical systems work as designed.
In this course, we will start by and introducing the main notions of object-oriented program verification, including pre- and post-conditions for methods, and class invariants. We shall use Hoare logic to convert programs and their specifications into logical statements to be proved. We shall apply these techniques to the verification of simple programs written in Java.
In the second part of the course, we consider formal models of software and systems as labelled transition systems (automata), using temporal logics for specification, and consider the fundamental algorithms for verification. We shall apply these algorithms to simple discrete verification problems, such as vending machines and communications systems, modelled using a specification language such as SMV. Finally, we will look at simple continuous systems, such as robots and electronic systems, and show how to verify these using rigorous numerical methods based on interval arithmetic.
This is an optional course: Third year students choose three electives per period out of the optional courses during period 1 and 2.
Prerequisites
Desired prior knowledge: Reasoning Techniques, Theoretical Computer Science
Recommended reading
J.B. Almeida, M.J. Frade, J.S. Pinto & S. Melo de Sousa, “Rigorous Software Development: an Introduction to Program Verification”, Springer, 2011.
C. Baier & J.P. Katoen, “Principles of Model Checking”, MIT Press, 2008.
L. Jaulin, M. Kieffer, O. Didrit & E. Walter, "Applied Interval Analysis", Springer, 2001.