A
SEMINAR
ON
SOFTWARE RELIABILITY MODELING
By:
Poonam Panwar
Regd. No. 951011002
Under The Supervision of:
Dr. Arvind Kumar Lal
Associate Professor
School of Mathematics & Computer Applications
Thapar University, Patiala-147004 (Punjab)
TOPICS COVERED
 What is Software Reliability?
 Software Failure Mechanisms
 Hardware vs Software
 Measuring Software Reliability
 Software Reliability Models
 Statistical Testing
 Conclusion
2
WHAT IS SOFTWARE RELİABİLİTY?
 Precisely it may be defined as a product’s
trustworthiness or dependability.
 The probability of failure-free software operation for a
specified period of time in a specified environment.
 Probability of the product working “correctly” over a
given period of time in a specified environment.
3
AREAS OF S/W RELIABILITY
 Software Reliability Modeling
 Prediction Analysis
 Reliability Measurement
 Defect Classification
 Trend Analysis
 Field Data Analysis
 Software Metrics
 Software Testing and Reliability
 Fault-Tolerance
 Fault Trees
 Software Reliability Simulation
 Software Reliability Tools
4
SOFTWARE CHARACTERISTICS
 Failure cause: Software defects are mainly design defects.
 Wear-out: Software does not have wear-out phase.
 Repairable system concept: Periodic restarts can help fix
software problems.
 Time dependency and life cycle: Software reliability is not a
function of operational time.
 Environmental factors: Do not affect Software reliability, except
it might affect program inputs.
 Reliability prediction: Software reliability can not be predicted
from any physical basis, since it depends completely on human
factors in design.
 Redundancy: Can not improve Software reliability if identical
software components are used.
 Interfaces: Software interfaces are purely conceptual rather
visual.
 Built with standard components: Well-understood and
extensively-tested standard parts will help improve
maintainability and reliability. But in software industry, this trend
is not observed. Code reuse has been around for some time, but to a
very limited extent. Strictly speaking there are no standard parts
for software, except some standardized logic structures.
5
SOFTWARE FAİLURE MECHANİSMS
 Design Faults: Software faults are mainly design faults
which are harder to visualize, classify, detect, and correct.
 Interfaces: Software can fail if interfaces are not correct.
(Interfaces are conceptual rather than visual in case of
software.)
 Errors, Ambiguities, Oversights or Misinterpretation
in the software requirement specification.
 Carelessness or Incompetence in writing code.
 Inadequate testing.
 Incorrect or Unexpected usage of the software.
 Other unforeseen problems.
6
HARDWARE RELIABILITY CURVE
7
SOFTWARE RELIABILITY CURVE
8
MEASURİNG SOFTWARE
RELİABİLİTY
 Current approaches for measuring software reliability are
basically parallel to those used for hardware reliability
assessment with appropriate modifications in account for
the inherent differences between software and hardware.
 A number of Software reliability models have been
proposed to address the problem of software reliability
measurement. These approaches are based mainly on the
failure history of software and can be classified according to
the nature of the failure process.
 Assessed value of the software reliability measure is always
relative to a given use environment. Two users exercising
two different sets of paths in the same software are likely to
have different values of software reliability.
 Measuring software reliability remains a difficult problem
because we don't have a good understanding of the nature
of software. 9
o Transient: Transient failures occur only for
certain inputs.
o Permanent: Permanent failures occur for all
input values.
o Recoverable: When recoverable failures occur
the system recovers with or without operator
intervention.
o Unrecoverable: the system may have to be
restarted.
o Cosmetic: May cause minor irritations. Do not
lead to incorrect results. Eg. mouse button has to
be clicked twice instead of once to invoke a GUI
function.
FAİLURE CLASSES
10
SOFTWARE RELİABİLİTY
MODELING TECHNIQUES
 Software reliability modeling techniques
can be divided into two subcategories:
Prediction Modeling
Estimation Modeling.
 Both kinds of modeling techniques are
based on observing and accumulating
failure data and analyzing with statistical
inference.
11
COMPARISON OF SOFTWARE
RELİABİLİTY MODELING TECHNIQUES
ISSUES PREDICTION MODELS ESTIMATION MODELS
DATA REFERENCE Uses historical data Uses data from the
current software
development effort
WHEN USED IN
DEVELOPMENT
CYCLE
Usually made prior to
development or test
phases; is available as
early as concept phase
Usually made later in life
cycle(after some data
have been collected);
cannot be used in
concept or development
phases
TIME FRAME Predict reliability for
future time.
Estimate reliability at
either present or future
time
SOFTWARE RELİABİLİTY MODELS
 A software reliability model specifies the form of a
