Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSE 599F: Formal Verification of Computer Systems.

Similar presentations


Presentation on theme: "CSE 599F: Formal Verification of Computer Systems."— Presentation transcript:

1 CSE 599F: Formal Verification of Computer Systems

2 Course information Instructor: Shaz Qadeer Office: 454 Allen Center Lectures: CSE 303, Wed-Fri, 12pm- 1:20pm Office hours: Wed-Fri, by appointment Web page: http://www.cs.washington.edu/education/courses/599f/

3 What is this course about? Techniques for improving reliability of computer systems –Applicable to both software and hardware –Focus on software Automated techniques for verification of partial specifications

4 This course is not about… Programming languages and type systems Software engineering methodology Dynamic analysis Software testing

5 Prerequisites Algorithms Formal language theory Elementary mathematical logic But, none of that matters if you really want to understand the material

6 Goals Learn about the fundamental ideas Understand the current research problems Do novel research The best advances come from a combination of techniques from different research areas!

7 Grades Homeworks –Work out examples and theoretical problems –Use prototype verification tools to verify simple examples Discussion and review of research articles Project (in groups of 1-2) –Independent research –Survey of a research area –Use a verification tool to verify a realistic system

8 Why should we care? NIST (National Institute of Standards and Technology) report –software bugs cost $60 billion annually High profile incidents of systems failure –Therac-25 radiation overdoses, 1985-87 –Pentium FDIV bug, 1994 –Northeast blackout, 2003 –Air traffic control, LA airport, 2004

9 Intellectual challenge Civil engineering –Bridges dont fail

10 Reliable Engineering

11 Intellectual challenge Civil engineering –Bridges dont fail Mechanical engineering –Cars are reliable

12

13 Intellectual challenge Civil engineering –Bridges dont fail Mechanical engineering –Cars are reliable Software engineering

14

15 Why is software hard? The human element –Getting a consistent and complete set of requirements is difficult –Requirements often change –Human beings use software in ways never imagined by the designers

16 Why is software hard? The mathematical element –Huge set of behaviors –Nondeterminism External due to inputs Internal due to concurrency –Even if the requirements are unchanging, complete and formally specified, it is infeasible to check all the behaviors

17 Bubble Sort BubbleSort(int[] a, int n) { for (i=0; i<n-1; i++) { for (j=0; j<n-1-i; j++) { if (a[j+1] < a[j]) { tmp = a[j]; a[j] = a[j+1]; a[j+1] = tmp; } Even for a small program, enumeration of the set of all possible behaviors is impossible! n#inputs 12^32 22^64..

18 x Variable P Program = assert x | x++ | x-- | P 1 ; P 2 | if x then P 1 else P 2 | while x P Simple programming language Assertion checking for this language is undecidable!

19 Holy grail of algorithmic verification Soundness –If the algorithm reports no failure, then the program does not fail Completeness –If the algorithm reports a failure, then the program does fail Termination –The algorithm terminates It is impossible to achieve the holy grail in general!

20 Methods Model checking Axiomatic verification

21 Model checking Create a model of the program in a framework that is decidable –Finite state system –Pushdown system Manual model creation Automated model verification

22 Axiomatic verification Program verification similar to validity checking in a mathematical logic –Axioms –Rules of inference Programmer attempts to find a proof using the axioms and the rules of inference Manual proof discovery Automated proof checking

23 Recently… Combination of model checking and axiomatic verification –Iterated abstration and refinement


Download ppt "CSE 599F: Formal Verification of Computer Systems."

Similar presentations


Ads by Google