Send
Close Add comments:
(status displays here)
Got it! This site uses cookies. You consent to this by clicking on "Got it!" or by continuing to use this website.nbsp; Note: This appears on each machine/browser from which this site is accessed.
Bugs and software systems
1. Bugs and software systems
2. Hopper: First computer bug
In the early days of computers, the first documented computer bug was a "
moth" that had short-circuited a switch in a computer circuit.
The first bug was documented by
Grace Hopper (first computer bug) , though the term bug goes back further than computers.
Grace Hopper is known for the saying that it is easier to ask forgiveness than to ask for permission.
3. Hopper: Permission
4. Hopper: Permission
It is often easier to apologize afterwards than it is to get permission beforehand.
When you have a good idea and you've tried it and you know it's going to work, go ahead and do it - because it's much easier to apologize afterwards than it is to get permission. Grace Hopper (asking permission)
5. Dijkstra: Program testing
Program testing can be used to show the presence of bugs, but never to show their absence! 1972.
Edsger Dijkstra (program testing) Dahl, O., Dijkstra, E., & Hoare, C. (1972).
Structured programming. New York: Academic Press., p. 6. .
Dijkstra has said that if debugging is the process of removing bugs from a program, then programming must be the process of putting them in.
6. Dijkstra: Computer bugs
As I have now said many times and written in many places: program testing can be quite effective for showing the presence of bugs, but is hopelessly inadequate for showing their absence. 1976.
Edsger Dijkstra (program bugs) Dijkstra, E. (1976).
A discipline of programming. Englewood Cliffs, NJ: Prentice-Hall., p. 20. .
7. Bugs and software systems
Systems inherently have reliability problems.
8. Reliability
Reliability is a measure of how something will continue to work into the future (e.g., immunity to physical damage).
Reliability is a measure of how well the product performs without failing.
9. Software bugs
A computer software bug is an error in the software system.
Why are there bugs in software systems?
10. Large software systems
A large computer hardware/software system is designed to consist of 500 independent components. Assume that the probability that each component works correctly is 0.999.
What is the probability that the entire system works correctly? State your assumptions and show your work.
In one complete sentence, explain why large hardware/software systems contain bugs? Use the above results.
11. System software bugs
If the probability that a component is correct is
99.9%, what is the probability that a system of
500 independent components working together is correct?
=POWER(0.999, 500)
is about
0.6, or
60.0%.
Using this model, why are there bugs in software?
Here is why large software systems tend to have bugs.
Most software consists of a large number of components.
Even if the probability that each component is correct is very high, the probability that the entire system is correct is very low.
12. Programming languages
Programming languages:
Support abstraction and programming with fewer errors.
Attempt to move run-time errors to compile-time.
Attempt to move compile-time errors to design-time.
Attempt to minimize the overhead of checking software.
13. Checking software
Compile-time checks.
Run-time checks.
Design-time checks.
C#: Microsoft rewrote their C# compiler from the ground up to support more edit-time and design-time feedback to programmers.
14. Hierarchy
static analysis
abstract interpretation (simulating)
interpretation (to run immediately)
compilation (to run later)
15. End of page
16. Multiple choice questions for this page
2 questions omitted (login required)