COM4506 Testing and Verification in Safety-Critical Systems
|| This module provides an introduction to the processes and
problems of building complex software such as for use in
aerospace applications. Topics covered can be split into
four major groups: safety, specification languages, concepts
of software engineering, different methods of software
testing. A substantial amount of time will be spent on the
ideas of software testing and specific testing techniques.
- Safety includes software and systems safety, methods
of performing hazard analysis, human factors and the IEC
- Specification languages such as Statecharts.
- Software engineering concepts focus on the software
lifecycle, safe language subsets,
software testing and maintenance.
- The software testing part covers advanced
approaches to generating software tests.
Students should be aware that there are limited places available on this course.
2 MOLE Quizzes [40%]
Lab portfolio [30%]
||Dr Neil Walkinshaw
- to present the human and technological issues involved
in building safe complex software
- to introduce the role of standards in the
development of safety critical systems;
- to explain how human factors relate to systems safety
and how they must be considered in system design;
- to introduce the notations and specialised
programming languages used for construction of safety critical software;
- to provide an understanding of the software
engineering concepts that are specific to safety critical systems;
- to examine in detail a range of methods for testing
software, and the contributions that they can make to
achieving goals for the quality of software.
|| By the end of this unit, students will:
- Have an overall appreciation of systems and software
safety, hazard analysis and the approach to engineering
- Understand the concept of SILs (safety integrity
levels) and the principles of the IEC61508 standard.
- Understand a range of specific human-computer
interaction issues as applied to safety-critical
- Be familiar with specification languages, and be able
to use them to construct specifications of appropriate
- Understand the limitations that must be introduced
into conventional programming languages when developing
software to be used in safety-critical systems.
- Understand the software lifecycle and its
relationship to the development of safety-critical
- Be able to apply advanced software testing methods to
- The nature of safety-critical systems and software
- Safety management: hazards, risks, risk assessment,
and reduction, software reliability
- Finite-state machine models and predicates
- Software engineering lifecycles, processes and
activities, the role of verification and validation.
- Specifying control systems
- Introduction to testing: forms of testing and
approaches to it
- Test methods and derivation of test cases
- Hazard analysis, HazOp and FMEA
- Programming practices for safety-critical software.
||Students taking this module are expected to have done a programming module such as COM160 or have completed a first year in the Computer Science Department. The language used in COM4506 assignment is Java hence prior familiarity with it is necessary.
|| Lectures will explain the basic theoretical concepts and
Problem solving and examples classes, together with the
associated private study and the preparation for the
coursework assignment, will give students the opportunity to
develop their understanding of the concepts and their
practical skills in the development
of elements of safety-critical software.
||Will be provided in problem-solving classes.
- N. Walkinshaw, Software Quality Assurance: Consistency in the Face of Change, 2017
- N. Leveson, Safeware - system safety and computers,
- Pezze & Young, Software Testing Analysis: Process, Principles and Techniques, John Willey & Sons 2008.