Table of Contents
Preface xv
About the Author xvii
1 Introduction 1
1.1 Background 1
1.2 Facts, Figures, and Examples 1
1.3 Terms and Definitions 3
1.4 Sources To Obtain Information Related to Computer System Reliability, Safety, and Usability 4
1.4.1 Journals and Magazines 5
1.4.2 Conference Proceedings 5
1.4.3 Standards and Handbooks 5
1.4.4 Data Sources 6
1.4.5 Books 7
1.5 Scope of the Book 8
References 9
2 Basic Mathematical Concepts 13
2.1 Introduction 13
2.2 Arithmetic Mean and Mean Deviation 13
2.2.1 Arithmetic Mean 14
2.2.2 Mean Deviation 14
2.3 Boolean Algebra Laws 15
2.4 Probability Definition and Properties 16
2.5 Probability-Related Definitions 17
2.5.1 Cumulative Distribution Function 17
2.5.2 Probability Density Function 18
2.5.3 Expected Value 19
2.6 Probability Distributions 19
2.6.1 Exponential Distribution 20
2.6.2 Rayleigh Distribution 21
2.6.3 Weibull Distribution 21
2.6.4 Bathtub Hazard Rate Curve Distribution 22
2.7 Laplace Transform Definition, Common Laplace Transforms, and Final-Value Theorem's Laplace Transform 22
2.7.1 Laplace Transform: Final-Value Theorem 23
2.8 Laplace Transforms' Application in Solving First-Order Differential Equations 24
References 26
3 Reliability, Safety, and Usability Basics 29
3.1 Introduction 29
3.2 Bathtub Hazard Rate Curve 29
3.3 General Reliability-Related Formulas 31
3.3.1 Failure (or Probability) Density Function 31
3.3.2 Hazard Rate (or Time-Dependent Failure Rate) Function 31
3.3.3 General Reliability Function 32
3.3.4 Mean Time to Failure 33
3.4 Reliability Configurations 34
3.4.1 Series Network 34
3.4.2 Parallel Network 37
3.4.3 k-out-of-m Network 39
3.4.4 Standby Redundancy 41
3.4.5 Bridge Network 42
3.5 Reliability Evaluation Methods 44
3.5.1 Failure Modes and Effect Analysis (FMEA) 44
3.5.2 Fault Tree Analysis (FTA) 45
3.5.2.1 Common Fault Tree Symbols 45
3.5.2.2 Steps Involved in Developing a Fault Tree 46
3.5.2.3 Probability Evaluation of Fault Trees 46
3.5.3 Markov Method 48
3.6 Need for Safety and the Role of Engineers in Designing for Safety 51
3.7 Classifications of Product Hazards 52
3.8 Human Factors Basics for Engineering Usability 53
3.8.1 Comparisons of Humans' and Machines' Capabilities/Limitations 54
3.8.2 Typical Human Behaviors and Their Corresponding Design Considerations 55
3.8.3 Human Sensory Capacities 55
3.8.3.1 Touch 55
3.8.3.2 Sight 56
3.8.3.3 Vibration 57
3.8.3.4 Noise 58
References 59
4 Computer System Reliability Basics 61
4.1 Introduction 61
4.2 Hardware Reliability Versus Software Reliability 61
4.3 Major Sources of Computer Failures and Issues in Computer System Reliability 62
4.4 Fault Classifications and Computer Reliability Measures 64
4.5 Fault Masking 65
4.5.1 Triple Modular Redundancy (TMR) 65
4.5.1.1 TMR System Maximum Reliability with Perfect Voter 67
4.5.1.2 TMR System Time-Dependent Reliability and Mean Time to Failure 68
4.5.1.3 Reliability Analysis of TMR System with Perfect Voter and Repair 70
4.5.2 N-Modular Redundancy (NMR) 72
4.6 Reliability Analysis of Redundant Computer Systems with Common-Cause Failures 73
4.6.1 Model I 74
4.6.2 Model II 78
References 81
5 Software Reliability Assessment and Improvement Methods 83
5.1 Introduction 83
5.2 Software Reliability Assessment Methods 83
5.2.1 Software Metrics 84
5.2.1.1 Metric I: Code and Unit Test Phase Measure 84
5.2.1.2 Metric II: Design Phase Measure 84
5.2.2 Analytical Methods 85
5.2.3 Software Reliability Models 85
5.2.3.1 Air Force Model 86
5.2.3.2 Musa Model 88
5.2.3.3 Mills Model 89
5.2.3.4 Power Model 91
5.2.3.5 Shooman Model 92
5.3 Software Reliability Improvement Methods 93
5.3.1 Fault-Tolerant Software Design Methods 94
5.3.2 Reliable Software Design Methods 95
5.3.3 Testing 96
5.3.4 Formal Methods 97
References 98
6 Software Quality 101
6.1 Introduction 101
6.2 Software Quality Factors and Their Classifications 101
6.2.1 Product Revision Factors 102
6.2.2 Product Operation Factors 102
6.2.3 Product Transition Factors 103
6.3 Quality Methods for Use during Software Development 103
6.3.1 Pareto Diagram 103
6.3.2 Checklists 104
6.3.3 Run Charts 105
6.4 Quality Measures during the Software Development Life Cycle (SDLC) 105
6.5 Software Quality-Related Metrics 106
6.5.1 Metric I 107
6.5.2 Metric II 107
6.5.3 Metric III 108
6.5.4 Metric IV 108
6.5.5 Metric V 108
6.5.6 Metric VI 109
6.5.7 Metric VII 109
6.5.8 Metric VIII 109
6.5.9 Metric IX 109
6.5.10 Metrix X 109
6.6 Software Quality Assurance Manager's Responsibilities and Elements of a Successful Software Quality Assurance Program 110
6.7 Software Quality Assurance Standards and Advantages 111
References 113
7 Human Error and Software Bugs in Computer Systems 115
7.1 Introduction 115
7.2 Facts, Figures, and Examples 115
7.3 Factors Affecting the Occurrence of Human Error in Computer Systems 116
7.4 Computer Failure Categories and Hardware and Software Error Sources 118
7.5 Common Software Errors in Programming 119
7.6 Factors Causing Human Errors during Software Development and Maintenance 119
7.6.1 Classification I Factors 119
7.6.2 Classification II Factors 120
7.7 Methods To Prevent Programmers from Inadvertently Introducing Bugs during the Software Writing Process 121
7.8 Software Error-Related Metrics 122
7.8.1 Metric I: Defect Density 122
7.8.2 Metric II. Cumulative Failure Profile 122
7.8.3 Metric III: Fault Density 123
7.8.4 Metric IV: Defect Indices 123
References 125
8 Software Safety and Internet Reliability 127
8.1 Introduction 127
8.2 Software Safety Classifications and Potential Hazards 127
8.3 Software Risk Classifications 128
8.4 Basic Software System Safety-Related Tasks 129
8.5 Software Safety Assurance Program and Software Quality Assurance Organization's Role in Regard to Software Safety 130
8.6 Software Hazard Analysis Methods 131
8.6.1 Code Walk-Through 132
8.6.2 Software Fault Tree Analysis (SFTA) 132
8.6.3 Software Sneak Circuit Analysis 133
8.6.4 Proof of Correctness 134
8.6.5 Failure Modes and Effect Analysis (FMEA) 134
8.7 Software Standards and Useful Software Safety Design-Related Guidelines 134
8.8 Internet Facts, Figures, and Failure Examples; Benefits and Impediments of Internet Electronic Commerce; and Internet Reliability-Related Observations 135
8.9 Classifications of Internet Outages 137
8.10 An Approach for Automating Fault Detection in Internet Services and Models for Performing Internet Reliability and Availability Analysis 138
8.10.1 Model I 139
8.10.2 Model II 140
References 143
9 Software Usability 147
9.1 Introduction 147
9.2 Need for Considering Usability during the Software Development Phase and Basic Principles of the Human-Computer Interface 147
9.3 Software Usability Engineering Process 148
9.4 Steps for Improving Software Product Usability 150
9.5 Software Usability Inspection Methods and Considerations for Their Selection 151
9.6 Software Usability Testing Methods and Important Factors in Regard to Such Methods 153
9.7 Guidelines for Conducting Software Usability Testing 155
References 156
10 Web Usability 159
10.1 Introduction 159
10.2 Web Usability Facts and Figures 160
10.3 Common Web Design Errors 160
10.4 Web Page Design 161
10.4.1 Image Usage 162
10.4.2 Page Size 163
10.4.3 Textual Element Usage 163
10.4.4 Help for Users 164
10.4.5 Font Usage 164
10.5 Website Design 165
10.5.1 Shared Elements of Site Pages 165
10.5.2 Site Testing and Maintenance 166
10.5.3 Site Organization 166
10.6 Navigation Aids 167
10.6.1 Menus and Menu Bar Usage 167
10.6.2 Navigation Bar Usage 168
10.6.3 Link Usage 169
10.7 Tools for Evaluating Web Usability 170
10.7.1 NetRaker 170
10.7.2 Web SAT 170
10.7.3 Lift 171
10.7.4 Max 171
10.8 Questions to Evaluate Effectiveness of Website Message Communication 172
10.8.1 Text 172
10.8.2 Concept 173
10.8.3 Content 173
10.8.4 Mechanics 173
10.8.5 Navigation 174
10.8.6 Design 174
References 175
11 Computer System Life-Cycle Costing 177
11.1 Introduction 177
11.2 Models for Estimating Computer System Life-Cycle Cost 177
11.2.1 Model I 177
11.2.2 Model II 180
11.3 Models for Estimating Computer System Servicing-Labor Cost and Maintenance Cost 181
11.3.1 Model I: Computer System Servicing-Labor Cost 181
11.3.2 Model II: Computer System Maintenance Cost 182
11.4 Software Costing and Associated Problems and Steps 183
11.5 Model for Estimating Software Life-Cycle Cost and Influencing Factors 185
11.6 Models for Estimating Software Costs 187
11.6.1 Model I 187
11.6.2 Model II 188
11.6.3 Model III 188
11.6.4 Model IV 189
11.6.5 Model V 189
11.7 Models for Estimating Software Costs 190
11.7.1 Multiplicative Models 191
11.7.2 Analytic Models 191
11.7.3 Linear Models 191
11.7.4 Tabular Models 192
11.7.5 Composite Models 192
References 193
Appendix: Bibliography of Literature on Computer System Reliability, Safety, and Usability 195
Index 227