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.
   376   377   378   379   380   381   382   383   384   385   386