Foreword to the Second Edition xiii Foreword to the First Edition xv Preface xvii Chapter 1: What Is Software Quality? 1.I Quality: Popular Views 1 1.2 Quality: Professional Views 2 1.2.1 The Role of the Customer 1.3 Software Quality 4 1.4 Total Quality Management 7 1.5 Summary 10 References 11 Chapter 2: Software Development Process Models 13 2.1 The Waterfall Development Model 14 2.2 The Prototyping Approach 19 2.3 The Spiral Model 21 2.4 The Iterative Development Process Model 24 2.5 The Object-Oriented Development Process 27 2.6 The Cleanroom Methodology 32 2.7 The Defect Prevention Process 35 2.8 Process Maturity Framework and Quality Standards 39 2.8.1 The SEI Process Capability Maturity Model 39 2.8.2 The SPRAssessment 44 2.8.3 The Malcolm Baldrige Assessment 45 2.8.4 ISO9000 47 2.9 Summary 51 References 52 Chapter 3: Fundamentals of Measurement Theory 55 3.1 Definition, Operational Definition, and Measurement 55 3.2 Level of Measurement 59 3.3 Some Basic Measures 62 3.4 Reliability and Validity 70 3.5 Measurement Errors 73 3.5.1 Assessing Reliability 75 3.5.2 Correction for Attenuation 76 3.6 Be Careful with Correlation 77 3.7 Criteria for Causality 80 3.8 Summary 82 References 83 Chapter 4: Software Quality Metrics Overview 85 4.1 Product Quality Metrics 86 4.1.1 The Defect Density Metric 87 4.1.2 Customer Problems Metric 96 4.1.3 Customer Satisfaction Metrics 98 4.2 In-Process Quality Metrics 100 4.2.1 Defect Density During Machine Testing 100 4.2.2 Defect Arrival Pattern During Machine Testing 101 4.2.3 Phase-Based Defect Removal Pattern 103 4.2.4 Defect Removal Effectiveness 103 4.3 Metrics for Software Maintenance 105 4.3.1 Fix Backlog and Backlog Management Index 106 4.3.2 Fix Response Time and Fix Responsiveness 107 4.3.3 Percent Delinquent Fixes 108 4.3.4 Fix Quality 109 4.4 Examples of Metrics Programs 110 4.4.1 Motorola 110 4.4.2 Hewlett-Packard 115 4.4.3 IBM Rochester 116 4.5 Collecting Software Engineering Data 117 4.6 Summary 123 References 125 Chapter 5: Applying the Seven Basic Quality Tools in Software Development 127 5.1 Ishikawa's Seven Basic Tools 128 5.2 Checklist 130 5.3 Pareto Diagram 133 5.4 Histogram 136 5.5 Run Charts 138 5.6 Scatter Diagram 140 5.7 Control Chart 143 5.8 Cause-and-Effect Diagram 152 5.9 Relations Diagram 154 5.10 Summary 156 References 158 Chapter 6: Defect Removal Effectiveness 159 6.1 Literature Review 160 6.2 A Closer Look at Defect Removal Effectiveness 164 6.3 Defect Removal Effectiveness and Quality Planning 172 6.3.1 Phase-Based Defect Removal Model 172 6.3.2 Some Characteristics of a Special Case Two-Phase Model 174 6.4 Cost Effectiveness of Phase Defect Removal 177 6.5 Defect Removal Effectiveness and Process Maturity Level 181 6.6 Summary 183 References 184 Chapter 7: The Rayleigh Model 187 7.1 Reliability Models 187 7.2 The Rayleigh Model 189 7.3 Basic Assumptions 192 7.4 Implementation 195 7.5 Reliability and Predictive Validity 203 7.6 Summary 205 References 206 Chapter 8: Exponential Distribution and Reliability Growth Models 207 8.1 The Exponential Model 208 8.2 Reliability Growth Models 211 8.2.1 Jelinski-MorandaModel 212 8.2.2 LittlewoodModels 213 8.2.3 Goel-Okumoto Imperfect Debugging Model 213 8.2.4 Goel-Okumoto Nonhomogeneous Poisson Process Model 213 8.2.5 Musa-Okumoto Logarithmic Poisson Execution Time Model 215 8.2.6 The Delayed S and Inflection S Models 215 8.3 Model Assumptions 216 8.4 Criteria for Model Evaluation 218 8.5 Modeling Process 220 8.6 Test Compression Factor 224 8.7 Estimating the Distribution of Total Defects over Time 226 8.8 Summary 229 References 231 Chapter 9: Quality Management Models 235 9.1 The Rayleigh Model Framework 236 9.2 The Code Integration Pattern 242 9.3 The PTR Submodel 245 9.4 The PTR Arrival/Backlog Projection Model 249 9.5 Reliability Growth Models 254 9.6 Criteria for Model Evaluation 257 9.7 In-Process Metrics and Reports 258 9.8 Orthogonal Defect Classification 266 9.9 Summary 270 References 270 Chapter 10: In.Process Metrics for Software Testing 271 10.1 In-Process Metrics for Software Testing 272 10.1.1 Test Progress S Curve 272 10.1.2 Testing Defect Arrivals over Time 279 10.1.3 Testing Defect Backlog over Time 283 10.1.4 Product Size over Time 285 10.1.5 CPU Utilization during Test 286 10.1.6 System Crashes and Hangs 289 10.1.7 Mean Time to Unplanned IPL 291 10.1.8 Critical Problems: Show Stoppers 293 10.2 In-Process Metrics and Quality Management 294 10.2.1 Effort/Outcome Model 298 10.3 Possible Metrics for Acceptance Testing to Evaluate Vendor-Developed Software 302 10.4 How DoYou Know Your Product is Good Enough to Ship? 304 10.5 Summary 308 References 309 Chapter 11: Complexity Metrics and Models 311 11.1 Lines of Code 312 11.2 Halstead's Software Science 314 11.3 Cyclomatic Complexity 315 11.4 Syntactic Constructs 318 11.5 Structure Metrics 319 11.6 An Example of Module Design Metrics in Practice 322 11.7 Summary 328 References 329 Chapter 12: Metrics and Lessons Learned for Object-Oriented Projects 331 12.1 Object-Oriented Concepts and Constructs 331 12.2 Design and Complexity Metrics 334 12.2.1 Lorenz Metrics and Rules of Thumb 334 12.2.2 Some Metrics Examples 336 12.2.3 The CK OO Metrics Suite 337 12.2.4 Validation Studies and Further Examples 339 12.3 Productivity Metrics 343 12.4 Quality and Quality Management Metrics 347 12.5 Lessons Learned for OO Projects 351 12.6 Summary 356 References 357 Chapter 13: Availability Metrics 359 13.1 Definition and Measurements of System Availability 360 13.2 Reliability, Availability, and Defect Rate 362 13.3 Collecting Customer Outage Data for Quality Improvement 366 13.4 In-Process Metrics for Outage and Availability 372 13.5 Summary 394 References 394 Chapter 14: Measuring and Analyzing Customer Satisfaction 375 14.1 Customer Satisfaction Surveys 376 14.1.1 Methods of Survey Data Collection 376 14.1.2 Sampling Methods 377 14.1.3 Sample Size 379 14.2 Analyzing SatisfactionData 381 14.2.1 Specific Attributes and Overall Satisfaction 382 14.3 Satisfaction with Company 388 14.4 How Good Is Good Enough? 390 15.5 Summary 410 References 411 Chapter 16: Conducting Software Project Assessments 413 16.1 Audit and Assessment 414 16.2 Software Process Maturity Assessment and Software Project Assessment 415 16.3 Software Process Assessment Cycle 417 16.4 A Proposed Software Project Assessment Method 420 16.4.1 Preparation Phase 421 16.4.2 Facts Gathering Phase 1 422 16.4.3 Questionnaire Customization and Finalization 423 16.4.4 Facts Gathering Phase 2 425 16.4.5 Possible Improvement Opportunities and Recommendations 426 16.4.6 Team Discussions of Assessment Results and Recommendations 428 16.4.7 Assessment Report 429 16.4.8 Summary 433 16.5 Summary 434 References 435 Chapter 17: Dos and Don'ts of Software Process Improvement 437 17.1 Measuring Process Maturity 438 17.2 Measuring Process Capability 440 17.3 Staged versus Continuous--Debating Religion 440 17.4 Measuring Levels Is Not Enough 441 17.5 Establishing the Alignment Principle 443 17.6 Take Time Getting Faster 444 17.7 Keep It Simple--or Face Decomplexification 446 17.8 Measuring the Value of Process Improvement 447 17.9 Measuring Process Adoption 448 17.10 Measuring Process Compliance 449 17.11 Celebrate The Journey, Not Just the Destination 450 17.12 Summary 451 References 452 Chapter 18: Using Function Point Metrics to Measure Software Process Improvement 453 18.1 Software Process Improvement Sequences 455 18.1.1 Stage 0: Software Process Assessment and Baseline 455 18.1.2 Stage 1: Focus on Management Technologies 456 18.1.3 Stage 2: Focus on Software Processes and Methodologies 457 18.1.4 Stage 3: Focus on New Tools and Approaches 457 18.1.5 Stage 4: Focus on Infrastructure and Specialization 457 18.1.6 Stage 5: Focus on Reusability 458 18.1.7 Stage 6: Focus on Industry Leadership 458 18.2 Process Improvement Economies 459 18.3 Measuring Process Improvements at Activity Levels 462 18.4 Summary 466 References 467 Chapter 19: Concluding Remarks 469 19.1 Data Quality Control 470 19.2 Getting Started with a Software Metrics Program 472 19.3 Software Quality Engineering Modeling 475 19.4 Statistical Process Control in Software Development 481 19.5 Measurement and the Future 484 References 485 Appendix: A Project Assessment Questionnaire 487 Index 509