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)