What Happens After A Failure? Last week , I distinguished
between two kinds of software failure. In one kind, the program
fails to produce a correct result; in the other, it produces an
incorrect result. The difference between these two cases is
whether the software's user can tell that the program has
failed. For now, I want to concentrate on the case in which the
program's user knows that it has not produced a correct result.
Imagine that you have asked a program to do something for you,
and it has reported that it is unable to do so. What do you do
next? The answer depends on the context, including what you can
learn about what the program did instead of what you asked it to
do. At one extreme, the program might have failed in a way that
makes further progress impossible, such as by destroying
critical data. At the other extreme, the failure might be in a
network that does not require anything beyond a "best effort" to
handle incoming data — in which case you can simply disregard
the failure and wait for w