Lecture Notes for CS 325
Software Engineering for Safety Critical Systems
- safety critical systems - high reliability systems, high assurance
systems
- software is only one part of a safe system
- one view - software itself is not unsafe
- another view - safety is a system-wide characteristic
- safety - first, do no harm
- safety - the inability to cause personal loss or harm
- completely safe systems are either very expensive to build (automobile
travel) or impossible given current state of the art (nuclear power).
- like any other engineering discipline - trade off safety for risk
- risk - the effects of a hazard times its occurrence probability
- measures of risk - human life, replacement costs, legal costs
- reliability and safety
- reliability - the system does what it's supposed to
- unreliable systems can be safe - by failing to the safe side
- can safe systems be unreliable
- software quality and safety
- is perfect software the answer - what is "perfection"
- as part of a system, software errors may be caught elsewhere
- shifts the view from operational requirements to safety requirements
- software vs. hardware
- software is expensive to develop, cheap to produce, and flexible
- hardware is cheap to develop, expensive to produce, and inflexible
- the pressure is to replace hardware with software
- but hardware operates under physical laws which cannot fail
- and hardware failures are predictable
- a hardware-software split, with hardware providing absolute measures
and software providing finer measures
- hazards - identification and analysis
- identification
- hazard identification is difficult - lack of standards and categories
- the consensus view towards identifying and classifying hazards
- the delphi method - anonymous opinions collected
- joint application design - representatives meet and hash things out
- operating hazard analysis - identify operating procedures, then
identify hazard conditions and results
- analysis - where the identified hazards may occur
- fault tree analysis - from a hazard, identify causes
- and and or nodes, basic, undeveloped, and intermediate events
-
- event tree analysis - a bottom-up approach to analyzing fault trees
- failure modes and effects - consider system components and how they
fail
- software processes for developing safty-critical systems
- avoding adding hazards to the system during development
- requirements
- specification to turn informal techniques into more formal ones
- formal notations for requirements specification - statecharts, petri
nets, state machines
- validation - automated proofs are difficult or impossible
- design - should not intruduce new hazards.
- avoid adding new functions
- formal methods based approach, or a transformational approach
- design to formal notation is difficult, correctness proofs are
difficult, and changes are difficult to make
- implementation
- development tools - configuration management for system and tools
- formal verification -
- runtime checking - self checking code and monitor code
This page last modified on 26 April 2000.