Risks - Software Safety

Study Guide

  1. 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.

  2. 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.

  3. What can be done?

    1. 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 desired results.
      • 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.

    2. 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.

  4. Some fields where major accidents have occurred

    1. 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.
    2. 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.
    3. 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.

  5. Case Studies

    1. Financial
    2. Other Events

    Index of Topics