Reliability is one of the essential quality requirements of software systems, especially for life critical ones. Software reliability modeling provides a means for estimating reliability of software, which facilitates effective decision making for quality control. Existing models either use a black-box approach that is based on test data of the whole system or a white-box approach that uses components' reliabilities and inter-component interactions. While the black-box approach is applicable to the late phases of software development, the white-box approach can support decisions on early component reuse and later component upgrades and updates. However, the white-box based models have traditionally considered only homogeneous software behaviors. For this reason, we extended the white-box to an architecture-based approach, utilizing the characteristics of architectural styles to capture design information and to realize non-uniform heterogeneous software behaviors. Adhered to the behaviors, a state machine of a discrete-time Markov model is constructed and employed to compute software reliability. Our approach allows reliability to be modeled at architectural design stage to decide components for reuse as well as later testing and maintenance phases for continuous software evolution. In contrast to the black-box approach, the model only needs to retest the influenced portions for a behavioral or structural change, instead of the complete system. This model yields a compelling result after being applied to an industrial real-time component-based financial system. We believe that this architecture-based modeling technique can have a great potential for use to effectively improve software quality.
All Science Journal Classification (ASJC) codes
- Information Systems
- Hardware and Architecture