In general, existing software reliability prediction methodologies do not address the characteristics of distributed systems, including client-server systems. This is an amazing situation given the importance of distributed systems in contemporary society. The reason for this situation is the rapid technological development of distributed systems and networks, most notably the explosive growth of the Internet. This rapid growth has made it difficult for the software reliability community to respond to the challenge of the new technology. This tutorial was developed to address this deficiency.
The objective of this tutorial is to help practitioners implement or improve a software reliability program in their organizations, using a step-by-step approach based on an enhanced version of the ANSI/AIAA Recommended Practice for Software Reliability and case studies from the NASA Space Shuttle and the United States Marine Corps logistical systems. Modeling methods, prediction techniques, and defect analysis for distributed systems will be emphasized
In broad terms, implementing a software reliability program is a two-phased process. It consists of (1) identifying the reliability goals and (2) testing the software to see whether it conforms to the goals. The reliability goals can be ideal (e.g., zero defects) but should have some basis in reality based on tradeoffs between reliability and cost. The testing phase is more complex because it involves collecting raw defect data and using it for assessment and prediction.
These phases require a number of steps for their implementation. The following steps will be presented as a process for an organization to develop a software reliability program. These steps provide a structured approach to the software reliability process. Each step will be discussed to provide a good understanding of the entire software reliability process. The software reliability steps and outline of the tutorial are as follows:
- The new SMERFS3 Windows-based system and software engineering reliability tool will be used to illustrate software reliability assessment and prediction.
- State the Reliability Requirement
- Establish a Measurement Framework
- Identify the Operational Profile
- Establish Problem Severity Levels
- Collect the Data
- Estimate Model Parameters
- Select the Optimal Set of Failure Data
- Test the Software
- Make Reliability Predictions
- Adapt the Process For Distributed System Predictions
- Validate the Model
- Assess the Risks of Deploying the Software
- Make Reliability Decisions
- Use Software Reliability Tools
Dr. Norman Schneidewind is Professor of Information Sciences and Director of the Software Metrics Research Center at the Naval Postgraduate School. He is the developer of the Schneidewind software reliability model, recommended by the American National Standards Institute of Aeronautics and Astronautics Recommended Practice for Software Reliability.