Every technological system or service of any consequence has a significant software component. The share of system failures attributable to failures in the software component is significant. Software has enough unique attributes that it is wise to treat reliability engineering for software as a subject in itself. In this chapter, you will see how software reliability engineering has been handled in the past and be introduced to an approach to software reliability engineering that is consistent with the design for reliability methods discussed in Chapter 6. In keeping with the theme of this book, we give a broad overview aimed at equipping systems engineers to manage software reliability and refer to other sources for details of specific methods.
Up to now, we have directed attention to reliability requirements and engineering for entire products or systems on the one hand and intangibles like services on the other. Certainly many, if not all, of the products and services common in a technological society contain a significant software component that is essential to their functioning. Usually, when constructing reliability requirements for these systems and services, it is necessary to pay special attention to the software they contain because