
Artificial Neural Network Applications for Software Reliability Prediction
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions

Persons
Manjubala Bisi is currently an Assistant Professor in the Computer Science and Engineering Department, Kakatiya Institute of Technology and Science, Warangal, Telengana, India. She received her PhD from the Indian Institute of Technology Kharagpur in Reliability Engineering in 2015. Her research interests include software reliability modelling, artificial neural networks and soft computing techniques.
Neeraj Kumar Goyal is currently an Associate Professor in Subir Chowdhury School of Quality and Reliability, Indian Institute of Technology Kharagpur, India. He received his PhD from IIT Kharagpur in Reliability Engineering in 2006. His major areas of research are network /system reliability and software reliability. He has completed various research and consultancy projects for various organizations, e.g. DRDO, NPCIL, Vodafone, ECIL etc. He has contributed research papers to refereed international journals and conference proceedings.
Content
Preface xi
Acknowledgement xv
Abbreviations xvii
1 Introduction 1
1.1 Overview of Software Reliability Prediction and Its Limitation 6
1.2 Overview of the Book 8
1.2.1 Predicting Cumulative Number of Software Failures in a Given Time 9
1.2.2 Predicting Time Between Successive Software Failures 11
1.2.3 Predicting Software Fault-Prone Modules 13
1.2.4 Predicting Software Development Efforts 15
1.3 Organization of the Book 17
2 Software Reliability Modelling 19
2.1 Introduction 19
2.2 Software Reliability Models 20
2.2.1 Classification of Existing Models 21
2.2.2 Software Reliability Growth Models 25
2.2.3 Early Software Reliability Prediction Models 27
2.2.4 Architecture based Software Reliability Prediction Models 29
2.2.5 Bayesian Models 31
2.3 Techniques used for Software Reliability Modelling 31
2.3.1 Statistical Modelling Techniques 31
2.3.2 Regression Analysis 35
2.3.3 Fuzzy Logic 37
2.3.3.1 Fuzzy Logic Model for Early Fault Prediction 38
2.3.3.2 Prediction and Ranking of Fault-prone Software Modules using Fuzzy Logic 39
2.3.4 Support Vector Machine 40
2.3.4.1 SVM for Cumulative Number of Failures Prediction 41
2.3.5 Genetic Programming 45
2.3.6 Particle Swarm Optimization 49
2.3.7 Time Series Approach 50
2.3.8 Naive Bayes 51
2.3.9 Artificial Neural Network 52
2.4 Importance of Artificial Neural Network in Software Reliability Modelling 54
2.4.1 Cumulative Number of Software Failures Prediction 55
2.4.2 Time Between Successive Software Failures Prediction 58
2.4.3 Software Fault-Prone Module Prediction 60
2.4.4 Software Development Efforts Prediction 64
2.5 Observations 67
2.6 Objectives of the Book 70
3 Prediction of Cumulative Number of Software Failures 73
3.1 Introduction 73
3.2 ANN Model 76
3.2.1 Artificial Neural Network Model with Exponential Encoding 77
3.2.2 Artificial Neural Network Model with Logarithmic Encoding 77
3.2.3 System Architecture 78
3.2.4 Performance Measures 80
3.3 Experiments 81
3.3.1 Effect of Different Encoding Parameter 82
3.3.2 Effect of Different Encoding Function 83
3.3.3 Effect of Number of Hidden Neurons 86
3.4 ANN-PSO Model 88
3.4.1 ANN Architecture 89
3.4.2 Weight and Bias Estimation Through PSO 91
3.5 Experimental Results 93
3.6 Performance Comparison 94
4 Prediction of Time Between Successive Software Failures 103
4.1 Time Series Approach in ANN 105
4.2 ANN Model 106
4.3 ANN- PSO Model 113
4.4 Results and Discussion 116
4.4.1 Results of ANN Model 116
4.4.2 Results of ANN-PSO Model 121
4.4.3 Comparison 125
5 Identification of Software Fault-Prone Modules 131
5.1 Research Background 133
5.1.1 Software Quality Metrics Affecting Fault-Proneness 134
5.1.2 Dimension Reduction Techniques 135
5.2 ANN Model 137
5.2.1 SA-ANN Approach 139
5.2.1.1 Logarithmic Scaling Function 139
5.2.1.2 Sensitivity Analysis on Trained ANN 140
5.2.2 PCA-ANN Approach 142
5.3 ANN-PSO Model 145
5.4 Discussion of Results 148
5.4.1 Results of ANN Model 149
5.4.1.1 SA-ANN Approach Results 149
5.4.1.2 PCA-ANN Approach Results 152
5.4.1.3 Comparison Results of ANN Model 155
5.4.2 Results of ANN-PSO Model 162
5.4.2.1 Reduced Data Set 162
5.4.2.2 Comparison Results of ANN-PSO Model 163
6 Prediction of Software Development Efforts 175
6.1 Need for Development Efforts Prediction 178
6.2 Efforts Multipliers Affecting Development Efforts 178
6.3 Artificial Neural Network Application for Development Efforts Prediction 179
6.3.1 Additional Input Scaling Layer ANN Architecture 181
6.3.2 ANN-PSO Model 183
6.3.3 ANN-PSO-PCA Model 186
6.3.4 ANN-PSO-PCA-GA Model 188
6.3.4.1 Chromosome Design and Fitness Function 189
6.3.4.2 System Architecture of ANN-PSOPCA-GA Model 190
6.4 Performance Analysis on Data Sets 192
6.4.1 COCOMO Data Set 194
6.4.2 NASA Data Set 202
6.4.3 Desharnais Data Set 206
6.4.4 Albrecht Data Set 209
7 Recent Trends in Software Reliability 215
References 219
Appendix Failure Count Data Set 231
Appendix Time Between Failure Data Set 235
Appendix CM1 Data Set 241
Appendix COCOMO 63 Data Set 283
Index 289
Chapter 1
Introduction
Computer systems controlled by software play a major role in day-to-day activities of the modern society. Applications of software has now reached diverse fields such as home appliances, hospital health care unit, industrial control, nuclear reactor plant, air traffic control, aircraft, shopping and many more. Many commercial and government organizations depend on software to increase their efficiency and effectiveness. The demand for application of software is increasing day-by-day. The failures in the software may lead to minor inconvenience and customer dissatisfaction, economic loss, loss of life and total system failure. Some of the tragic consequences of software failures are: i) Therac-25 accident: It is a computer controlled radiation therapy machine. Software failures led to death of six patients due to therapeutic overdose ii) Obama care health insurance portal: Due to software failures, this portal shallows one third insurance applications which leads to customer dissatisfaction iii) Social network: Due to automatic generation and recommendation of add friend request, private data of six million members of the network was made public iv) 22 people wrongly arrested in Australia due to failures in "NZ million courts computer system" v) Telephone outage: After changing three lines of code in a signaling program which contains millions lines of code, the local telephone systems in California stopped. Therefore, software professionals are constantly trying to develop software which are not only functionally attractive but also safe and reliable.
According to ANSI (American National Standards Institute), software reliability is defined as the probability of failure-free software operation for a specified period of time in a specified environment. It is also an important attribute of software quality, together with functionality, usability, performance, serviceability, capability, install ability, maintainability and documentation.
Software reliability prediction is an important step in the development of reliable software. It aids to develop reliable software within given time and budget constraints. Software reliability prediction is carried throughout software development process. Different terminologies such as fault, error, failure, bug, mistake, malfunction and defect are associated with software reliability problems. A fault is created when programmer makes some error during requirement, design, coding and testing phase. Software contains fault, if for some input, the output is incorrect. It can be removed by correcting the erroneous part of the software. Failure occurs in software, if the faulty part is executed. Wrong input, incorrect printing of output and misinterpretation of output may cause failures in software. The failures are classified as transient, permanent, recoverable and unrecoverable depending upon severity. Transient failures occur only for certain input values while permanent failures occur for all input values. When recoverable failure occurs, the system recovers with or without operator intervention. The system may have to be restarted when unrecoverable failure occurs.
Software reliability measurement is gaining importance in software industry. So, various techniques have been developed to predict software failures with time, which characterize the software failure behavior. The existing software reliability prediction models are divided into two categories. First category of methods utilize failure data recorded during testing to estimate current reliability of the software and assess the efforts required to achieve certain level of software reliability before releasing it. These models generally model the software reliability growth considering impact of testing and debugging efforts. Second category of models assess development efforts to achieve a certain level of reliability utilizing software quality indices. These models are generally called early software reliability prediction models as they try to assess software reliability before testing phase allowing better planning and utilization of resources. These models allow to monitor software reliability throughout development process and provide feedback at right time during development resulting in lesser development cost and achieving quality and reliable software within budget and time constraint. However, early software reliability prediction models show larger prediction errors, in general, compared to growth models as the testing data provides more information about software reliability built in the system.
Predicting cumulative number of failures and time between successive software failures help software professionals for determining release time of software. If the number of failures are not increasing after testing the software for a certain period of time and the time between successive failures are very high, then software managers can stop testing and release the software. Large and complex software systems are developed by integrating various software modules. All modules are neither equally important nor do they contain an equal amount of faults. Therefore, researchers started focusing on the classification of software modules as fault-prone (FP) and not fault-prone modules (NFP). Fault-proneness of a module can be determined from software quality metrics. Some metrics are interrelated and redundant with each other. Therefore, determination of important software metrics is required to predict fault-pone modules. Software development efforts need to be accurately predicted during early phases of software development process using software quality metrics affecting efforts known as effort multipliers. It helps to produce reliable software within time and budget constraint. If a software is released with higher reliability than the desired reliability, additional testing resources are required which reduces the profit margin for the developer and delay in development schedule. If a software is released with lower reliability than the desired reliability, then the maintenance cost will be more than testing cost.
This book presents prediction of above software reliability applications: number of failures in a given time, time between failures, classification of fault-prone modules and development efforts prediction. The major content of this book are as follows:
- Predicting Cumulative Number of Software Failures in a Given Time: In this work, two artificial neural network (ANN) models are presented to predict cumulative number of failures in software. These models use single input (testing time), single output (failure count) and experimented with multiple data sets. The results show better prediction accuracy. These models help to determine time to stop testing and release time of software.
- Predicting Time between Successive Software Failures: In this work, two ANN based models using time series approach are presented to predict time between successive software failures. These models use multiple delayed inputs, single output and their application on multiple data sets also show better prediction accuracy.
- Predicting Software Fault-Prone Modules: In this work, ANN models are presented to predict fault-prone modules in software. These models are configured as multiple inputs (software quality metrics) and single output to predict fault-prone modules. Sensitivity analysis and principal component analysis (PCA) are studied for the purpose of input dimension reduction and PCA is found to be providing better accuracy.
- Predicting Software Development Efforts: In this work, ANN models are presented to predict software development efforts from effort multipliers. Effect of optimizing ANN architecture using genetic algorithm (GA) on prediction accuracy is studied and found to be providing better accuracy.
This chapter explains the overview and necessity of software reliability. The overview of software reliability modeling and its limitations are also described in this chapter. This chapter defines objectives of this book. Finally, organization of the book is presented in this chapter.
The rest of this chapter is organized as follows. Overview of software reliability modeling and its limitations are discussed in Section 1.1. The objectives and overview of the book are presented in Section 1.2. The organization of book is presented in Section 1.3.
1.1 Overview of Software Reliability Prediction and Its Limitation
In this section, an overview of software reliability prediction and its limitations are presented.
In software industry, time, budget and testing resources are limited. So, it is necessary to develop reliable software within budget and time constraint. Software reliability is hard to achieve, because the complexity of software tends to be high. Software reliability is measured to determine quality of current product, to predict quality of product and to improve quality of a product. However, it is a difficult problem to measure software reliability because we do not have a good understanding of the nature of software. It can be measured as estimation, prediction and certification of software reliability. Software reliability estimation is used to quantify current reliability level. Some statistical inferences are applied to failure data obtained during software testing to determine whether the applied reliability model is good enough for the current software project. Software reliability prediction is used to forecast the future reliability. The future failure behavior is predicted from present and past failures. Software reliability...
System requirements
File format: ePUB
Copy protection: Adobe-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Install the free reader Adobe Digital Editions prior to download (see eBook Help).
- Tablet/smartphone (Android; iOS): Install the free app Adobe Digital Editions or the app PocketBook before downloading (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (not Kindle).
The file format ePub works well for novels and non-fiction books – i.e., „flowing” text without complex layout. On an e-reader or smartphone, line and page breaks automatically adjust to fit the small displays.
This eBook uses Adobe-DRM, a „hard” copy protection. If the necessary requirements are not met, unfortunately you will not be able to open the eBook. You will therefore need to prepare your reading hardware before downloading.
Please note: We strongly recommend that you authorise using your personal Adobe ID after installation of any reading software.
For more information, see our ebook Help page.