Artificial Neural Network Applications for Software Reliability Prediction - Manjubala Bisi - E-Book

Artificial Neural Network Applications for Software Reliability Prediction E-Book

Manjubala Bisi

0,0
171,99 €

-100%
Sammeln Sie Punkte in unserem Gutscheinprogramm und kaufen Sie E-Books und Hörbücher mit bis zu 100% Rabatt.

Mehr erfahren.
Beschreibung

This book provides a starting point for software professionals to apply artificial neural networks for software reliability prediction without having analyst capability and expertise in various ANN architectures and their optimization.

Artificial neural network (ANN) has proven to be a universal approximator for any non-linear continuous function with arbitrary accuracy. This book presents how to apply ANN to measure various software reliability indicators: number of failures in a given time, time between successive failures, fault-prone modules and development efforts. The application of machine learning algorithm i.e. artificial neural networks application in software reliability prediction during testing phase as well as early phases of software development process are presented. Applications of artificial neural network for the above purposes are discussed with experimental results in this book so that practitioners can easily use ANN models for predicting software reliability indicators.

Sie lesen das E-Book in den Legimi-Apps auf:

Android
iOS
von Legimi
zertifizierten E-Readern

Seitenzahl: 270

Veröffentlichungsjahr: 2017

Bewertungen
0,0
0
0
0
0
0
Mehr Informationen
Mehr Informationen
Legimi prüft nicht, ob Rezensionen von Nutzern stammen, die den betreffenden Titel tatsächlich gekauft oder gelesen/gehört haben. Wir entfernen aber gefälschte Rezensionen.



Contents

Cover

Title page

Copyright page

Dedication

Preface

Acknowledgement

Abbreviations

Chapter 1: Introduction

1.1 Overview of Software Reliability Prediction and Its Limitation

1.2 Overview of the Book

1.3 Organization of the Book

Chapter 2: Software Reliability Modelling

2.1 Introduction

2.2 Software Reliability Models

2.3 Techniques used for Software Reliability Modelling

2.4 Importance of Artificial Neural Network in Software Reliability Modelling

2.5 Observations

2.6 Objectives of the Book

Chapter 3: Prediction of Cumulative Number of Software Failures

3.1 Introduction

3.2 ANN Model

3.3 Experiments

3.4 ANN-PSO Model

3.5 Experimental Results

3.6 Performance Comparison

Chapter 4: Prediction of Time Between Successive Software Failures

4.1 Time Series Approach in ANN

4.2 ANN Model

4.3 ANN-PSO Model

4.4 Results and Discussion

Chapter 5: Identification of Software Fault-Prone Modules

5.1 Research Background

5.2 ANN Model

5.3 ANN-PSO Model

5.4 Discussion of Results

Chapter 6: Prediction of Software Development Efforts

6.1 Need for Development Efforts Prediction

6.2 Efforts Multipliers Affecting Development Efforts

6.3 Artificial Neural Network Application for Development Efforts Prediction

6.4 Performance Analysis on Data Sets

Chapter 7: Recent Trends in Software Reliability

References

Appendix Failure Count Data Set

Appendix Time Between Failure Data Set

Appendix CM1 Data Set

Appendix COCOMO 63 Data Set

Index

End User License Agreement

Guide

Cover

Copyright

Contents

Begin Reading

List of Illustrations

Chapter 1

Figure 2.1

Concave and S-shaped models.

Figure 2.2

Two-stage model.

Figure 2.3

Recent failure data with sliding window size

K

.

Figure 2.4

Total failure data at present with sliding window size K.

Figure 2.5

ANN for software reliability prediction.

Chapter 3

Figure 3.1

Prediction system.

Figure 3.2

Architecture of ANN.

Figure 3.3

Mathematical model of a neuron.

Figure 3.4

Comparison of MAPE on DS1-DS6 for different value of t*

max

(NEE).

Figure 3.5

Comparison of MAPE on DS7-DS12 for different value of t*

max

(NEE).

Figure 3.6

Comparison of MAPE on DS13-DS18 for different value of t*

max

(NEE).

Figure 3.7

Comparison of MAPE on DS1-DS6 for different value of t*

max

(NLE).

Figure 3.8

Comparison of MAPE on DS7-DS12 for different value of t*

max

(NLE).

