U.S. DEPARTMENT OF COMMERCE
Technology Admistration
National Institute of Standards and Technology
Computer Systems Laboratory
Gaithersburg, MD 20899

A Study on Hazard Analysis in High Integrity Software Standards and Guidelines

NISTIR 5589

Laura M. Ippolito
Dolores R. Wallace

January 1995


ABSTRACT

This report presents the results of a study on hazard analysis, especially software hazard analysis, in high integrity software standards and guidelines. It describes types of system hazard analysis (that influence software), types of software hazard analysis, techniques for conducting hazard analysis (along with some of their advantages and disadvantages), and other practices and processes that should be employed in order to ensure the safety of software.

KEYWORDS

High integrity software, software assurance, software development, software engineering, software hazard analysis, software quality, software reliability, software safety, system hazard analysis.


EXECUTIVE SUMMARY

The National Institute of Standards and Technology (NIST) has built a database (1) of standards, guidelines, technical papers, and books which was used in a study on hazard analysis, especially software hazard analysis, in high integrity software standards and guidelines. For this report these documents were examined in order to determine the following:

This report describes types of system hazard analysis (preliminary hazard list; preliminary hazard analysis; system hazard analysis; and, operating and support hazard analysis) and types of software hazard analysis (software requirements hazard analysis; software design hazard analysis; code-level software hazard analysis; software safety testing; software/user interface analysis; and, software change hazard analysis).

This report includes techniques that are mentioned in some standards and/or guidelines for conducting hazard analysis (code walk-throughs; event tree analysis; hazard and operability studies; nuclear safety cross check analysis (NSCCA); Petri nets; software failure mode, effects, and criticality analysis; software fault tree analysis (SFTA); and, software sneak analysis (SSA)), along with some of their advantages and disadvantages.

Of the techniques investigated for this report, only NSCCA, SFTA, and SSA have been used specifically for software hazard analysis. And, while these techniques originated from similar techniques for hardware, they are relatively young and untried for software. More investigation and experimentation is needed to determine the usefulness, scope and cost effectiveness of these techniques.

This study also discusses the development of the software. It is not enough to conduct software hazard analysis or other safety analyses. Software needs to be developed using specific software development and software assurance processes to protect against or mitigate failure of the software. A complete software safety standard would at least reference other standards that address these mechanisms and would include a software safety policy identifying required functionality to protect against or mitigate failure.

As software is included in more and more critical systems (e.g., nuclear power plants, medical devices and transportation systems) the need for software safety programs becomes crucial. These software safety programs should consist of not only software safety analyses, but methodologies that assist in the assurance of developing quality software.

In summary, the following issues need to be addressed regarding the safety of software:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
(1) This database includes current U.S. and international documents that address high integrity software systems.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~


ABBREVIATIONS

The following acronyms and abbreviations are used in this report:

     CASE      Computer-Aided Software Engineering
     CSHA      Code-level Software Hazard Analysis
     ETA       Event Tree Analysis
     FMA       Failure Mode Analyses
     FMEA      Failure Mode and Effects Analysis (system)
     FMECA     Failure Mode, Effects, and Criticality Analysis
               (system)
     FTA       Fault Tree Analysis (system)
     HAZOP     HAZard and Operability studies
     NIST      National Institute of Standards and
               Technology
     NPP       Nuclear Power Plant
     NRC       Nuclear Regulatory Commission (United
               States)
     NSCCA     Nuclear Safety Cross Check Analysis
     NSO       Nuclear Safety Objectives
     O&SHA     Operating and Support Hazard Analysis
     OOD       Object Oriented Design
     PHA       Preliminary Hazard Analysis
     PHL       Preliminary Hazard List
     PRA       Probabilistic Risk Analysis
     SDHA      Software Design Hazard Analysis
     SFMEA     Software Failure Mode and Effects Analysis
     SFMECA    Software Failure Mode, Effects, and
               Criticality Analysis
     SFTA      Software Fault Tree Analysis
     SHA       System Hazard Analysis
     SCA       Sneak Circuit Analysis
     SCHA      Software Change Hazard Analysis
     SQA       Software Quality Assurance
     SRHA      Software Requirements Hazard Analysis
     SSA       Software Sneak Analysis
     SV&V      Software Verification and Validation
     USAF      United States Air Force

