Is there a difference between stability and reliability (at least in software engineering context) or can they be used interchangeably? If not, what would be some examples of reliable but not necessarily stable systems, and vice versa?
3
Let’s say for instance we have an app, it works perfectly, aside from it crashing every 5 minutes, but it’s back up instantly without data loss.
That in my mind is reliable, but not stable.
I can rely on it not losing data and working correctly, despite it not being stable.
In fact, the internet is basically that. It’s far from stable—connections drop and reappear, packets collide and are lost, and all kinds of other unstable things happen. However, it’s pretty amazing how reliable it is given all the instability inherent in it.
11
These definitions come from the ISO 9126 Standard, which divides in characteristics and sub characteristics : this table , this pdf or wikipedia or article
Stability is : Characterizes the sensitivity to change of a given system that is the negative impact that may be caused by system changes.
Reliability is a main characteristic that contains:
- maturity : This sub characteristic concerns frequency of failure of the software.
- fault tolerance : The ability of software to withstand (and recover) from component, or environmental, failure.
- recoverability : Ability to bring back a failed system to full operation, including data and network connections.
0
Goal: write a program to add two numbers
Reliable but unstable:
add(a,b):
if randomInt mod 5 == 0:
throw exception
else
print a+b
Stable but unreliable:
add(a,b):
if randomInt mod 5 == 0:
print a+a
else
print a+b
1
In the context of evaluating libraries, the terms mean completely different things.
A reliable library is one that does its job without intermittent failures.
A stable library is one that doesn’t change much.
1
Stability and Reliability are different things in software development, however they both used as the sister-terms 🙂
I agree with some mentioned previous comments and would like to add my 2 cents.
Reliability is the extent to which an experiment, test, or any measuring procedure yields the same result on repeated trials.
Stability reliability (sometimes called test, re-test reliability) is the agreement of measuring instruments over time. To determine stability, a measure or test is repeated on the same subjects at a future date. Results are compared and correlated with the initial test to give a measure of stability.
More references on this topic are provided :
- Reliability Best Practices
- Security, Reliability, Scalability, and Availabili
- Improving System Stability & Reliability
To my mind, “reliability” means you have a grasp on the bound of the system. You can, with confidence, say that “we provide response time X at the Xth percentile” (the higher the X, the better, obviously).
Stability, on the other hand, is merely an availability measure. “If you try to connect tio our service, it will be there at least X% of the times”.
Reliable but not Stable:
add(a,b):
if a == nil || b == nil:
throw exception
else
return (a+b)
Stable but not Reliable:
add(a,b):
if a == nil || b == nil:
return 0
else
return (a+b)