Chapter 1.Overview of Software Reliability Engineering 1
1.1 What Is Software Reliability Engineering and How Does It Help Development and Testing? 2
1.2 The Software Reliability Engineering Process 5
1.3 Fone Follower 7
1.4 Types of Test 8
1.5 Systems to Test 9
1.6 Frequently Asked Questions 11
1.6.1 Effectiveness and Benefits 11
1.6.2 Concepts 15
1.6.3 Relationships with Other Practices 18
1.6.4 Application 20
1.7 Background 24
1.7.1 Software Reliability Concepts 25
1.7.2 Reliability 28
1.7.3 Software Reliability and Hardware Reliability 35
1.7.4 Software Reliability Modeling 36
1.8 Problems 39
Chapter 2.Defining Necessary Reliability 41
2.1 Concepts 41
2.1.1 Failure and Fault 41
2.1.2 Failure Severity Classes 42
2.1.3 Failure Intensity 43
2.2 Procedure 44
2.2.1 Defining Failure with Severity Classes for Product 45
2.2.2 Choosing a Common Measure for All Associated Systems 46
2.2.3 Setting a System Failure Intensity Objective for Each System to be Tested 46
2.2.4 Determining the Developed Software Failure Intensity Objective for the Product and Its Variations 51
2.2.5 Engineering Strategies to Meet the Developed Software Failure Intensity Objectives 53
2.3 Special Situations 56
2.3.1 Other Failure Groupings 56
2.3.2 Allocation of Failure Intensity Objective to Components 57
2.3.3 Software Safety and Ultrareliability 59
2.4 Frequently Asked Questions 62
2.4.1 Definition of Failure 62
2.4.2 Failure Severity Classes 64
2.4.3 Setting Failure Intensity Objectives 65
2.4.4 Concepts 69
2.4.5 Application 73
2.5 Background 77
2.5.1 Defining Failure with Severity Classes 77
2.5.2 Setting System Failure Intensity Objectives 87
2.5.3 Availability 91
2.5.4 Reliability Combinatorics 92
2.6 Problems 94
Chapter 3.Developing Operational Profiles 97
3.1 Concepts 97
3.2 Procedure 101
3.2.1 Determining Operational Modes 102
3.2.2 Identifying Operation Initiators 103
3.2.3 Choosing Tabular or Graphical Representation 104
3.2.4 Creating an Operations List 105
3.2.5 Determining Occurrence Rates 112
3.2.6 Determining Occurrence Probabilities 115
3.3 Special Situations 116
3.3.1 Handling the Evolution of the Definition of Operation during System Development 117
3.3.2 Applying the Module Usage Table 118
3.4 Frequently Asked Questions 119
3.4.1 Uses 120
3.4.2 Concepts 122
3.4.3 Application 124
3.5 Background 129
3.5.1 Determining Operational Modes 129
3.5.2 Operations and Runs 130
3.6 Problems 133
Chapter 4.Preparing for Test 135
4.1 Concepts 136
4.2 Procedure 140
4.2.1 Preparing Test Cases 140
4.2.2 Preparing Test Procedures 146
4.3 Frequently Asked Questions 150
4.4 Background 156
4.4.1 Test Efficiency 156
4.4.2 Increasing Test Efficiency by Using Run Categories 157
4.4.3 A Graphical View of Test Selection 159
4.5 Problems 161
Chapter 5.Executing Test 163
5.1 Allocating Test Time 163
5.2 Invoking Test 164
5.3 Identifying System Failures 168
5.3.1 Analyzing Test Output for Deviations 168
5.3.2 Determining Which Deviations Are Failures 169
5.3.3 Establishing When Failures Occurred 171
5.4 Special Situations 174
5.4.1 Establishing When Failures Occurred for Tests on Multiple Configurations 174
5.4.2 Uncertainties in Establishing When Failures Occurred 175
5.4.3 Multiple Versions in the Field 178
5.5 Frequently Asked Questions 178
5.5.1 Test Process 179
5.5.2 Counting Failures 182
5.5.3 Measuring When Failures Occurred 186
5.6 Background 192
5.6.1 Allocating Test Time 192
5.6.2 Invoking Tests 192
5.6.3 Counting Failures 193
5.7 Problems 196
Chapter 6.Applying Failure Data to Guide Decisions 197
6.1 Certification Test 198
6.2 Reliability Growth Test 201
6.3 Special Situations 205
6.3.1 Evolving Programs 205
6.3.2 Unreported Failures 208
6.3.3 Certification Test at Different Risk Levels and Discrimination Ratios 213
6.3.4 Operational Profile Variation 217
6.4 Frequently Asked Questions 221
6.4.1 Theory 221
6.4.2 Application 227
6.4.3 Special Situations 238
6.5 Problems 239
Chapter 7.Deploying Software Reliability Engineering 241
7.1 Persuasion 241
7.2 Executing the Deployment 243
7.3 Using a Consultant 247
7.3.1 Consultee 247
7.3.2 Consultant 248
7.4 Frequently Asked Questions 249
Chapter 8.Software Reliability Models 259
8.1 General Characteristics 261
8.1.1 Random Process 263
8.1.2 With and Without Fault Removal 265
8.1.3 Particularization 265
8.2 Classification 266
8.3 Comparison 267
8.3.1 Time Domains 269
8.3.2 Model Groups 279
8.4 Recommended Models 290
8.4.1 Description 292
8.4.2 Interpretation of Parameters of Logarithmic Poisson Execution Time Model 311
8.4.3 Derivation of Models 315
8.4.4 Parameter Prediction 320
8.4.5 Parameter Estimation 334
8.5 Frequently Asked Questions 338
Appendix A.Software Reliability Engineering Process Step by Step 341
Appendix B.Template for Workshops 343
B.1 Defining System Workshop(Chap.1) 344
B.2 Defining Necessary Reliability Workshop(Chap.2) 344
B.3 Developing Operational Profiles Workshop(Chap.3) 345
B.4 Preparing for Test Workshop(Chap.4) 346
B.5 Executing Test Workshop(Chap.5} 346
B.6 Applying Failure Data to Guide Decisions Workshop(Chap.6) 346
Appendix C.Glossary 347
Appendix D.Summary of Useful Formulas 355
Appendix E.Software Reliability Engineering and Testing Functions Aided by Software Tools 357
Appendix F.Using CASRE 359
F.1 Installation 360
F.2 Creating the Failure Data File for CASRE 361
F.3 Executing CASRE 362
F.4 Interpreting CASRE Results 365
F.5 Problems 366
Appendix G.Problem Solutions 367
Appendix H.References to Users of Software Reliability Engineering 371
Bibliography 375
Index 381