Risks - Software Safety
Overview: What does Software Safety refer to?
Software safety refers to the problems that arise from (a) the software
NOT doing something, (b) the software doing something it should NOT
do, or (c) instability in the software's environment, e.g., virus, hacker,
or system power intermittency. Such problems have had serious consequences
in medical, aviaion, finacial, military, communication and others areas.
How and why does bad software come about?
- Failure in software systems occur because designers and programmers
often don't know all the conditions for which to check. There is
no way to determine what changes may be made to the software or hardware
in the future. Complete testing of complex systems is impossible.
As the software development life cycle continues to grow shorter,
producers are forced to compromise risks and benefits. Unfortunately,
the risks can not be known completely.
What can be done?
- How can we improve software reliability and correctness.
Among these are:
- Precise, clear and complete specifications - The more accurately
a program is documented, the more likely it is to produce the
- Use of more advanced programming paradigms - For example,
Object Oriented Programming (OOP), uses encapselation to separate
the data and internal workings of objects from one another.
The advantage comes when changes are made in the code. Older
programming paradigms allow a domino effect to take place when
one piece of code is modified. OOP reduces the changes of
unforseen side effects taking place.
- Mathematical Verification - Use of theorem proving software
to test program correctness. The problem is that this approach
takes a great amount of time and is by default limited
to the specification.
- n-version programming - Develop independent
versions of the same program with the idea that they will not
err at the same point. The problem is that programs usually
err where the problem at hand was difficult conceptually, so
the programs are likely to err in the same location.
- Who is responsible for software errors?
- In most situations, it is hard to place the blame on one specific
group. Software errors are commonly caused by ambiguous
specifications, inaccurate programming, or insufficient testing.
Some fields where major accidents have occurred
- Medical - As medicine has advanced a great deal in
the last decades, computer have been assigned many tasks which are
to meticulous, to fine, or too detailed for humans to perform. In
many cases operators tell the machine what dose to give and the computer-controlled
machine performs the actual treatment. Small glitches in the code
or unforeseen situations may lead to the wrong dose being administered
and possibly to death of the patient.
- Military - Most advanced weapon systems today
are computer controlled. Planes such as the F-15 or missiles similar
to the Cruise and Patriot missiles used in the Gulf War, are fully
dependent on computers. Again little glitches in the code may lead to
engines or guidance systems over/under reacting to certain situations
and that leading to devastating accidents.
- Deployment control systems - Computers have
proved to ideal for monitoring and deploying various vehicles from
ambulances to airplanes. In many cases the systems which were installed
were not tested sufficiently and did the opposite of what they were
intended. Airplanes for example may be told to take similar paths.
- Other Events