- What is a software error and what is software realibility ?
- 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 flw : 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...
- 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.
- [...] 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.
- Software does ot fail; it does not wear out.
- Software errors, [...] are highly input dependent.
- Software failures are systematic, not random, events.
- The single major cause of software errors is mistakes in translating information.
- 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 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?
- 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-th-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 piede of software increases, tje 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 occuing 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 teh error not detected in one of the designe or code reviews or in an earle 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 ?
(John Wiley & Sons 1976)