Thursday, March 11, 2010

Categories of Software Errors

What is a software error?

One common definition of a software error is a mismatch between the program and its specification.


Definition #1:
“A mismatch between the program and its specification is an error in the program if and only if the specification exists and is correct.”
Definition #2:
“A software error is present for when the program does not do what its end user reasonability expects to do.” (Myers, 1976)

Categories of Software Errors

  1. User interface errors, such as output errors, incorrect user messages.
  2. Function errors
  3. Defect hardware
  4. Incorrect program version
  5. Testing errors
  6. Requirements errors
  7. Design errors
  8. Documentation errors
  9. Architecture errors
  10. Module interface errors
  11. Performance errors
  12. Error handling
  13. Boundary-related errors
  14. Logic errors such as
    • calculation errors
    • State-based behavior errors
    • Communication errors
    • Program structure errors, such as control-flow errors

Most programmers are rather cavalier about controlling the quality of the software they write. They bang out some code, run it through some fairly obvious ad hoc tests, and if it seems okay, they’re done. While this approach may work all right for small, personal programs, it doesn’t cut the mustard for professional software development. Modern software engineering practices include considerable effort directed toward software quality assurance and testing. The idea, of course, is to produce completed software systems that have a high probability of satisfying the customer’s needs.

There are two ways to deliver software free of errors:

  • Preventing the introduction of errors in the first place.

  • Identifying the bugs lurking in program code, seek them out, and destroy them.

Obviously, the first method is superior. A big part of software quality comes from doing a good job of defining the requirements for the system you’re building and designing a software solution that will satisfy those requirements. Testing concentrates on detecting those errors that creep in despite your best efforts to keep them out.

No comments:

Post a Comment