random process that describes the behavior of
software failures with respect to time.
 Software reliability models have emerged as
people try to understand the characteristics of how
and why software fails, and try to quantify
software reliability.
 Over 200 models have been developed since the
early 1970s, but how to quantify software
reliability still remains largely unresolved.
 There is no single model that can be used in all
situations. No model is complete or even
representative.
13
CATEGORIES OF SOFTWARE
RELIABILITY MODELS WITH KEY
ASSUMPTIONS
 Times Between Failures (TBF) Models
* Independent times between failures.
* Equal probability of the exposure of each fault.
* Embedded faults are independent of each other.
* Faults are removed after each occurrence.
* No new faults introduced during correction, i.e., perfect fault removal.
 Fault Count (FC) Models
* Testing intervals are independent of each other.
* Testing during intervals is reasonably homogeneous.
* Numbers of faults detected during non overlapping intervals are
independent of each other.
 Fault Seeding (FS) Models
* Seeded faults are randomly distributed in the program.
* Indigenous and seeded faults have equal probabilities of being detected.
 Input Domain Based (IDB) Models
* Input profile distribution is known.
* Random testing is used.
* Input domain can be partitioned into equivalent classes. 14
SOFTWARE RELIABILITY MODELS
15
16
17
COMPONENTS OF A SOFTWARE
RELİABİLİTY MODEL
 Most software models contain  the
following parts:
Assumptions,
Factors,
A mathematical function which relates
the reliability with the factors, which is
usually a higher order exponential or
logarithmic function.
18
SOME WELL KNOWN SOFTWARE
RELIABILITY MODELS
 Jelinsky and Moranda Model
 Basic Execution Time Model
 Logarithmic Poisson Time Model
 The Bug Seeding Model
 Shooman Model
 Littlewood-Verrall Model
 Goel-Okumoto Model
 Musa-Okumoto Model
19
This model is the earliest and probably the best known
reliability model. It proposed a failure intensity function
in the form:
λ(t)=φ(N-i+1)
Where
φ= constant of proportionality
N= total number of errors present
i= number of errors found by time interval ti
In this model each time an error is repaired reliability
does not increase by a constant amount.
Reliability improvement due to fixing of an error is
assumed to be proportional to the number of errors
present in the system at that time.
JELINSKI AND MORANDA MODEL
20
BASIC EXECUTION TIME MODEL
 This model was developed by J.D. Musa in 1979 and is
based on execution time.
 In this model, the decrease in failure intensity, as a
function of the number of failures observed, is
constant and is given as:
 Where λo: Initial Failure Intensity
 Vo: Number of failures experienced, if a program is
executed for infinite time period.
 µ: Average or expected number of failures experienced
at a given period of time.
 τ: execution time.
21
LOGARITHMIC POISSON TIME
MODEL
 This model is also developed by Musa et. al.
[MUSA79].
 The failure intensity function is different here as
compared to basic model. In this case the failure
intensity function decreases exponentially whereas it is
constant for basic model.
λ(µ)= λo exp(-θ µ)
Where
θ: called the failure intensity decay parameter. (represents the
relative change of failure intensity per failure experienced)
 The expected number of failures for this model is
always infinite at infinite time.
 At larger value of execution time, the logarithmic
poison time model will have larger value of failure
intensity than the basic model.
22
There is no universally applicable software
reliability model. So the given process is followed
to deploy a model.
SELECTION OF MODEL
After fitting a model
describing the failure
process, the total
number of faults in the
code, future failure
intensity and additional
time required to achieve
a failure intensity
objective can be
estimated.
23
UNCERTAINTIES IN SOFTWARE
RELİABİLİTY MODELING
TECHNIQUES
 There are two main types of uncertainties
which render any reliability measurement
inaccurate:
 Type 1 Uncertainty:
 our lack of knowledge about how the system will be
used, i.e. its operational profile
 Type 2 Uncertainty:
 reflects our lack of knowledge about the effect of
fault removal.
 When we fix a fault we are not sure if the corrections are
complete and successful and no other faults are
introduced
 Even if the faults are fixed properly we do not know how
much will be the improvement to inter-failure time. 24
STATİSTİCAL TESTİNG
 Statistical testing is a technique in which a
