The University of Sheffield
Department of Computer Science

COM6506 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 covers advanced approaches to generating software tests.

Students should be aware that there are limited places available on this course.

Session Autumn 2021/22
Credits 15
  • There will be two formative Blackboard quizzes.
  • Coursework on software testing
  • Exam
Lecturer(s) Dr Ramsay Taylor
  • 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.
Objectives 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.
  • 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
Essential skills/Pre-requisites Students taking this module are expected to have done a programming module. The language used in COM6506 assignment is Java hence prior familiarity with it is necessary.
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.
Recommended Reading
  • N. Walkinshaw, Software Quality Assurance: Consistency in the Face of Change, 2017
  • N. Leveson, Safeware - system safety and computers, Addison-Wesley, 1995
  • Pezze & Young, Software Testing Analysis: Process, Principles and Techniques, John Willey & Sons 2008.