Abstract any failure for a specific period of

Abstract

Software Reliability is defined as the
probability with which the software will operate without any failure for a
specific period of time in a specific environment. It is one the essential
software quality features. Software reliability estimated in early phases of
software development life cycle saves a lot of time and money as it prevents
spending huge amount of money on fixation of defects in the software after it
has been deployed. Software reliability estimation has thus become an important
research area as every organization aims to produce defect free software. There are many software reliability growth
models that are used to assess the reliability of the software. These models help in developing
robust and fault tolerant systems. This paper presents a review of optimization
techniques used by many researchers on the software reliability growth models
in order to estimate the software reliability effectively.

Keywords: Reliability,
software reliability growth models, parameter estimation, optimization.

1.  Introduction

With increasing complexity, changing
requirements and distributive nature of the software system it has become
difficult to develop reliable software where reliability is the probability of
software failure occurrence. The failure of the software is attributed to errors, faulty
functionality, ambiguities, improper requirement analysis, inefficient
code, inadequate testing, timing, sequencing,
data, and exception handling. Software reliability is an important
feature of software quality along with other features like: usability,
performance, functionality, maintainability, instability, serviceability,
documentation, etc 1.

Software failure can be classified into various
categories like 2:

a)     
Transient failure which
occurs for specific inputs,

b)     
Permanent failures which
occur for all inputs,

c)      
Recoverable failure where
the system can recover with or without any operator intervention,

d)     
Unrecoverable failure where
the system needs to be restarted,

e)     
Cosmetic Failures which
cause minor irritations.

Since there is no software system that is failure-free, every
software development contract includes the specification of reliability
requirements. Software reliability models are statistical models which are used
to make predictions about a software system’s failure rate on the basis of the
failure history of the system. These models make assumptions related to fault
discovery and removal process thereby determining the form of the model and the
meaning of the model’s parameters. Once the parameter is known and the current numbers
of defects are discovered, the remaining defects are estimated (Fig.1). These
residual defects help to decide whether the code is ready to ship or not and gives
an estimate of the number of failures that the customers will encounter while
using the software which further helps in estimating the appropriate levels of
support and the cost of support that will be required for defect correction once
the software has been delivered.

                                                                                                           Software reliability modeling techniques can be broadly
classified into two subcategories 3:

a)      Prediction models: These models use historical data to predict
reliability. This is usually done before development or testing phase. These
models support planning and sensitivity analysis. Example: shortcut model, full
scale model, Rayleigh model, Neufelder assessment model, etc 4.

b)      Estimation model:
These models use data from current software development effort. Reliability
is estimated during system level testing or operation phase. They help in
forecasting the failure rate or Mean time Between Failure (MTBF). Example:
Goel-Okumoto model, Weibull model, s- shaped model, etc.It is essential to accurately determine
the parameters of software reliability. The
more accurate the measurement of the parameters, the more accurate the Software
Reliability Growth Model (SRGM) will be. So there is a requirement of a process
which helps in optimally estimating the parameters of software reliability. Optimization is a technique to achieve highest
performance by maximizing the desired features and minimizing the undesired
ones. This paper reviews various optimization techniques that have been
used by many researchers to optimize the parameters of estimation in software
reliability growth models to estimate accurately the reliability of the
software.

 

2.
Software Reliability Growth Models

A reliability growth model is used in
testing phase to determine how the system reliability changes over time. Software Reliability Growth Model (SRGM) are statistical
models used to detect defects using mathematical functions which help in
predicting failure rate or residual defects 5. Reliability growth
models are divided into two types: concave and s-shaped.