model of the statistical distribution of the input
is used to construct representative test cases.
 The objective of statistical testing is to determine
reliability rather than discover errors.
 It is different from defect testing.
 Different users have different operational profile
i.e. they use the system in different ways
(formally, operational profile).
 In statistical testing the input data is divided
into a number of input classes e.g. create, edit,
print, file operations, etc.
25
PERFORMING A STATISTICAL TEST
 Determine the operational profile of the software:
This can be determined by analyzing the usage
pattern.
 Manually select or automatically generate a set
of test data:
corresponding to the operational profile.
 Apply test cases to the program:
record execution time between each failure
it may not be appropriate to use raw execution
time
 After a statistically significant number of failures
have been observed:
reliability can be computed. 26
CONCLUSİONS
 Software reliability is a key part in
software quality.
 Software reliability improvement is hard.
 There are no generic models.
 Measurement is very important for
finding the correct model.
 Statistical testing should be used but it is
not easy.
 Software Reliability Modelling is not
simple.
27
1. Jintao Zeng, Jinzhong Li, Xiaohui Zeng, Wenlang Luo “A Prototype System of
Software Reliability Prediction and estimation” ,third International
symposium on Intelligent Information Technology and Security Informatics by
IEEE Computer Society, 2010.
2. Michael R. Lyu “Software Reliability Engineering: A Roadmap”, Future of
Software Engineering(FOSE’07) by IEEE, 2007.
3. Bing Chao, XiaoDong Zhu, Qiang Li, AnCe Huang “ Reliability Management
in Software Requirement Analysis”, IEEE International Conference on
Management of Innovation and Technology, 2006.
4. Rajesh Kumar Bawa, Arvind Kumar Lal and Navdeep Singh Jaggi “A Model
for Analysis of Software Reliability and Availability”, Proceedings of RPN
March 2004.
5. K K Aggarwal & Yogesh Singh “Software Engineering” 3rd
Edition, New Age
International Publishers, 2008.
6. Michael R. Lyu “Handbook of Software Reliability Engineering”, Computer
Society Press, 2006.
7. J.D. Musa “Software Reliability Engineering: More Reliable Software Faster
and Cheaper” 2nd Edition, AuthorHouse, 2004 .
8. K. S. Trivedi “Probability and Statistics with Reliability, Queuing and
Computer Science Applications” 2nd Edition, John Wiley and Sons, 2002.
References:
28

