Click here to Skip to main content
15,885,365 members
Articles / SoftwareSerial

Reliability Engineering in Software developement - Part 1 : Introduction to Reliability

Rate me:
Please Sign up or sign in to vote.
4.73/5 (14 votes)
2 Feb 2015CPOL6 min read 14.8K   3   10
Software reliability and its importance in present world

Note to readers

This article is a part of series of article which help us to understand the Reliability Engineering (RE) in the world of software development. In other words, these series of article will focus on Software reliability and give a basic understanding on how to measure and achieve this in the Software Development cycle.

I have decided to organize the series into 4 parts with the following topics

  • Part 1 - Introduction to Reliability
  • Part 2 - Challenges in Software Reliability
  • Part 3 - Software Reliability practices and theory
  • Part 4 - Conclusion and FAQ

This first article will give a brief introduction on the concept of Reliability.  Wherever needed I will stress on the software part for explanation but some of the definition are better understood when we are talking with respect to hardware.

Why this article?

Reliability is a very mature concept in the field of Engineering. But RE in general was introduced solely for hardware parts which involves wearing out or aging of components or material over period of time. Laws of physics of environmental stress on the materials and chemical composition over specific duration of time play an important part role in reliability.

Software reliability is still a very nascent concept compared to traditional hardware reliability.  This series of article will help the programmers ( I prefer the word developers) to understand the idea and help them to branch out more in depth if this tickles their brain cells.

Reliability - What’s the big fuss?

In English language, Reliability is a very common term which is used by various people in different context. This word has in general always been used in a subjective way.

Scenario 1:

Quote:

Manager  :  Guys, I am looking for a reliable tool to do create a Gantt chart on the fly.
Sales A     : Try “ABC software”, I heard it’s very reliable.
Sales B     : I am not sure. I think it’s not stable on Windows 8.
Sales A     : But it’s so light weight that it can be run from USB disk.
Sales B     : It crashes after running for 45 minutes.
    ……
    ……
    ……
Manager   : Guys, This is going nowhere.

This is the situation where the term Reliability has been used to describe a item on the subjective level. This leads to an ambiguous assumption and no clarity comes out of it. Also this does not help in comparing two products if there is no proper defnition. Each person has its own idea about the term Reliability. Therefore for a precisce discussion, we have to steer towards the objective defniton for the term Reliabilty.

Scenario 2:

Quote:

Manager     :  Guys, I am looking for a reliable tool to do create a Gantt chart on the fly.
Engineer A  : I cannot answer about reliability unless I know the specific functionality you need in what environment and the period of time of operation.

In this scenario, engineer is trying to ascertain the various parameters (underlined terms) to give a educated answer. He is more focussed on Environment, time and the specific functionality

Oxford dictionary describes Reliability as

Consistently good in quality or performance; able to be trusted

 Whereas IEEE defines Reliability as

The probability that an item will perform a required function without failure under stated conditions for a specified period of time

A definition of reliability has four key components:

  • Probability.
  • Required function.
  • Stated conditions
  • Specified period of time.

Any scientific discussion on reliability is incomplete without the above four components.  Reliability is always a function over time and it is represented as R(t). Therefore this can be defined as

Reliability
R(t) = probability that the system will operate correctly in a specified operating environment up until time t.

A complete system consist of many parts which can be in serial, parallel or combination of both. For our discussion we will be restricting our self to only serial system. For the serial system , the reliability of the system is defined as

                                RSystem(t) = [R1(t)] × [R2(t)] × . . . × [Rn(t)].

The reliability of the system will be less than the reliability of any subsystem:

                                              RSystem(t) < Ri(t).

Image 1

Assume a system consist of 3 parts in series.The reliability for each subsystem for a time of t is:

R1(t) = 0.50
R2(t) = 0.60
R3(t) = 0.70

The system reliability for mission time t:


R(t) = (0.50)(0.60)(0.70) = 0.21

Based on this information let me dive further into Software Reliability. We are assuming the ideal situation where

Importance of Software Reliability

As mentioned before the concept of reliability was used only for system consisting of hardware. To determine the reliability of a steel pipe used in a construction is straight forward if we know the environmental stress it will incur. Another example we can look is the reliability of a car.  Around 50 years back when the car consist of only mechanical parts, we could calculate the reliability of the whole car based on the individual mechanical parts used in the design of the car. But in this modern world, we have cars in which software plays a very integral part. The reliability of the car doesn’t make sense if we exclude the software part. Nowadays any system used in commercial activity consists of Hardware and software.

Image 2

Without the reliability number of the software, overall system reliability cannot be determined

So it is imperative for any company to determine how reliable their software is.  The reliability calculation for a a given software system is little bit tricky because software does not follow the traditional physical properties. . We cannot apply the normal stress incurred on the mechanical parts of the system to the software. And here lies the problem.

 At present software developers define the quality of their code based on the number bugs found during testing /after the release of the product or similar metrics . This is not the exact method to determine the reliability for the software. Also it doesn’t give any path forward to increase the reliability of the software. Therefore we need to go little further up in the software development cycle.  This will be discussed in the forthcoming articles
 

Next

Having given a brief introduction of the concept of reliability, In the forthcoming article I will elaborate in details about the challenges faced in the Software Reliability.  I will also touch base on the difference between software quality and reliability

References

  • The Certified Reliability Engineer Handbook -Donald W. Benbow and Hugh W. Broome ISBN: 978-0-87389-721-1
  • Institute of Electrical and Electronics Engineers (1990) IEEE Standard Computer Dictionary: A Compilation of IEEE Standard Computer Glossaries. New York, NY ISBN 1-55937-079-3

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Engineer
Germany Germany
I am a Certified Reliabilty Engineer

I started my career with Delphi but switched to VC++ and was involved in desktop application for 10 years
Since past few year I have been working on Labview programming and hardware stuff.

I attempt to read lots of books. Yeah attempt but never completed it.
I love to cook and travel.
But now, I love to play with my 3daughter and never know how time disappears.

Comments and Discussions

 
QuestionFrankly, the article is about nothing Pin
Sergey Alexandrovich Kryukov25-Mar-15 4:37
mvaSergey Alexandrovich Kryukov25-Mar-15 4:37 
AnswerRe: Frankly, the article is about nothing Pin
super25-Mar-15 4:45
professionalsuper25-Mar-15 4:45 
GeneralRe: Frankly, the article is about nothing Pin
Sergey Alexandrovich Kryukov25-Mar-15 5:26
mvaSergey Alexandrovich Kryukov25-Mar-15 5:26 
GeneralRe: Frankly, the article is about nothing Pin
super25-Mar-15 5:31
professionalsuper25-Mar-15 5:31 
GeneralRe: Frankly, the article is about nothing Pin
Sergey Alexandrovich Kryukov25-Mar-15 5:38
mvaSergey Alexandrovich Kryukov25-Mar-15 5:38 
GeneralMy vote of 3 Pin
Member 22560214-Feb-15 2:50
Member 22560214-Feb-15 2:50 
GeneralRe: My vote of 3 Pin
super4-Feb-15 3:03
professionalsuper4-Feb-15 3:03 
GeneralRe: My vote of 3 Pin
Member 22560218-Feb-15 23:28
Member 22560218-Feb-15 23:28 
GeneralRe: My vote of 3 Pin
super10-Feb-15 3:13
professionalsuper10-Feb-15 3:13 
GeneralWhat is OK? Pin
Sergey Alexandrovich Kryukov25-Mar-15 4:39
mvaSergey Alexandrovich Kryukov25-Mar-15 4:39 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.