- What is a software error and what is software realibility ?
(p.4)
- What is an error ?
-One common definition is that a software error occurs when the software does
not perform according to its specifications. This definitions has one
fondamental flow : it tacitly assumes that the specifications are correct. This
is rarely, if ever, valid assumption; one of the major sources of
errors is the writing of specifications...
(p.4)
- A software error is present when the software does not what the users
reasonably expect it to do. A software failure is an occurence of a software
error.
(p.6)
- [...] Software is inherently much more complicated than hardware. The input
domain of an operating system is magnitudes larger than the input domain of an
central processing unit.
(p.8)
- Software does or fail; it does not wear out.
(p.10)
- Software errors, [...] are highly input dependent.
(p.10)
- Software failures are systematic, not random, events.
(p.11)
- The single major cause of software errors is mistakes in translating
information.
(p.16)
- The worst mistake that can be made in problem solving is the failure to
thoroughly understand the problem. Understanding a problem involves
understanding its two components: the data and the unknown.
(p.41)
- P r o b l e m S o l v i n g
1. Understand the problem
Study the data.
Study the unknown.
Are the data sufficient for a solution?
Contradictory?
2. Devise a plan
What must you achieve?
What design methods will be used?
Have you seen the same problem before?
Do you know a related problem?
Can you use it result?
Can yo solve a more spezcialized or
analogous problem?
Can you solve part of the problem?
3. Carry out the plan
Follow the plan to solve the problem.
Check the correctness of each step.
4. Review the solution
Did you use all of the data?
Check the correctness of the solution.
Can you use the result of the method for
other problems?
(p.41)
- Testing axioms
- A good test case is a test case that has a high probability of detecting an
undiscovered error, not a test case that shows that the program works
correctly.
- One of the most difficult problems in testing is kwowing when to stop.
- It is impossible to test your own program.
- A necessary part of every test case is a description of the expected output
or result.
- Avoid nonreproducible or on-the-fly testing.
- Write test cases for invalid as well for valid input conditions.
- Thoroughly inspect the results of each test.
- As the number of detected errors in a piece of software increases, the
probability of the existence of more unidscoverd errors also increases.
- Assign your most creative programmers to testing.
- Ensure that testability is a key objective in your software design.
- The design of a system should be such taht each module is integrated into the
system only once.
- Never alter the program to make testing easier.
- Testing, as almost every other activity, must start with objectives.
(start page 189)
- Monitoring the debugging process
One of the best ways to improve software reliability in current of future
projects is the obvious but often overlooked process of learning from previous
mistakes. Each error should be carefully studied to determine why it occured
and what should have been done to prevent it from occuring or detect it
earlier.
1. Why did the error occur ?
2. how and when was the error found ? Since we have just made a significant
accomplishment, why not profit form the experience ?
3. Why was the error not detected in one of the design or code reviews or in
an early testing phase ?
4. What should have been done in the design and testing processes to prevent
this error from occuring or to detect it sooner ?
(p.257)
(John Wiley & Sons 1976)
|