COM4506 Testing and Verification in Safety-Critical Systems
Summary |
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
61508 standard.
- Specification languages such as Statecharts.
- Software engineering concepts focus on the software
lifecycle, safe language subsets,
software testing and maintenance.
- The software testing part is concerned with advanced
approaches to generating software tests.
|
Session |
Autumn 2025/26 |
Credits |
15 |
Assessment |
- There will be two formative Blackboard quizzes.
- Coursework on software testing [30%]
- Exam [70%]
|
Lecturer(s) |
Prof. Robert Hierons |
Resources |
|
Aims |
- 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.
|
Learning Outcomes |
By the end of this unit, students will:
- Have an overall appreciation of systems and software
safety, hazard analysis and the approach to engineering
safe systems.
- 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
systems.
- Be familiar with specification languages, and be able
to use them to construct specifications of appropriate
simple systems.
- 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
systems.
- Be able to apply advanced software testing methods to
test generation.
|
Content |
- 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.
|
Restrictions |
Optional modules within the school have limited capacity. We will always try to accommodate all students but cannot guarantee a place. |
Essential skills/Pre-requisites |
Students taking this module are expected to have done a programming module such as COM160 or have completed a first year in the School of Computer Science. The module does not require advanced programming concepts. |
Teaching Method |
Lectures will explain the basic theoretical concepts and
their applications.
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. |
Feedback |
Will be provided in problem-solving classes. |
|