#4 – QUANTIFYING SOFTWARE FAILURE AND DISASTERS – (C) CAPERS JONES – SOFTWARE@RIS

Let’s visit twenty one interesting historical software failures.  The idea is to analyze each failure and consider what lessons it taught, and which forms of defect prevention or defect removal might have prevented the problems.  Because the failures in this section are famous and information has been published about them, they are a useful set of historical data points for retrospective quality analysis.

Among the many forms of defect prevention and removal methods are the following in alphabetical order:

  1. Acceptance testing
  2. Automated code static analysis for common languages
  3. Automated text static analysis for requirements and design
  4. Beta testing with clients
  5. Code inspections
  6. Component testing
  7. Design inspections
  8. Debugging tools
  9. Function testing
  10. Mathematical test case design based on design of experiments
  11. Pair programming
  12. Peer reviews
  13. Performance testing
  14. Proofs of correctness
  15. Quality function deployment (QFD)
  16. Regression testing
  17. Requirements inspections
  18. Requirements modeling
  19. Risk-based testing
  20. Security testing
  21. Subroutine testing
  22. Supply-chain testing
  23. System testing
  24. Unit testing
  25. Usability testing

Continue reading