Due to the growing complexity of software applications, increasing dependence on the services offered by these applications, and decreasing resources available to build and maintain them, reliability assessment of an application must provide systematic, quantitative guidance for cost-effective reliability improvement. The guidance must also consider the interplay of reliability with other attributes such as performance, cost, and effort to strike the right balance between them. Architecture-based software reliability analysis offers the potential to provide such early guidance considering the tradeoffs among multiple attributes. The project will enable advances in architecture-based software reliability analysis through the development of: (i) modeling techniques to consider the characteristics of real-life software applications including concurrency, deterministic execution times of components, interface failures, failure severities, and architecture styles, (ii) analysis techniques to facilitate component prioritization and quantification of confidence intervals, (iii) estimation techniques to determine model parameters from different software artifacts, and (iv) optimization techniques to allow two-way and three-way tradeoffs between performance, reliability, cost, and effort. Evaluation and validation of the developed techniques will be based both on controlled experiments and real-life case studies.
The outcomes of the research will be disseminated via publications and will be implemented in a user-friendly tool which will be made available via the Web. A comprehensive education plan is integrated with the project. The plan comprises: (i) curriculum development of graduate and undergraduate courses, (ii) short courses and tutorials for presentation at conferences and industrial and research institutions, (iii) international educational visits, (iv) involvement and participation of high school and middle school students and their teachers, and (v) involvement of underrepresented groups and minorities.
Intellectual merit: The project developed novel, sophisticated and scalable techniques to assess the reliability of software systems based on their architecture. The developed techniques can now consider features such found in modern applications such as correlations among components, distributed deployment of components,and concurrent execution. Approaches to analyze the sensitivity of application reliability to uncertainties in the parameter estimates and quantifying the confidence intervals in the parameter estimates were developed. Methods to estimate the parameters of the models based on artifacts such as code coverage, and performance data were developed. The techniques were demonstrated on in-house and industrial software applications. Broader Impacts: The broader impact of the project include: Doctoral and master's students: Three doctoral students and three masters students completed their dissertations and theses during the award period. Training graduate and undergraduate students: The techniques developed in the project were introduced to the students in various graduate and undergraduate classes taught by the PI. The students were expected to apply these techniques in semester-long projects assigned during these courses. Involving undergraduate students: The PI involved undergraduate students in her research through various channels including independent studies, and senior design projects. Training professional software engineers: Through tutorials and short courses presented at various international conferences, the PI exposed practicing software engineers to the state-of-the-art reliability assessment techniques. Industrial collaborations: The project spawned industrial collaborations with colleagues from Alcatel-Lucent, Cisco, HP, and Fujitsu. Publications: The project resulted in over 50 publications in premier conference proceedings and journals including IEEE Transactions on Reliability, IEEE Transactions on Software Engineering, Journal of Systems and Software, Journal of Software Testing, Verification and Reliability, Annual Reliability and Maintainability Symposium, and Intl. Symposium on Software Reliability Engineering.