Figure 3.9

Comparison of MAPE on DS13-DS18 for different value of t*

max

(NLE).

Figure 3.10

Effect of number of hidden nodes on MAPE.

Figure 3.11

ANN architecture.

Figure 3.12

Actual vs. predicted (DS16) using NLE approach.

Figure 3.13

Actual vs. predicted (DS16) using ANN-PSO approach.

Figure 3.14

Actual vs. predicted (DS17) using NLE approach.

Figure 3.15

Actual vs. predicted (DS17) using ANN-PSO approach.

Figure 3.16

Actual vs. predicted (DS18) using NLE approach.

Figure 3.17

Actual vs. predicted (DS18) using ANN-PSO approach.

Chapter 4

Figure 4.1

Feed forward artificial neural network.

Figure 4.2

Software failure process.

Figure 4.3

Effect of y*

max

on NRMSE.

Figure 4.4

ANN architecture.

Figure 4.5

Effect of hidden neurons on NRMSE for DS1 (ANN model).

Figure 4.6

Effect of hidden neurons on NRMSE for DS2 (ANN model).

Figure 4.7

Effect of hidden neurons on NRMSE for DS3 (ANN model).

Figure 4.8

Effect of hidden neurons on NRMSE for DS4 (ANN model).

Figure 4.9

Effect of hidden neurons on NRMSE for DS5 (ANN model).

Figure 4.10

Effect of hidden neurons on NRMSE for DS6 (ANN model).

Figure 4.11

Effect of hidden neurons on NRMSE for DS7 (ANN model).

Figure 4.12

Effect of hidden neurons on NRMSE for DS1 (ANN-PSO model).

Figure 4.13

Effect of hidden neurons on NRMSE for DS2 (ANN-PSO model).

Figure 4.14

Effect of hidden neurons on NRMSE for DS3 (ANN-PSO model).

Figure 4.15

Effect of hidden neurons on NRMSE for DS4 (ANN-PSO model).

Figure 4.16

Effect of hidden neurons on NRMSE for DS5 (ANN-PSO model).

Figure 4.17

Effect of hidden neurons on NRMSE for DS6 (ANN-PSO model).

Figure 4.18

Effect of hidden neurons on NRMSE for DS7 (ANN-PSO model).

Chapter 5

Figure 5.1

ANN with single hidden layer.

Figure 5.2

Overall methodology of SA-ANN approach.

Figure 5.3

ANN architecture.

Figure 5.4

Variation of principal components for CM1.

Figure 5.5

Variation of principal components for PC1.

Figure 5.6

Variation of principal components for KC1.

Figure 5.7

Variation of principal components for KC2.

Figure 5.8

Mean vs. standard deviation of accuracy: CM1 data set.

Figure 5.9

Mean vs. standard deviation of f-measure: CM1 data set.

Figure 5.10

Mean vs. standard deviation of accuracy: PC1 data set.

Figure 5.11

Mean vs. standard deviation of f-measure: PC1 data set.

Figure 5.12

Mean vs. standard deviation of accuracy: KC1 data set.

Figure 5.13

Mean vs. standard deviation of f-measure: KC1 data set.

Figure 5.14

Mean vs. standard deviation of accuracy: KC2 data set.

Figure 5.15

Mean vs. standard deviation of f-measure: KC2 data set.

Chapter 6

Figure 6.1

Methodology.

Figure 6.2

Additional input scaling layer ANN architecture.

Figure 6.3

System architecture of ANN-PSO-PCA-GA approach.

Figure 6.4

Variation of PCs for COCOMO data set.

Figure 6.5

Variation of PCs for NASA data set.

Figure 6.6

Variation of PCs for Desharnais data set.

Figure 6.7

Variation of PCs for Albrecht data set.

List of Tables

Chapter 1

Table 2.1

Examples of software reliability growth models.

Table 2.2

Techniques used for Software Reliability Modeling,

Chapter 3

Table 3.1

Data sets used.

Table 3.2

Comparison of MAPE using actual, exponential and logarithmic encoded input.

Table 3.3

Comparison of MAPE using actual, exponential and logarithmic encoded input.

Table 3.4

Comparison of RMSE and RRMS value on DS16.

Table 3.5

Comparison of RMSE and RRMS value on DS17.

Table 3.6

