Design of Safety-Critical Systems & Software
Duration: 2 or 3 days
Number of participants: recommended optimum 15, maximum 25
The primary goal of this course is to give the participant the skills necessary to design software for real-time and embedded computer systems in which faults and failures could pose a danger to human life. This is a very practical, results-oriented course that will provide knowledge and skills that can be applied immediately. This course examines the design of embedded systems and software that are to provide services in applications that could, when they fail, threaten the well-being or life of people. It offers practical guidance on how to address safety concerns when designing safety critical software in fields such as medical, automotive, avionics, nuclear and chemical process control.
The course surveys concepts and alternatives for software and system architectures appropriate for safety-critical systems. Following an examination of hazard and risk analysis techniques, it goes on to list a number of approaches to software safety that span fault avoidance, fault detection, and fault containment tactics including redundancy, recovery, masking and barriers. A variety of candidate architectural design patterns are examined, including dual/triple modular redundancy, dissimilar independent designs, backup parallel patterns and active/monitor parallel patterns. Many real-world examples are presented. Software design approaches are discussed for run-time Built-In Self Test (BIST) of processor and peripheral hardware.
This course is far from a general course about system or software design theory, but rather it is tightly focused on the design of embedded systems and software that are required to provide their intended functions without endangering the safety or life of users or their environment.
This course is intended for practicing real-time and embedded systems software system architects, project managers and technical consultants who have responsibility for designing, structuring and implementing the software for real-time and embedded computer systems in applications that could, when they fail, threaten the well-being or life of people.
Course participants are expected to be familiar with general embedded and real-time software design. This knowledge can be gained by attending a prerequisite embedded software design course such as “Architectural Design of Real-Time Software”.
Many (but not all) safety-critical systems must also be high-availability systems – with severe consequences in situations where the system fails and remains unavailable for significant periods of time. For those safety-critical systems that also have high-availability requirements, we recommend that the course “Design of High Availability Systems and Software” should be taken at the same time as this course. The two courses have little overlap in content, and offer complimentary approaches and perspectives. It is possible to combine these two courses into a unified three- or four-day course under the name of “Safety Critical and High Availability Systems Masterclass”.
The course is based on lectures, discussions, design examples, exercises.