Friday, August 12, 2005

Software Errors

Definition of Software Error - 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. The first is to prevent the introduction of errors in the first place. And the second is to identify the bugs lurking in your 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.


NarayanaSTP said...

The given information is viable and my suggestion is if you can explain each error with an example then it would be more worthwhile.

NarayanaSTP said...

please do that i have requested.