Software Reliability*

Reliability is the probability of failure-free operation of a system over a specified time within a specified environment for a specified purpose.

What is Software Reliability?
• An Informal definition: Reliability is a measure of how closely a system matches
its stated specification.
• Another Informal Definition: Reliability is a measure of how well the users perceive
a system provides the required services.

Software Reliability
• It is difficult to define the term objectively.
• Difficult to measure user expectations,
• Difficult to measure environmental factors.
• It’s not enough to consider simple failure rate:
– Not all failures are created equal; some have much more serious consequences.
– Might be able to recover from some failures reasonably

Failures and Faults
• A failure corresponds to unexpected run time behavior observed by a user of the
software.
• A fault is a static software characteristic which causes a failure to occur.
• Not every fault causes a failure:
– Code that is “mostly” correct.
– Dead or infrequently-used code.
– Faults that depend on a set of circumstances to occur.
• If a tree falls …
– If a user doesn’t notice wrong behavior, is it a fault?
– If a user expects “wrong” behavior, is it a fault?