Page 372 -
P. 372

13.4   Dependable programming  355


                                          behave. There cannot be scope for interpretation by the software developers. If
                                          there are errors in this document, then these will be presented to all of the devel-
                                          opment teams and implemented in all versions of the system.

                                         One way to reduce the possibility of common specification errors is to develop
                                       detailed specifications for the system independently, and to define the specifications
                                       in different languages. One development team might work from a formal specifica-
                                       tion, another from a state-based system model, and a third from a natural language
                                       specification. This helps avoid some errors of specification interpretation, but does
                                       not get around the problem of specification errors. It also introduces the possibility of
                                       errors in the translation of the requirements, leading to inconsistent specifications.
                                         In an analysis of the experiments, Hatton (1997), concluded that a three-channel sys-
                                       tem was somewhere between five to nine times more reliable than a single-channel
                                       system. He concluded that improvements in reliability that could be obtained by devot-
                                       ing more resources to a single version could not match this and so N-version approaches
                                       were likely to lead to more reliable systems than single version approaches.
                                         What is unclear, however, is whether the improvements in reliability from a mul-
                                       tiversion system are worth the extra development costs. For many systems, the extra
                                       costs may not be justifiable as a well-engineered single version system may be good
                                       enough. It is only in safety and mission critical systems, where the costs of failure
                                       are very high, that multiversion software may be required. Even in such situations
                                       (e.g., a spacecraft system), it may be enough to provide a simple backup with limited
                                       functionality until the principal system can be repaired and restarted.




                                13.4 Dependable programming


                                       Generally, I have avoided discussions of programming in this book because it is
                                       almost impossible to discuss programming without getting into the details of a spe-
                                       cific programming language. There are now so many different approaches and lan-
                                       guages used for software development that I have avoided using a single language
                                       for examples in this book. However, when considering dependability engineering,
                                       there is a set of accepted good programming practices that are fairly universal and
                                       which help reduce faults in delivered systems.
                                         A list of good practice guidelines is shown in Figure 13.8. They can be applied in
                                       whatever programming language is used for systems development, although the way
                                       they are used depends on the specific languages and notations that are used for system
                                       development.

                                       Guideline 1: Control the visibility of information in a program

                                       A security principle that is adopted by military organizations is the ‘need to know’
                                       principle. Only those individuals who need to know a particular piece of information
                                       in order to carry out their duties are given that information. Information that is not
                                       directly relevant to their work is withheld.
   367   368   369   370   371   372   373   374   375   376   377