Page 381 -
P. 381
Chapter 13 Dependability engineering13 Dependability engineering
364
364 Chapter
Dependable programming relies on the inclusion of redundancy in a program to check the
validity of inputs and the values of program variables.
Some programming constructs and techniques, such as go-to statements, pointers, recursion,
inheritance, and floating-point numbers, are inherently error prone. You should try to avoid
these constructs when developing dependable systems.
FURTHER RE ADING
Software Fault Tolerance Techniques and Implementation. A comprehensive discussion of
techniques to achieve software fault tolerance and fault-tolerant architectures. The book also covers
general issues of software dependability. (L. L. Pullum, Artech House, 2001.)
‘Software Reliability Engineering: A Roadmap’. This survey paper by a leading researcher in software
reliability summarizes the state of the art in software reliability engineering as well as discussing
future research challenges. (M. R. Lyu, Proc. Future of Software Engineering, IEEE Computer Society,
2007.) http://dx.doi.org/10.1109/FOSE.2007.24.
E XERCISES
13.1. Give four reasons why it is hardly ever cost effective for companies to ensure that their
software is free of faults.
13.2. Explain why it is reasonable to assume that the use of dependable processes will lead to the
creation of dependable software.
13.3. Give two examples of diverse, redundant activities that might be incorporated into
dependable processes.
13.4. What is the common characteristic of all architectural styles that are geared to supporting
software fault tolerance?
13.5. Imagine you are implementing a software-based control system. Suggest circumstances in
which it would be appropriate to use a fault-tolerant architecture, and explain why this
approach would be required.
13.6. You are responsible for the design of a communications switch that has to provide 24/7
availability, but which is not safety-critical. Giving reasons for your answer, suggest an
architectural style that might be used for this system.
13.7. It has been suggested that the control software for a radiation therapy machine, used to treat
patients with cancer, should be implemented using N-version programming. Comment on
whether or not you think this is a good suggestion.

