Recommended Concise guide to formal methods, theory,
Textbook(s) fundamentals and industry applications, 7th edition, Springer, 2017. Recommended 1. The way of Z practical programming with Reference formal methods, Jonathan Jacky, 7th (Books/Websites/ Edition, Cambridge University Press, 2008. Articles) 2. Modern formal methods and applications, Hossam A. Gabbar, 8th Edition, Springer- Verlag, 2006. Course Assessment Evaluation Methods Weight (%) Quizzes Assignments 25% Presentation/Project Midterm 25 Final Term 50 Total 100 Critical Software Systems Spectacular Software Failures
THERAC-25 radiation machine : Poor testing of
safety-critical software can cost lives : 6 patients were killed
Ariane 5 explosion : exception-handling bug
The rocket used horizontal bias to determine whether it was pointing up or down, This value was represented by a 64-bit floating variable. However, problems began to occur when the software attempted to stuff this 64-bit variable, which can represent billions of potential values, into a 16-bit integer, which can only represent 65,535 potential values. For the first few seconds of flight, the rocket’s acceleration was low, so the conversion between these two values was successful. However, as the rocket’s velocity increased, the 64-bit variable exceeded 65k, and became too large to fit in a 16-bit variable. It was at this point that the processor encountered an operand error, and populated the BH variable with a diagnostic value. Spacecraft was consumed in a gigantic fireball of liquid hydrogen.
We need our software to be dependable
about 370 million $ lost)
Testing is one way to assess dependability
Formal Specification ◦ Formal specification is the use of mathematical notation to describe in a precise way the properties that an information system must have, without unduly constraining the way in which these properties are achieved. Formal specifications Formal methods may be employed at a number of levels ◦ Formal specification only ◦ Formal specification, refinement and verification (some proofs); ◦ Formal specification, refinement and verification (with extensive theorem proving) Why Should We Use Formal Methods? ◦ There is a strong motivation to use best practice in software engineering in order to produce software adhering to high-quality standards. ◦ Quality problems with software may cause minor irritations or major damage to a customer’s business including loss of life. ◦ benefit to companies in reducing the occurrence of defects in software products Limitations of software formal specifications