Comparison of RMSE and RRMS value on DS18.

Chapter 4

Table 4.1

Benchmark data sets (with their references).

Table 4.2

Lag value and no. of hidden neurons giving best accuracy for data sets using ANN model.

Table 4.3

Lag value and no. of hidden neurons giving best accuracy for data sets using ANN-PSO model.

Table 4.4

Comparison of NRMSE value using ANN and ANN-PSO model.

Table 4.5

Comparison of NRMSE values of proposed approaches with statistical models.

Table 4.6

Model comparison based on NRMSE for DS1.

Table 4.7

Model comparison based on SSE for DS2.

Table 4.8

Next-step prediction for DS3, DS4 and DS7.

Chapter 5

Table 5.1

Characteristics of data set.

Table 5.2

Metrics used in the data sets.

Table 5.3

ASCI of each metric in decreasing order (left to right) for CM1.

Table 5.4

ASCI of each metric in decreasing order (left to right) for PC1.

Table 5.5

ASCI of each metric in decreasing order (left to right) for KC1.

Table 5.6

ASCI of each metric in decreasing order (left to right) for KC2.

Table 5.7

Confusion matrix.

Table 5.8

Prediction performance measures: CM1 data set.

Table 5.9

Prediction performance measures: PC1 data set.

Table 5.10

Prediction performance measures: KC1 data set.

Table 5.11

Prediction performance measures: KC2 data set.

Table 5.12

Performance comparison of KC2 data set.

Table 5.13

Best subset of metrics by applying SFPM.

Table 5.14

Best subset of metrics by applying CFS.

Table 5.15

Comparison of performance measure for CM1 data set.

Table 5.16

Mean and standard deviation of CM1 data set.

Table 5.17

Comparison of performance measure for PC1 data set.

Table 5.18

Mean and standard deviation of PC1 data set.

Table 5.19

Comparison of performance measure for KC1 data set.

Table 5.20

Mean and standard deviation of KC1 data set.

Table 5.21

Comparison of performance measure for KC2 data set.

Table 5.22

Mean and standard deviation of KC2 data set.

Chapter 6

Table 6.1

Effort multipliers of COCOMO data set.

Table 6.2

Division of COCOMO data set.

Table 6.3

MMRE value of COCOMO data set using presnted approaches.

Table 6.4

PRED(25) value of COCOMO data set using presented approaches.

Table 6.5

Comparison of MMRE value on COCOMO data set.

Table 6.6

Comparison of PRED(25) value on COCOMO data set.

Table 6.7

MMRE and PRED(25) value of NASA data set using presented approaches

Table 6.8

Comparison of MMRE and PRED(25) value on NASA data set.

Table 6.9

MMRE and PRED(25) value of Desharnais data set using presented approaches.

Table 6.10

Comparison of MMRE and PRED(25) value on Desharnais data set.

Table 6.11

MMRE and PRED(25) value of Albrecht data set using presented approaches.

Table 6.12

Comparison of MMRE and PRED(25) value on Albrecht data set

Pages

ii

iii

iv

v

xi

xii

xiii

xiv

xv

xvi

xvii

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217

218

219

220

221

222

223

224

225

226

227

228

229

230

231

232

233

234

235

236

237

238

239

240

241

242

243

244

245

246

247

248

249

250

251

252

253

254

255

256

257

258

259

260

261

262

263

264

265

266

267

268

269

270

271

272

273

274

275

276

277

278

279

280

281

282

283

284

285

286

287

288

289

290

291

292

Scrivener Publishing 100 Cummings Center, Suite 541J Beverly, MA 01915-6106

Performability Engineering Series Series Editors: Krishna B. Misra ([email protected]) and John Andrews ([email protected])

Scope: A true performance of a product, or system, or service must be judged over the entire life cycle activities connected with design, manufacture, use and disposal in relation to the economics of maximization of dependability, and minimizing its impact on the environment. The concept of performability allows us to take a holistic assessment of performance and provides an aggregate attribute that reflects an entire engineering effort of a product, system, or service designer in achieving dependability and sustainability. Performance should not just be indicative of achieving quality, reliability, maintainability and safety for a product, system, or service, but achieving sustainability as well. The conventional perspective of dependability ignores the environmental impact considerations that accompany the development of products, systems, and services. However, any industrial activity in creating a product, system, or service is always associated with certain environmental impacts that follow at each phase of development. These considerations have become all the more necessary in the 21st century as the world resources continue to become scarce and the cost of materials and energy keep rising. It is not difficult to visualize that by employing the strategy of dematerialization, minimum energy and minimum waste, while maximizing the yield and developing economically viable and safe processes (clean production and clean technologies), we will create minimal adverse effect on the environment during production and disposal at the end of the life. This is basically the goal of performability engineering.

