Research in Reliability of Computer Software Systems
Nowadays computer software plays a critical role in our daily life. Software components are embedded everywhere ranging from aircraft, automobiles to home appliances. The size and complexity of software systems have grown dramatically during the past decade and the trend will certainly continue in the future. As the most important facet of software quality is reliability, the study of software reliability has attracted much attention in the academia and industry.
Software failures cannot be eliminated because of a number of characteristics contributing to the existence of software faults, see Figure 1. Our research has been focused on the study and analysis of software failures in software testing which is an important stage of software development.
Figure 1: Characteristics that contribute to the existence of software failures.
With the advent of modern technology, the design of software systems has become more and more complex. In fact, software development is estimated to account for 80 per cent of a new system. A typical simplified software development phase may appear as in Figure 2. To develop a new software or to add a new feature, the software development process starts with requirements. According to the requirements, the software product is developed. Then the software product is reviewed and inspected for the quality and reliability purposes. Once defects are found, rework of the product which include defect source diagnosis and defect fixing are required. As a result, many versions of the same software exist in the same phase until a final version is out and put to the testing phase.
Figure 2: Example of the role of reliability in a software development phase.
Software testing plays an important role in a software product life cycle. It is estimated that a major part of the software production effort, around 50 per cent, is devoted to testing. The objective of testing is to discover the residual design errors before delivery to the customer. The failure data during the testing process are taken down in order to estimate the software reliability. The testing process may function with regular feedback from the reliability analysis to the testers and designers which is shown in Figure 3.
Most of the existing software reliability models are parametric models. Statistical methods have to be used to estimate model parameters. Problems are usually encountered in Maximum Likelihood Estimation of software reliability model parameters. This has lead to the study of early reliability prediction. Procedures using early information for software reliability prediction are proposed. A comparison is done after the procedures to check the effectiveness of the approach.
Figure 3: The role of reliability in software testing.
Research is being carried out on confidence interval estimations of software reliability predictions. This is a joint work with Professor Claes Wohlin of Lund University with actual data from telecommunication and software industry from Sweden. Interval estimations of failure intensity has been used as another aspect in studying software reliability. An estimation with confidence intervals always gives more information than just a point estimate. Upon the common point estimates provided by the software reliability models, confidence intervals are derived for both finite and infinite failure type of software reliability models.