Architecture-based analysis and optimization of software reliability

Swapna S. Gokhale, Lance Fiondella · 2012

With the progression of the information age, engineered systems continue to assume an ever more pervasive role in society. Software failures, however, continue to contribute disproportionately to the failure of these systems. Existing approaches to assess software reliability make several simplifying assumptions, significantly diminishing their suitability for use in real-world software engineering processes. The objective of this dissertation is to remove some of these assumptions by developing new approaches with greater applicability to software engineering practice. The following three issues are addressed: Importance measures prioritize model parameters and can be used to guide resource allocation for cost-effective software reliability improvement. Several importance measures have been proposed for architecture-based software to identify critical components. These previous approaches rely on average component parameters to rank parameters. However, uncertainties are inevitable, especially in early design phases of the software life-cycle, which may obscure the results of importance assessment. We propose importance measures for architecture-based software with uncertain parameters to systematically quantify the parametric uncertainties. Effort to improve components reliabilities should be commensurate with component's criticality to system-level reliability, yet prevalent approaches ignore application architecture. Furthermore, existing optimization procedures assume component effort parameters are known in advance. We present two architecture-based optimization strategies to consider the impact of component reliabilities based on their architectural context. The first directly models component effort/reliability relationships with functions from mechanical systems reliability to minimize the effort needed to achieve a desired system reliability target. The second provides an adaptive effort allocation procedure that considers fault detection information as it becomes available, dynamically allocating effort to components that will increase system reliability most efficiently. Architecture-based software reliability models assume components fail independently. Recent empirical studies, however, demonstrate many software failures require fixing two or more files, suggesting component failures can be correlated. We propose an efficient method to estimate application reliability from the component reliabilities, pairwise correlations, and application architecture. The efficiency of the approach makes it suitable for analyzing the sensitivity of the application reliability to the correlation parameters.

Read the paper · More papers on PaperTik