Abstract
(type = abstract)
The increasing dependence of our modern society on software systems has driven the development of software product to be more competitive and time-consuming. At the same time, large-scale software development is still considered as a complex, effort consuming, and expensive activity, given the influence of the transitions in software development, which are the adoption of software product lines, software development globalization, and the adoption of software ecosystems. Hence, the consequence of software failures becomes costly, and even dangerous. Therefore, in this dissertation, we have not only integrated software practitioners’ opinions from a wide variety of industries, but also developed software reliability models by addressing different practical problems observed in software development practices.
We first revisit 32 environmental factors affecting software reliability in single-release software development and compare with the findings 15 years ago [27, 28]. Later, we investigate the environmental factors affecting software reliability in multi-release software development and compare the impact of environmental factors between the development of multi-release and single-release software to provide a comprehensive analysis for software development practices.
Software faults are classified into two groups, Type I (independent) faults and Type II (dependent) faults. Two phases software debugging process are introduced according to different types of faults. Firstly, a one-phase software reliability model is proposed with the assumption that there is only Type II faults exist in the program given Type I faults have been removed in the preliminary testing phase. Later, a two-phase software reliability model is developed in consideration of Type I and Type II faults, fault dependency, and imperfect fault removal.
Given software multiple releases are commonly adopted in industry, a software reliability model for multi-release software product is proposed. The remaining faults from previous release, and the newly introduced faults, generated from the newly added features, are both considered into the model development. In addition, the detection of the new fault in the development of the next release depends on the remaining faults from previous release and the newly introduced faults from the newly added features.
Finally, given the environment factors studies in the early stage of this dissertation, the single-environmental-factor software reliability model under the Martingale framework in consideration of environmental factor, Percentage of Reused Modules, and the randomness caused by this environmental factor is developed. Later, we propose a generalized multiple-environmental-factors model framework incorporating multiple environmental factors and the randomness caused by these environmental factors. We further propose two specific multiple-environmental-factors models considering two environmental factors, gamma-distributed Percentage of Reused Modules, and gamma-distributed or beta-distributed Frequency of Program Specification Change.
In sum, this dissertation firstly investigates 32 environmental factors affecting software reliability in the development of single-release and multiple-release software and further compares the findings of these two studies regarding environmental factors and development phase. Software reliability models are developed in each chapter in consideration of different problems/applications in practices, such as software fault dependency, imperfect fault removal, software multiple releases, and the impact of environmental factors on software reliability during the development process.