Definitions and Background
- Hazards and Risks.
- Safety vs. Fault Tolerance.
- Design Issues for Safety.
- Redundancy.
- Approaches to Dependability.
Hands-on work
Automotive Drive-by-Wire.
Preparatory Analyses
- Hazard Analysis: FMEA.
- Fault & Event Tree Analysis.
- Probabilistic Event Tree Analysis.
- Risk Analysis.
- Approaches to Safety: Fault Avoidance, Fault Detection, Fault Tolerance.
Hands-on work
Fault Tree Analysis for Railway Safety. Event Tree and Risk Analysis for Railway Safety.
Safety Design Patterns
- Detection of Sensor Errors.
- Failstop.
- Fault Masking.
- Shutdown Design Patterns.
- Single Channel Patterns.
- Actuation Monitoring Options.
- Dual Channel Patterns.
- Dual Closed-Loop Patterns.
- Heterogeneous Peer-Channel Pattern.
- Dual-Dual Pattern.
Hands-on work
Avionic Computer Software Development.
Design Patterns for Resiliency and Safety
- Monitor-Actuator Pattern.
- The Safety Executive.
- A Cookbook for Safety-Critical Design Functionality.
- BIST: Built-In Self Test Software Design.
Hands-on work
Medical Respiratory Ventilator. Automotive Drive-by-Wire. Airbus A330/340 Fly-by-Wire. Boeing 777 Fly-by-Wire. The Wild Scalar.
Learning from System Failures and Accidents
- Sources of System Accidents.
- Software Factors in Some Famous Accidents.
- Government and International Software Safety Standards.
Case study
Successful Spacecraft.
High Availability: Underlying Principles
- Fault Avoidance vs. Tolerance.
- Replication vs. Functional Redundancy vs. Analytic Redundancy.
- Dynamic vs. Static Redundancy.
Hands-on work
Space Shuttle Software.
Fundamental System-Level Availability Design Patterns
- Static Hardware Fault Tolerance.
- N-Plex Design.
- Dynamic System Fault Tolerance.
- Redundant Pairs.
- Clusters.
- Cluster Failover Strategy Choices.
Hands-on work
MTBF, MTTF Calculations in Triple Modular Redundancy.
Concepts for Backward Error Recovery
- Design Diversity.
- Dynamic System Redundancy.
- Backward Error Recovery.
- Transactions & Checkpointing.
Design Patterns and Techniques for High Availability
- Checkpoint-Rollback.
- Process Pairs.
- Recovery Blocks.
- Limitations of Backward Error Recovery Patterns.
- Forward Error Recovery Design Patterns.
- Technical Issues in High Availability Design.
- Failover Management. Data Replication.
- Dealing with Software Design Faults.
C Language in Critical Systems
- Software Robustness: MISRA-C, LINT, Static Code Analyzers.
- Update on Static Code Analysis.
- The JPL "Power of 10" Coding Rules.
Hands-on work
C-Language Shenanigans.