Software Reliability

  • 1.
    A SEMINAR ON SOFTWARE RELIABILITY MODELING By: PoonamPanwar Regd. No. 951011002 Under The Supervision of: Dr. Arvind Kumar Lal Associate Professor School of Mathematics & Computer Applications Thapar University, Patiala-147004 (Punjab)
  • 2.
    TOPICS COVERED  Whatis Software Reliability?  Software Failure Mechanisms  Hardware vs Software  Measuring Software Reliability  Software Reliability Models  Statistical Testing  Conclusion 2
  • 3.
    WHAT IS SOFTWARERELİABİLİTY?  Precisely it may be defined as a product’s trustworthiness or dependability.  The probability of failure-free software operation for a specified period of time in a specified environment.  Probability of the product working “correctly” over a given period of time in a specified environment. 3
  • 4.
    AREAS OF S/WRELIABILITY  Software Reliability Modeling  Prediction Analysis  Reliability Measurement  Defect Classification  Trend Analysis  Field Data Analysis  Software Metrics  Software Testing and Reliability  Fault-Tolerance  Fault Trees  Software Reliability Simulation  Software Reliability Tools 4
  • 5.
    SOFTWARE CHARACTERISTICS  Failurecause: Software defects are mainly design defects.  Wear-out: Software does not have wear-out phase.  Repairable system concept: Periodic restarts can help fix software problems.  Time dependency and life cycle: Software reliability is not a function of operational time.  Environmental factors: Do not affect Software reliability, except it might affect program inputs.  Reliability prediction: Software reliability can not be predicted from any physical basis, since it depends completely on human factors in design.  Redundancy: Can not improve Software reliability if identical software components are used.  Interfaces: Software interfaces are purely conceptual rather visual.  Built with standard components: Well-understood and extensively-tested standard parts will help improve maintainability and reliability. But in software industry, this trend is not observed. Code reuse has been around for some time, but to a very limited extent. Strictly speaking there are no standard parts for software, except some standardized logic structures. 5
  • 6.
    SOFTWARE FAİLURE MECHANİSMS Design Faults: Software faults are mainly design faults which are harder to visualize, classify, detect, and correct.  Interfaces: Software can fail if interfaces are not correct. (Interfaces are conceptual rather than visual in case of software.)  Errors, Ambiguities, Oversights or Misinterpretation in the software requirement specification.  Carelessness or Incompetence in writing code.  Inadequate testing.  Incorrect or Unexpected usage of the software.  Other unforeseen problems. 6
  • 7.
  • 8.
  • 9.
    MEASURİNG SOFTWARE RELİABİLİTY  Currentapproaches for measuring software reliability are basically parallel to those used for hardware reliability assessment with appropriate modifications in account for the inherent differences between software and hardware.  A number of Software reliability models have been proposed to address the problem of software reliability measurement. These approaches are based mainly on the failure history of software and can be classified according to the nature of the failure process.  Assessed value of the software reliability measure is always relative to a given use environment. Two users exercising two different sets of paths in the same software are likely to have different values of software reliability.  Measuring software reliability remains a difficult problem because we don't have a good understanding of the nature of software. 9
  • 10.
    o Transient: Transientfailures occur only for certain inputs. o Permanent: Permanent failures occur for all input values. o Recoverable: When recoverable failures occur the system recovers with or without operator intervention. o Unrecoverable: the system may have to be restarted. o Cosmetic: May cause minor irritations. Do not lead to incorrect results. Eg. mouse button has to be clicked twice instead of once to invoke a GUI function. FAİLURE CLASSES 10
  • 11.
    SOFTWARE RELİABİLİTY MODELING TECHNIQUES Software reliability modeling techniques can be divided into two subcategories: Prediction Modeling Estimation Modeling.  Both kinds of modeling techniques are based on observing and accumulating failure data and analyzing with statistical inference. 11
  • 12.
    COMPARISON OF SOFTWARE RELİABİLİTYMODELING TECHNIQUES ISSUES PREDICTION MODELS ESTIMATION MODELS DATA REFERENCE Uses historical data Uses data from the current software development effort WHEN USED IN DEVELOPMENT CYCLE Usually made prior to development or test phases; is available as early as concept phase Usually made later in life cycle(after some data have been collected); cannot be used in concept or development phases TIME FRAME Predict reliability for future time. Estimate reliability at either present or future time
  • 13.
    SOFTWARE RELİABİLİTY MODELS A software reliability model specifies the form of a random process that describes the behavior of software failures with respect to time.  Software reliability models have emerged as people try to understand the characteristics of how and why software fails, and try to quantify software reliability.  Over 200 models have been developed since the early 1970s, but how to quantify software reliability still remains largely unresolved.  There is no single model that can be used in all situations. No model is complete or even representative. 13
  • 14.
    CATEGORIES OF SOFTWARE RELIABILITYMODELS WITH KEY ASSUMPTIONS  Times Between Failures (TBF) Models * Independent times between failures. * Equal probability of the exposure of each fault. * Embedded faults are independent of each other. * Faults are removed after each occurrence. * No new faults introduced during correction, i.e., perfect fault removal.  Fault Count (FC) Models * Testing intervals are independent of each other. * Testing during intervals is reasonably homogeneous. * Numbers of faults detected during non overlapping intervals are independent of each other.  Fault Seeding (FS) Models * Seeded faults are randomly distributed in the program. * Indigenous and seeded faults have equal probabilities of being detected.  Input Domain Based (IDB) Models * Input profile distribution is known. * Random testing is used. * Input domain can be partitioned into equivalent classes. 14
  • 15.
  • 16.
  • 17.
  • 18.
    COMPONENTS OF ASOFTWARE RELİABİLİTY MODEL  Most software models contain  the following parts: Assumptions, Factors, A mathematical function which relates the reliability with the factors, which is usually a higher order exponential or logarithmic function. 18
  • 19.
    SOME WELL KNOWNSOFTWARE RELIABILITY MODELS  Jelinsky and Moranda Model  Basic Execution Time Model  Logarithmic Poisson Time Model  The Bug Seeding Model  Shooman Model  Littlewood-Verrall Model  Goel-Okumoto Model  Musa-Okumoto Model 19
  • 20.
    This model isthe earliest and probably the best known reliability model. It proposed a failure intensity function in the form: λ(t)=φ(N-i+1) Where φ= constant of proportionality N= total number of errors present i= number of errors found by time interval ti In this model each time an error is repaired reliability does not increase by a constant amount. Reliability improvement due to fixing of an error is assumed to be proportional to the number of errors present in the system at that time. JELINSKI AND MORANDA MODEL 20
  • 21.
    BASIC EXECUTION TIMEMODEL  This model was developed by J.D. Musa in 1979 and is based on execution time.  In this model, the decrease in failure intensity, as a function of the number of failures observed, is constant and is given as:  Where λo: Initial Failure Intensity  Vo: Number of failures experienced, if a program is executed for infinite time period.  µ: Average or expected number of failures experienced at a given period of time.  τ: execution time. 21
  • 22.
    LOGARITHMIC POISSON TIME MODEL This model is also developed by Musa et. al. [MUSA79].  The failure intensity function is different here as compared to basic model. In this case the failure intensity function decreases exponentially whereas it is constant for basic model. λ(µ)= λo exp(-θ µ) Where θ: called the failure intensity decay parameter. (represents the relative change of failure intensity per failure experienced)  The expected number of failures for this model is always infinite at infinite time.  At larger value of execution time, the logarithmic poison time model will have larger value of failure intensity than the basic model. 22
  • 23.
    There is nouniversally applicable software reliability model. So the given process is followed to deploy a model. SELECTION OF MODEL After fitting a model describing the failure process, the total number of faults in the code, future failure intensity and additional time required to achieve a failure intensity objective can be estimated. 23
  • 24.
    UNCERTAINTIES IN SOFTWARE RELİABİLİTYMODELING TECHNIQUES  There are two main types of uncertainties which render any reliability measurement inaccurate:  Type 1 Uncertainty:  our lack of knowledge about how the system will be used, i.e. its operational profile  Type 2 Uncertainty:  reflects our lack of knowledge about the effect of fault removal.  When we fix a fault we are not sure if the corrections are complete and successful and no other faults are introduced  Even if the faults are fixed properly we do not know how much will be the improvement to inter-failure time. 24
  • 25.
    STATİSTİCAL TESTİNG  Statisticaltesting is a technique in which a model of the statistical distribution of the input is used to construct representative test cases.  The objective of statistical testing is to determine reliability rather than discover errors.  It is different from defect testing.  Different users have different operational profile i.e. they use the system in different ways (formally, operational profile).  In statistical testing the input data is divided into a number of input classes e.g. create, edit, print, file operations, etc. 25
  • 26.
    PERFORMING A STATISTICALTEST  Determine the operational profile of the software: This can be determined by analyzing the usage pattern.  Manually select or automatically generate a set of test data: corresponding to the operational profile.  Apply test cases to the program: record execution time between each failure it may not be appropriate to use raw execution time  After a statistically significant number of failures have been observed: reliability can be computed. 26
  • 27.
    CONCLUSİONS  Software reliabilityis a key part in software quality.  Software reliability improvement is hard.  There are no generic models.  Measurement is very important for finding the correct model.  Statistical testing should be used but it is not easy.  Software Reliability Modelling is not simple. 27
  • 28.
    1. Jintao Zeng,Jinzhong Li, Xiaohui Zeng, Wenlang Luo “A Prototype System of Software Reliability Prediction and estimation” ,third International symposium on Intelligent Information Technology and Security Informatics by IEEE Computer Society, 2010. 2. Michael R. Lyu “Software Reliability Engineering: A Roadmap”, Future of Software Engineering(FOSE’07) by IEEE, 2007. 3. Bing Chao, XiaoDong Zhu, Qiang Li, AnCe Huang “ Reliability Management in Software Requirement Analysis”, IEEE International Conference on Management of Innovation and Technology, 2006. 4. Rajesh Kumar Bawa, Arvind Kumar Lal and Navdeep Singh Jaggi “A Model for Analysis of Software Reliability and Availability”, Proceedings of RPN March 2004. 5. K K Aggarwal & Yogesh Singh “Software Engineering” 3rd Edition, New Age International Publishers, 2008. 6. Michael R. Lyu “Handbook of Software Reliability Engineering”, Computer Society Press, 2006. 7. J.D. Musa “Software Reliability Engineering: More Reliable Software Faster and Cheaper” 2nd Edition, AuthorHouse, 2004 . 8. K. S. Trivedi “Probability and Statistics with Reliability, Queuing and Computer Science Applications” 2nd Edition, John Wiley and Sons, 2002. References: 28