Software Reliability Improvement-Additional Reading Two
Software Reliability Improvement-Additional Reading Two
41
International Journal of Computer Applications (0975 – 8887)
Volume 10– No.5, November 2010
“Figure 3”
“Figure 1” Bathtub curve for hardware
Reliability 5. SOFTWARE RELIABILITY ACTIVITIES
The reliability process in generic terms is a model of the
reliability- oriented aspects of software development, operations,
and maintenance. Quantities of interest in a project reliability
profile include artifacts, errors, defects, corrections, faults, tests,
failures, outages, repairs, validation, and expenditures of
resources, such as CPU time, manpower effort and schedule time.
The activities relating to reliability are grouped into classes:
Construction
Generates new documentation and code artifacts
Combination
Integrates reusable documentation and code components with new
documentation and code components
Correction
Analyzes and removes defects in documentation and code using
static analysis of artifacts.
Preparation
Generates test plans and test cases, and readies them for
execution.
Testing
Executes test cases, whereupon failure occur
Identification
Makes fault category assignment. Each fault may be new or
“Figure 2” Software Reliability curve previously encountered.
In Figure 2 Considering the “actual curve|”, during the software‟s
life, software will undergo feature upgrades. For feature upgrades
Repair
Removes faults and possibly introduces new faults.
the complexity of software is likely to be increased, since
functionality of software is enhanced, causing the failure rate Validation
curve to spike as shown in Figure 2. Before the curve return to the Performs inspections and checks to affirm that repairs are
original steady state failure rate, another upgrade is requested effective
causing the curve to spike again. Slowly, the minimum failure
rate level begins to rise-the software is deteriorating due to Retest
upgrade in feature. Since the reliability of software keep on Executes test cases to verify whether specified repairs are
getting decreased with increase in software complexity, a possible complete if not, the defective repair is marked for repair. New test
curve is shown in Figure 3. cases may be needed.
42
International Journal of Computer Applications (0975 – 8887)
Volume 10– No.5, November 2010
Test coverage metrics are a way of estimating fault and 6.8 Interoperability
reliability by performing tests on software products, based on the
assumption that software reliability is a function of the portion of The effort required to couple one system to another as indicated
software that has been successfully verified or tested. by the following sub-features: adaptability, insatiability,
conformance, replacebility.
43
International Journal of Computer Applications (0975 – 8887)
Volume 10– No.5, November 2010
Inconsistency
reliability. In real situations, it is not possible to eliminate all the
Ambiguity
bugs in the software; however, by applying sound software
Omission
Incorrect
engineering principles software reliability can be improved to a
Fact
great extent.
The application of systematic, disciplined, quantifiable approach 26% 10% 38% 26%
to the development operation and maintenance of software will
produce economically software that is reliable and works
efficiently on real machines [IEEE93].Figure 4. shows Software
Engineering being the layered technology focuses on the quality
and reliability of software.
44
International Journal of Computer Applications (0975 – 8887)
Volume 10– No.5, November 2010
total of more than 250 errors were detected, and the percentage of
different types of errors was:
7.2.3 Program Construction After deployment of the software product, field data can be
It includes coding and some testing tasks. In this phase software gathered and analyzed to study the behavior of software defects.
reliability can be increased by: Fault tolerance or fault/failure forecasting techniques will be
helpful techniques and guide rules to minimize fault occurrence or
a) Constraining algorithms by following impact of the fault on the system.
structured programming [BOH00] practice.
b) Write self-documenting code.
c) Creating interfaces that are consistent with
architecture,
d) Conducting a code walkthrough.
e) Performing unit tests.
f) Refactoring code.
7.2.4 Testing
After the code construction of software products, testing,
verification and validation are necessary steps. Software testing is
heavily used to trigger, locate and remove software defects.
Software testing is still in its infant stage; testing is crafted to suit
specific needs in various software development projects in an ad-
hoc manner. Various analysis tools such as trend analysis, fault-
tree analysis, Orthogonal Defect classification and formal
methods, etc, can also be used to minimize the possibility of
defect occurrence after release and therefore improve software
reliability.
A strategy for testing may be viewed as shown in Figure [Link] starts
with testing the individual modules and then progresses by
moving upward to integration testing where the modules are
collectively tested for errors. In validation testing customer
requirements are validated against the software that has been
developed. Finally in system testing, the entire software is tested
as a single unit. Once the above testing strategy will be followed
for software testing, software reliability can be highly improved. “Figure 6” Testing Strategy
Figure 7 shows the effect of identifying and removing errors in the
early phases of software development, on the software reliability.
45
International Journal of Computer Applications (0975 – 8887)
Volume 10– No.5, November 2010
7.3 Software Engineering Tools been built. Since actual software artifacts(such as faults in
computer programs) and processes(such as failure and fault
Software engineering provides a collection of tools that helps in removal) often violate the assumptions of analytic software
every step of building a product and is termed as CASE reliability models, simulation can perhaps provide a better
(Computer Aided Software Engineering) tools. Case provides the understanding of such assumptions and may even lead to a better
software engineer with the ability to automate manual activities explanation of why some analytic models work well in spite of
and assist in analysis, design, coding and test work. This leads to such violations.
high quality and high reliable software
Some of the steps involved in the process of simulation study are
illustrated by the flowchart of Figure 6.
8. SOFTWARE RELIABILITY MODELING
To study a system, it is possible to experiment with the system
itself or with the model of the system, but experimenting with the
system itself is very expensive and risky. The objective of many
system studies, however is to predict how a system will perform
before it is built. Consequently, system studies are generally
conducted with a model of a system. A model is not only a
substitute of a system; it is also a simplification of the system.
A number of software reliability models have emerged as people
try to understand the attributes of how and why software fails, and
try to quantify software reliability. Over 200 models have been
proposed since 1970s, but how to quantify software reliability still
remains unsolved. There is no single model that can be used in all
the situations. No model is complete; one model may work well
for a set of certain software, but may be completely off track for
other kinds of problems.
Most existing analytical methods to obtain reliability measures for
software systems are based on the Markovian models and they
rely on the assumption on exponential failure time distribution.
The Markovian models are subject to the problem of intractably
large state space. Methods have been proposed to model
reliability growth of components which can not be accounted for
by the conventional analytical methods but they are also facing the
state space explosion problem. A simulation model, on the other
and offers an attractive alternative to analytical models as it
describes a system being characterized in terms of its artifacts,
events, interrelationships and interactions in such a way that one
may perform experiments on the model, rather than on the system
itself, ideally with indistinguishable results.
9. RELIABILITY SIMULATION
Simulation refers to the technique of imitating the character of an
object or process in a way that permit us to make quantified
inferences about the real object or process. In the area of software
reliability, simulation can mimic key characteristics of the
processes that create, validate, and revise documents and code. “Figure 6” The process of simulating
Reliability modeling ultimately requires good data. But software An initial step is to describe the problem to be solved in a concise
projects do not always collect data sets that are comprehensive, manner. Based on this problem definition, a model must be
complete, or consistent enough for effective modeling research or defined. It is at this point that it becomes apparent whether the
model application. Further, data required for software reliability model can be kept in a form that allows analytical techniques to
modeling in general seem to be even more difficult to collect than be used. When it is decided to simulate, the experimental nature
other software engineering data. of the simulation technique makes it essential to plan the study by
deciding upon the major parameters to be varied, the number of
cases to be conducted and the order in which runs are to be made.
10. SIMULATION PROCESS Given that the simulation is to be on the digital computer, a
Since good data sets are so scarce, one purpose of simulation is to program must be written.
supply carefully controlled, homogeneous data or software
artifacts having known characteristics for use in evaluating the Once the model is decided, we need to verify the model and then
various assumptions upon which existing reliability models have executing a series of runs according to the study plan. As results
are obtained, it is likely that there will be many changes in the
46
International Journal of Computer Applications (0975 – 8887)
Volume 10– No.5, November 2010
model and the study plan. The early runs may make parameter Software Reliability Engineering, p.257, November 17-21,
significance clear and so lead to the reassessment of the model. 2003
Verification of results is important after each run. Sometimes it is
[8] Quadri, S.M.K., Ahmad, N., Peer, M.A. (2008), "Software
useful to repeat runs so that parts of model have different random
optimal release policy and reliability growth modeling",
numbers on each run.
Proceedings of 2nd National Conference on Computing for
Nation Development, INDIACom-2008, New Delhi, India,
11. CONCLUSION pp 423-31
Computers are playing very important role in our day-to-day life
and there is always a need of high quality software. Software [9] [Link], "A General Software Relibility Process
reliability is the most measurable aspect of software quality. Simulation Technique,"NASA JPL Publication, 91-7, April
Unlike hardware, software does not age, wear out or rust, 1991.
unreliability of software is mainly due to bugs or design faults in [10] [Link] and M.R, Lyu, "A generalized technique for
the software. Software reliability is dynamic & stochastic. The simulating software relibility,"IEEE Software,”Vol.13, No.2,
exact value of product reliability is never precisely known at any pp.77-88, March 1996.
point in its lifetime. The study of software reliability can be
categorized into three parts: Modeling, Measurement & [11] Robert C. Tausworthe , Michael R. Lyu, “A Generalized
improvement. Many Models exist, but no single model can Technique for Simulating Software Reliability, “IEEE
capture a necessary amount of software characteristics. There is Software, v.13 n.2, p.77-88, March 1996
no single model that is universal to all the situations. Simulations [12] [Link], M. [Link], and K. S. Trividi," Reliability
can mimic key characteristics of the processes that create, validate Simulation of Component-Based Software
& review documents & code. Software reliability measurement is Systems,"Proceedings of the 19th International Symposium
naive. It can‟t be directly measured, so other related factors are on Software Reliability Engineering, pp. 192-201,
measured to estimate software reliability. Software reliability Paderborn, Germany, November 1998.
improvement is necessary & hard to achieve. It can be improved
[13] [Link], Michael R. Lyu, and K.S. Trivedi." Reliability
by sufficient understanding of software reliability, characteristics
Simulation of Fault-Tolerant Software and Systems". In Proc.
of software & sound software design. Complete testing of the
of Pacific Rim International Symposium on Fault-Tolerant
software is not possible; however sufficient testing & proper
Systems (PRFTS '97), pp. 197-173, Taipei, Taiwan,
maintenance will improve software reliability to great extent.
December 1997.
12. REFERENCES [14] S. Krishnamurthy , A. P. Mathur, On The” Estimation Of
[1] C. T. Lin, C. Y. Huang, and C. C. Sue, “Measuring and Reliability Of A Software System Using Reliabilities Of Its
Assessing Software Reliability Growth Through Simulation- Components,” Proceedings of the Eighth International
Based Approaches,” Proceedings of the 31st IEEE Annual Symposium on Software Reliability Engineering (ISSRE '97),
International Computer Software and Applications p.146, November 02-05, 1997
Conference (COMPSAC 2007), pp. 439-446, Beijing, China, [15] Swapna S. Gokhale , Kishor S. Trivedi, “A time/structure
July 2007. based software reliability model,” Annals of Software
[2] J. Lo, S. Kuo, M.R. Lyu, and C. Huang, “Optimal Resource Engineering, v.8 n.1-4, p.85-121, 1999
Allocation and Reliability Analysis for Component-Based [16] Swapna S. Gokhale , Kishor S. Trivedi , Michael R. Lyu,
Software Applications,” Proc. 26th Ann. Int'l Computer “Reliability Simulation of Fault-Tolerant Software and
Software and Applications Conf. (COMPSAC), pp. 7-12, Systems,” Proceedings of the 1997 Pacific Rim International
Aug. 2002. Symposium on Fault-Tolerant Systems, p.167, December 15-
[3] John D. Musa, “Operational Profiles in Software-Reliability 16, 1997
Engineering,” IEEE Software, v.10 n.2, p.14-32, March 1993 [17] S. Y. Kuo, C. Y. Huang, and M. R. Lyu, “Framework for
[4] Kishor S. Trivedi, “Probability and statistics with reliability, Modeling Software Reliability, Using Various Testing-
queuing and computer science applications,” John Wiley and Efforts and Fault-Detection Rates,” IEEE Transactions on
Sons Ltd., Chichester, UK, 2001 Reliability,” Vol. 50, No. 3, pp. 310-320, Sept. 2001.
[5] K. Kanoun M. Kaaniche C. Beounes J.C. Laprie and J. Arlat, [18] Tausworthe, Robert C., "A General Software Reliability
“Reliability Growth of Fault-Tolerant Software,” IEEE Process Simulation Technique," Technical Report 91-7, Jet
Trans. Reliability, vol. 42, no. 2, pp. 205-219, June 1993. Propulsion Laboratory,Psaadena, CA, March 1991.
[6] Kumar, M., Ahmad, N., Quadri, S.M.K. (2005), "Software [19] Wood, A. (1996), "Predicting software reliability", IEEE
reliability growth models and data analysis with a Pareto Computers, Vol.11, pp 69-77 Von Mayrhauser, A.,Malaiya,
test-effort", RAU Journal of Research, Vol.15, No. 1-2, pp Y.K.,Keables, J.,and Srimani, P. K., "On the Need for
124-8 Simulation for better Characterization of Software
Reliability, "International Symposium on Software
[7] Norman F. Schneidewind, “Fault Correction Profiles, Reliability Engineering,” Denver, CO, 1993.
“Proceedings of the 14th International Symposium on
47