1)What is a Safety/Life – critical system ?

2)Life-critical system example: The Therac 25

3)How to avoid heavy mistakes in software engineering

------

1)What is a Safety/Life – critical system ?

A safety/life – critical systemis a system, whole failure/malfunction results in:

-Death or serious injury to people

-Loss or damage to equipment

-Envorionmental harm

Examples: circuit braker, fire alarm, medical machines, parachutes, airbag/seatbelt system, air traffic control system, nuclear reactor control system

Note: safety critical systems are increasingly computer based!

2)Life-critical system example: The Therac 25

-The Therac 25 is a Canadian medical linear accelerator (~1985), which uses x-ray and electron-beams to treat patients with cancer or tumor

-Software bugs in it caused six fatal accidents (injury or death)

-Problems of the Therac 25:

The manufacturers relied at the life-critical aspect on software

(note: there is always a bug in software)

The software was created without knowledge of software engineering practices:

  • No documentation
  • No test functions
  • No modularization
  • No real synchronization ( indispensable for parallel processes; that was the main problem in the Therac25 machine)

3)How to avoid heavy mistakes in software engineering

1)Documentation

Before you start (inception / elaboration):

  • requirements: identify attributes, capabilities, characteristics or quality of a system
  • architecture/design: create an overview of software and relations ( UML-, Class – diagrams etc.)

While you are coding:

  • technical documentation of code, algorithms, interfaces and API’s

After you finished:

  • create manuals for end user, system administrator and support staff

2)Semaphors:

  • Use semaphors or synchronization methods, when you have parallel processes

3)Modularisation:

  • This will give you overview and the reusability of your software is simplier

4)Testing:

  • After coding of a function:
  • Write unit tests to guarantee quality of your software

5)Software metrics:

  • They will show you numerical the qualities of your software(cohesion, coupling, etc.)
  • There are a lot of free tools available for almost each case (Eclipse plugins..)

6)Design patterns:

  • As you have common problems in software design, there are a lot of design patterns, which you can use for your software
  • (note: usually a lot of other programmers had the same problems as you. Use their solutions -> design patterns)