It may be observed that the above-mentioned performance attributes are interrelated and should not be considered in isolation for optimization of performance. Each book in the series should endeavor to include most, if not all, of the attributes of this web of interrelationship and have the objective to help create optimal and sustainable products, systems, and services.

Publishers at Scrivener Martin Scrivener ([email protected]) Phillip Carmical ([email protected])

Artificial Neural Network for Software Reliability Prediction

 

 

 

By

Manjubala Bisi

Neeraj Kumar Goyal

 

 

 

This edition first published 2017 by John Wiley & Sons, Inc., 111 River Street, Hoboken, NJ 07030, USA and Scrivener Publishing LLC, 100 Cummings Center, Suite 541J, Beverly, MA 01915, USA © 2017 Scrivener Publishing LLC For more information about Scrivener publications please visit www.scrivenerpublishing.com. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording, or otherwise, except as permitted by law. Advice on how to obtain permission to reuse material from this title is available at http://www.wiley.com/go/permissions.

Wiley Global Headquarters 111 River Street, Hoboken, NJ 07030, USA

For details of our global editorial offices, customer services, and more information about Wiley products visit us at www.wiley.com.

Limit of Liability/Disclaimer of Warranty While the publisher and authors have used their best efforts in preparing this work, they make no representations or warranties with respect to the accuracy or completeness of the contents of this work and specifically disclaim all warranties, including without limitation any implied warranties of merchantability or fitness for a particular purpose. No warranty may be created or extended by sales representatives, written sales materials, or promotional statements for this work. The fact that an organization, website, or product is referred to in this work as a citation and/or potential source of further information does not mean that the publisher and authors endorse the information or services the organization, website, or product may provide or recommendations it may make. This work is sold with the understanding that the publisher is not engaged in rendering professional services. The advice and strategies contained herein may not be suitable for your situation. You should consult with a specialist where appropriate. Neither the publisher nor authors shall be liable for any loss of profit or any other commercial damages, including but not limited to special, incidental, consequential, or other damages. Further, readers should be aware that websites listed in this work may have changed or disappeared between when this work was written and when it is read.

Library of Congress Cataloging-in-Publication Data

ISBN 978-1-119-22354-2

DedicatedToOur Families

Preface

This book presents artificial neural network (ANN) applications to estimate/ predict important software reliability indicators such as expected number of failures in a given time, expected time between successive failures, identification of fault-prone modules and estimation of development efforts. Applications of artificial neural network for the above purposes are briefly presented and discussed as a case study with experimental results in this book.

These days, software is an integral part of most systems with responsibility of carrying out critical tasks and, therefore, 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. Therefore, software professionals are constantly trying to develop software which are not only functionally efficient but also safe, reliable and cost effective. A reliable software can be achieved by good software development practices. However, these practices provide only directions on how to develop and verify/ validate software as well as suggest/enforce good development practices. There is a need to measure and understand software failure behavior, which will in turn help to evaluate or predict software performance, optimize resources, control the factos affecting software reliability with reduction in development time.

Some important measures reflecting software reliability are: cumulative number of failures in a given time, time between successive failures, software fault-proneness of software modules, software reliability, software availability, software failure intensity etc. Prediction of the above parameters help the software professionals to mange the resources in optimal way and ensure release the software within time and lesser cost while meeting reliability/ safety criteria. This book is a result of our research carried out at the Reliability Engineering Centre, Indian Institute of Technology, Kharagpur.

This book can be used as a valuable tool for software practitioners and managers in software reliability prediction and for researchers in the field. Also, the researchers can pursue advanced studies and research in this area. Sufficient research background have been given through illustrations of various techniques. It can also be used by undergraduate or postgraduate students who want to research/ learn software reliability prediction.

