










Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
An overview of formal methods in software development, focusing on formal specifications, their role in the development of software systems, and their use in ensuring software correctness. It covers topics such as logical theories as specifications, specifying system states and operations, object-oriented systems, and the use of formal languages like z and object-z. The document also includes a case study on the therac-25 radiation therapy machine disaster, highlighting the importance of formal specifications in preventing software-related disasters.
Typology: Slides
1 / 18
This page cannot be seen from the preview
Don't miss anything!











It aims to illustrate:
Basic approaches to formal specification.
This part of the course is about formal specifications and their role in (formal)
development of software systems.
Derivations of formal specifications from informal requirements.
Refinement of formal specifications into program structures and
specification of programs.
Basic techniques for reasoning about programs and their
correctness with respect to the specifications.
Three turntable positions:
Electron beam generator
Accessory turntable
Patient
Software fault :
turntable in wrong position unsafe high radiation dose
A high energy electron beam can be needed but mustn’t hit patient directly.
Therac-25 relied only on software checks.
Unsafe architecture & lack of specs software bugs
High electron beam + turntable in position 1 or 3 = unsafe
is precise;
defines the behaviour of the system;
requires an understanding of the problem;
has formal semantics and reasoning laws.
Specifying includes capturing requirements:
coming to understand what the customer wants.
Requirements
Specifications
(with no repetitions).
Support software maintenance.
Specification brings together
quality software and correctness.
Quality software:
Correctness:
Formal semantics and reasoning laws
Modelling
As mathematical models, to describe and predict the intended (expected)
behaviour of the system. It helps focusing on some aspects of the system, leaving
out inessential details.
Design
To support constructive approaches to design (e.g., “bottom-up”). Specifications
would provide a description of what each building block does and enable us to
calculate how the whole system will behave once the blocks are combined.
Verification
To show the final system does what we intend. Construct formal proofs, based
on specification and program test, to show that the system satisfies its specification
requirements.
Z is one of the languages commonly used for writing state-based specifications.
It contains a lot of special-purpose notation. Object-Z is an extension of Z, which
facilitates the definition of class-based formal specifications.
We will
Results: