1 Introduction and Overview -- 1.1 What is Software Engineering? -- 1.2 Uncertainty in Software Production -- 1.3 The Quantification of Uncertainty -- 1.4 The Role of Statistical Methods in Software Engineering -- 1.5 Chapter Summary -- 2 Foundational Issues: Probability and Reliability -- 2.0 Preamble -- 2.1 The Calculus of Probability -- 2.2 Probability Models and Their Parameters -- 2.3 Point Processes and Counting Process Models -- 2.4 Fundamentals of Reliability -- 2.5 Chapter Summary -- Exercises for Chapter 2 -- 3 Models for Measuring Software Reliability -- 3.1 Background: The Failure of Software -- 3.2 Models Based on the Concatenated Failure Rate Function -- 3.3 Models Based on Failure Counts -- 3.4 Models Based on Times Between Failures -- 3.5 Unification of Software Reliability Models -- 3.6 An Adaptive Concatenated Failure Rate Model -- 3.7 Chapter Summary -- Exercises for Chapter 3 -- 4 Statistical Analysis of Software Failure Data -- 4.1 Background: The Role of Failure Data -- 4.2 Bayesian Inference, Predictive Distributions, and Maximization of Likelihood -- 4.3 Specification of Prior Distributions -- 4.4 Inference and Prediction Using a Hierarchical Model -- 4.5 Inference and Predictions Using Dynamic Models -- 4.6 Prequential Prediction, Bayes Factors, and Model Comparison -- 4.7 Inference for the Concatenated Failure Rate Model -- 4.8 Chapter Summary -- Exercises for Chapter 4 -- 5 Software Productivity and Process Management -- 5.1 Background: Producing Quality Software -- 5.2 A Growth-Curve Model for Estimating Software Productivity -- 5.3 The Capability Maturity Model for Process Management -- 5.4 Chapter Summary -- Exercises for Chapter 5 -- 6 The Optimal Testing and Release of Software -- 6.1 Background: Decision Making and the Calculus of Probability -- 6.2 Decision Making Under Uncertainty -- 6.3 Utility and Choosing the Optimal Decision -- 6.4 Decision Trees -- 6.5 Software Testing Plans -- 6.6 Examples of Optimal Testing Plans -- 6.7 Application: Testing the NTDS Data -- 6.8 Chapter Summary -- Exercises for Chapter 6 -- 7 Other Developments: Open Problems -- 7.0 Preamble -- 7.1 Dynamic Modeling and the Operational Profile -- 7.2 Statistical Aspects of Software Testing: Experimental Designs -- 7.3 The Integration of Module and System Performance -- Appendices -- Appendix A Statistical Computations Using the Gibbs Sampler -- A.1 An Overview of the Gibbs Sampler -- A.2 Generating Random Variates The Rejection Method -- A.3 Examples: Using the Gibbs Sampler -- A.3.1 Gibbs Sampling the Jelinski-Moranda Model -- A.3.2 Gibbs Sampling the Hierarchical Model -- A.3.3 Gibbs Sampling the Adaptive Kalman Filter Model -- A.3.4 Gibbs Sampling the Non-Gaussian Kalman Filter Model -- Appendix B The Maturity Questionnaire and Responses -- B. 1 The Maturity Questionnaire -- B.2 Binary (Yes, No) Responses to the Maturity Questionnaire -- B.3 Prior Probabilities and Likelihoods -- References -- Author Index.
0
SUMMARY OR ABSTRACT
Text of Note
This preface pertains to three issues that we would like to bring to the attention of the readers: our objectives, our intended audience, and the nature of the material. We have in mind several objectives. The first is to establish a framework for dealing with uncertainties in software engineering, and for using quantitative measures for decision making in this context. The second is to bring into perspective the large body of work having statistical content that is relevant to software engineering, which may not have appeared in the traditional outlets devoted to it. Connected with this second objective is a desire to streamline and organize our own thinking and work in this area. Our third objective is to provide a platform that facilitates an interface between computer scientists and statisticians to address a class of problems in computer science. It appears that such an interface is necessary to provide the needed synergism for solving some difficult problems that the subject poses. Our final objective is to serve as an agent for stimulating more cross-disciplinary research in computer science and statistics. To what extent the material here will meet our objectives can only be assessed with the passage of time. Our intended audience is computer scientists, software engineers, and reliability analysts, who have some exposure to probability and statistics. Applied statisticians interested in reliability problems are also a segment of our intended audience.