Page 264 - DCAP305_PRINCIPLES_OF_SOFTWARE_ENGINEERING
P. 264
Principles of Software Engineering
Notes 13.1.3 Errors
One common definition of a software error is a mismatch between the program and its
specification. A mismatch between the program and its specification is an error in the program
if and only if the specification exists and is correct. A software error is present for when the
program does not do what its end user reasonability expects to do.
Categories of Software Errors
• User interface errors, such as output errors, incorrect user messages
• Function errors
• Defect hardware
• Incorrect program version
• Testing errors
• Requirements errors
• Design errors
• Documentation errors
• Architecture errors
• Module interface errors
• Performance errors
• Error handling
• Boundary related errors
• Logic errors
• calculation errors
• State based behaviour errors
• Communication errors
• Program structure errors, such as control flow errors
Most programmers are rather cavalier about scheming 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 are done. While this approach may work all right for small, personal programs, it does not
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
our 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
we are building and designing a software solution that will satisfy those requirements. Testing
concentrates on detecting those errors that creep in despite our best efforts to keep them out.
13.1.4 Fault
A software fault is an erroneous portion of a software system which may cause failures to occur
if it is run in a particular state, or with particular inputs. There are many universal statements
that a tester will come across in the course of their career, some true Testing can only prove
the presence of faults and not their absence, and some false “Developers must not test their
own code”, Such statements may well be paraphrased quotes, the original source may not be
known or presented, and the quote may be taken out of its original context. But they will be
258 LOVELY PROFESSIONAL UNIVERSITY