Faults may be the results of either:
Design Errors
Design errors represent a very significant proportion of the catastrophic failures that occur. Design errors often correspond to situations which are hard to test, or easy to overlook.
Well-known failures of embedded systems, due to design errors, include:
- Ariane-5
in which a software module from the Ariane-4 rocket was present and active, initiating a sequence of events leading to loss of the rocket.
- Mars Climate Orbiter
in which a subcontractor used Imperial units (pound-seconds) instead of the metric units (newton-seconds) as specified by NASA.
Implementation Errors
Also called programming errors, these are when the actual software or hardware do not follow the intended design.
Well-known failures of embedded systems, due to implementation errors include:
- Therac-25
in which a software error in a radiation therapy machine caused it to deliver massive doses of radiation to 6 patients, killing 3.
- Near Earth Asteroid Rendezvous spacecraft
in which a sequence of software errors led to dumping two-thirds of the mission's fuel. Many of the mission's objectives were abandoned, and the rendezvous with the EROS-443 asteroid ocurred 13 months later than planned.