TABLE OF CONTENTS

  • EXECUTIVE SUMMARY
  • ABBREVIATIONS
  • 1 INTRODUCTION
  • 1.1. Review Process
  • 2. CONTEXT FOR SOFTWARE HAZARD ANALYSIS
  • 2.1. Criticality Assessment
  • 2.2.Types of Software Related System Hazard Analyses
  • 2.3. Types of Software Hazard Analysis
  • 3. HAZARD ANALYSIS TECHNIQUES
  • 3.1. Code Walk-Throughs
  • 3.2. Event Tree Analysis
  • 3.3. Hazard and Operability Studies
  • 3.4. Nuclear Safety Cross Check Analysis
  • 3.5. Petri Nets
  • 3.6. Software Failure Mode, Effects, and Criticality Analysis
  • 3.7. Software Fault Tree Analysis
  • 3.8. Software Sneak Analysis
  • 3.9. Additional References for Software Hazard Analysis Techniques
  • 4. SOFTWARE QUALITY
  • 4.1. Software Development
  • 4.2. Software Assurance
  • 4.3 Software Engineering Practices
  • 5. CONCLUSIONS
  • 6. REFERENCES
  • APPENDIX A. BIBLIOGRAPHY OF HIGH INTEGRITY

  • A.1. Standards and Guidelines
  • A.2 Books
  • A.3 Papers
  • List of Tables

  • Table 2-1. Standards Specifying Software Hazard Analysis
  • Table 3-1. Standards Specifying Software Hazard Analysis Techniques
  • Table 3-2. Additional Techniques' References
  • List of Figures

  • Figure 2-1 System & Software Hazard Analyses
  • Figure 3-1 Event Tree
  • Figure 3-2 NSCCA Criticality Matrix
  • Figure 3-3 Petri Net
  • Figure 3-4 Headers for a Failure Mode Analyses Matrix
  • Figure 3-5 Fault Tree Symbols
  • Figure 3-6 System Fault Tree
  • Figure 3-7 Software Fault Tree
  • Figure 4-1 Software Development & Assurance Processes

  • 1. INTRODUCTION

    This report presents the results of a study on hazard analysis, especially software hazard analysis, in high integrity software standards and guidelines. A hazard is an (unsafe) "condition that may lead to an unintended event that causes an undesirable outcome" [WALLACE]. The unintended event that results in an undesirable outcome is a mishap [MIL882B]. For example, a driver of a car ignores warning lights at a railroad crossing and drives the car onto the tracks. The hazard is the presence of the car and train on the track at the same time. The unintended event (mishap) is the train colliding with the car. The undesirable outcome is the probable loss of life and damage to the car and train.

    Hazard analysis is the process of identifying and evaluating the hazards of a system, and then making change recommendations that would either eliminate the hazard or reduce its risk to an "acceptable level" [MIL882B]. Traditionally this did not necessarily involve an analysis of software. However, as software is being included in more systems whose failure can cause physical harm, the need for identifying software hazards becomes increasingly important. Software hazard analysis makes recommendations to eliminate or control software hazards and hazards related to interfaces between the software and the system (includes hardware and human components). It includes analyzing the requirements, design, code, user interfaces, and changes. Software hazards may occur if the software is improperly developed (designed), the software dispatches incorrect information, or the software fails to transmit information when it should have.

    NIST reviewed high integrity standards and guidelines to determine the extent to which software hazard analysis is addressed by the standards community. Hazard analysis techniques are also discussed in this report, along with some of their advantages and disadvantages. There are few techniques developed specifically for conducting software hazard analysis. Many are based on methods used to analyze hardware safety. However, software and hardware differ in many ways; hardware errors are often random failures due to age or poor workmanship whereas software is only subject to design faults [LEVINSON]. Therefore, it is very important to tailor techniques correctly to software and its specific characteristics.

    Software hazard analysis is a part of software safety. Software safety also includes, for example, testing, identifying safety- critical, single- and multiple-failure sequences and determining software safety requirements [LEVESON86]. The following sample software safety program is suggested by [LEVESON89]: