Reliability Prediction and Sensitivity Analysis Based on Software Architecture Swapna S. Gokhale Kishor S. Trivedi Dept. of CSE CACC, Dept. of ECE Univ. of Connecticut Duke University Storrs, CT 06269 Durham, NC 27708 Email: ssg@engr.uconn.edu Email: kst@ee.duke.edu Abstract Prevalent approaches to characterize the behavior of monolithic applications are inappropriate to model mod- ern software systems which are heterogeneous, and are built using a combination of components picked off the shelf, those developed in-house and those developed contractu- ally. Development of techniques to characterize the be- havior of such component-based software systems based on their architecture is then absolutely essential. Earlier ef- forts in the area of architecture-based analysis have focused on the development of composite models which are quite cumbersome due to their inherent largeness and stiffness. In this paper we develop an accurate hierarchical model to predict the performance and reliability of component-based software systems based on their architecture. This model accounts for the variance of the number of visits to each module, and thus provides predictions closer to those pro- vided by a composite model. The approach developed in this paper enables the identification of performance and re- liability bottlenecks. We also develop expressions to analyze the sensitivity of the performance and reliability predictions to the changes in the parameters of individual modules. In addition, we demonstrate how the hierarchical model could be used to assess the impact of changes in the workload on the performance and reliability of the application. We illus- trate the performance and reliability prediction as well as sensitivity analysis techniques with examples. 1 Introduction The size and complexity of computer systems has in- creased more rapidly in the past decade, than our ability to design, test, implement and maintain them. Computer sys- tems are being increasingly used in various active (control- ling), and passive (monitoring) applications, and the trend will surely continue in the future. Computer system fail- ures make newspaper headlines because at best they incon- venience people (e.g., malfunctions of home appliances), cause economic damage (e.g., interruptions of banking ser- vices), and in the extreme cases cause deaths (e.g., failures of flight control systems or medical software). The com- puter industry has seen uneven progress. With the steadily growing power and reliability of the hardware, software reliability has been identified as a major stumbling block in the realization of highly dependable computer systems. When lives and fortunes depend on software, assurance of its quality becomes an issue of critical concern. The impact of the structure of an application on its re- liability and correctness has been highlighted almost two decades ago [19, 23]. However, prevalent approaches to characterizing the behavior of software systems are black- box based, i.e., the software system is considered as a whole and only its interactions with the outside world are mod- eled, without looking into its internal structure. These ap- proaches were suited to capture the behavior of largely cus- tom, built-to-specification type of applications. Several cri- tiques of the black-box based approaches to predict the re- liability of software systems have appeared in the litera- ture [8, 9] and some of these include the fact that they are applicable very late in the life-cycle of the software, ig- nore information about testing and reliabilities of the com- ponents of which the software is made, and do not take into consideration the architecture of the software. With the advancement and widespread use of object oriented systems design and web-based development, the use of component- based software development is on the rise. The software components can be commercially available off the shelf (COTS), developed in-house, or developed contractually. Application, software system and software are used interchangeably in this paper. Component and module are used interchangeably in this paper. 1 Proceedings of the 13 th International Symposium on Software Reliability Engineering (ISSRE’02) 1071-9458/02 $17.00 © 2002 IEEE