Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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?

share|improve this question
2  
Someone might refer to a system as stable but unreliable if it is always up and running but intermittently produces incorrect results or occasionally loses data. It's a matter of opinion what these words mean. –  joshp Jul 24 '12 at 19:28
    
In my mind they boil down to the same thing, consistency... –  Darknight Jul 25 '12 at 10:16
add comment

5 Answers

Let's say for instance we have an app, it works perfectly, aside from it crashing very 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.

share|improve this answer
1  
Ian Somerville defines reliability as "The probability of failure-free operation over a specified time, in a given environment, for a specific purpose." in the book Software Engineering. So your system crashing every 5 minutes is not so reliable (depends on your metrics though). –  m3th0dman Jul 24 '12 at 19:31
1  
@m3th0dman, depends how you define a failure then. No data loss, and 100% data accuracy would not be a failure in my books, even if the app kept crashing and restarting itself. I'd want to fix the issue, but it wouldn't be a high priority if it kept 'working' –  CaffGeek Jul 24 '12 at 19:37
    
If your system crashes, then there obviously was a failure somewhere and thus your operation was not failure-free (as suggested by the definition); thus your system is not so reliable. The discussion can be detailed into talking about availability, response and restart time. –  m3th0dman Jul 24 '12 at 19:45
    
I seriously don't think this example app is reliable. Reliability and stability are not necessarily two separate things. –  Zippoxer Jul 24 '12 at 20:24
    
@m3th0dman: Erlang programs are considered reliable, not because they are infallible, but because they consist of many concurrent processes (not OS processes) which can fail without compromising the program as a whole, which is designed to handle those failures. –  André Paramés Jul 25 '12 at 9:53
show 4 more comments

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.
share|improve this answer
    
+1 for the sources and for quoting the standard. –  this.lau_ Jul 25 '12 at 2:02
add comment

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
share|improve this answer
add comment

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 :

share|improve this answer
add comment

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".

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.