| 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 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 testingExam |  
          | 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 softwareSafety management: hazards, risks, risk assessment,
                and reduction, software reliabilityFinite-state machine models and predicatesSoftware engineering lifecycles, processes and
                activities, the role of verification and validation.Specifying control systems Introduction to testing: forms of testing and
                approaches to itTest methods and derivation of test casesHazard 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, but 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. |  |