The book is divided into seven chapters. In Chapter 1, general concepts of software reliability are presented, need of software reliability evaluation along with associated terms such as faults, errors, failures, and reliabiity is discussed. Overview of software reliability modelling is also described in this chapter.

In Chapter 2, literature survey on software reliability modelling is presented. Classification of existing models according to various criterions followed in literature is presented in this chapter. Different techniques used for software reliability prediction such as statistical methods, fuzzy logic, artificial neural networks, genetic algorithm, baysian approach, support vector machine, naive bayes, and some hybrid techniques are breifly discussed in this chapter.

In Chapter 3, 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) ANN. These models are experimented with multiple data sets to show how they work and their performance in terms of prediction accuracy. These models will help to determine time to stop testing and software release.

In Chapter 4, two ANN models using time series approach are presented to predict time between successive software failures. These models use multiple delayed inputs, single output ANN architecture. These models are applied on multiple data sets to show and compare their prediction accuracy with other models.

In Chapter 5, two ANN models are presented to identify fault-prone modules in software. These models are configured as multiple inputs (software quality metrics) and single output ANN archtectures to predict fault-prone modules. Sensitivity analysis and principal component analysis (PCA) are employed to identify important software quality metrics from a set of available quality metrics. This process is called dimension reduction and it helps to achieve better accuracy by simplifying the model and reducing dependant metrics.

In Chapter 6, 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.

In Chapter 7, recent trends as well as future trends in software reliability are presented.

In the appendices, different data sets used throughout the book are provided for reference and practical purposes.

Manjubala BisiNeeraj Kumar GoyalJune 2017

Acknowledgement

This book has been a culmination of my research at the Reliability Engineering Centre, Indian Institute of Technology, Kharagpur, India. I wish to express my gratitude to all who helped me during preparation of this book. Much of the content and concepts of the book are based on existing research available in literature. I would like to express my appreciation to those authors who have published excellent materials on Software Reliability Modelling and Artificial Neural Networks in form of books and research articles.

I would like to thank Professor K. B. Misra and Professor Neeraj Kumar Goyal, who motivated me to write this book. I would also thank Professor V.N.A. Naikan, S. K. Chaturvedi and Rajib Mall who gave some excellent suggestions to improve my research work at Indian Institute of Technology, Kharagpur, India.

I am also thankful to my husband Dr. R. R. Rout for his moral support during preparation of this book. Lastly my gratitude to my parents, my in-laws and my only daughter (Trisha Rout) for their unconditional love, suport and prayers for my success in achieving this goal.

I always thank God for guiding and taking care of me in every step of the way.

Manjubala Bisi

Abbreviations

AE

Average Error

ANN

Artificial Neural Network

ANOVA

One-way Analysis of Variance

ASCI

Average Sensitivity Casual Index

CFS

Correalation-based Feature Selection

DS

Data Set

FN

Fault Negative

FP

FaultProne

FP

Fault Positive

GA

Genetic Algorithm

GP

Genetic programming

GRA

Gray Relational Analysis

LR

Logistic Regression

MAPE

Mean Absolure Percentage Error

MLP

Multilayer perceptron

MMRE

Mean magnitude Relative Error

NB

Naïve Bayes

NEE

Neural Network with Exponential Encoding

NFP

Not Fault-Prone

NHPP

Non-homogeneous Poison Process

NLE

Neural Network with Logarithmic Encoding

NRMSE

Normalized Root Mean Square Error

PCA

Principal Component Analysis

PRED (25)

Prediction within 25%

PSO

Particle swarm Optimization

RBF

Radial Basis Function

RE

Relative Error

RF

Random Forest

RMSE

Root Mean square Error

RRMS

Relative Root Mean Square Error

SA

Simulated Annealing

SDLC

Software Development Life Cycle

SRGMs

Software Reliability Growth Models

SSE

Sum of Squared Error

SVM

Support Vector Machine

TN

True Negative

TP

True Positive

Chapter 1Introduction

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 certification ensures a certain reliability level.

Software reliability modeling and prediction is an important step to develop reliable software. Reliability prediction is carried throughout the software development process. Reliability prediction carried out before testing phase (requirement, design and coding phase) is called early reliability prediction. Testing data are not available during these phases. Therefore, using some software development characteristics, software project, use/test characteristics and fault statistics obtained