Up to this point, we have been concerned with hardware reliability—time to failure, modeling at the component and system levels, calculation of reliabilities, description and analysis of failure data, estimation, and related topics. These issues are also basic concerns in dealing with the reliability of software, and many of the same models are used in its analysis. There are some important differences between hardware and software, however, some obvious and some rather subtle, and these lead to some significant differences in definitions, modeling, data, and interpretation of results. In this chapter, we highlight some of these differences, and discuss reliability analysis in the context of software.
9.1.1 The Need for Reliable Software
Society as a whole has become crucially dependent on computers in production, commerce, finance, aerospace, medicine, and in our daily lives, and there is no doubt that this dependency will continue to increase. It is self-evident that a computer system, to operate properly, requires both reliable hardware and reliable software. In fact, the greatest difficulties in designing a reliable computer system are often in the software area. There are long-standing principles and procedures for dealing with hardware design, development and testing, some dating back to the Guilds in the Middle Ages. Software, on the other hand, is a relatively recent development, and its development is a purely intellectual ...