90 likes | 176 Views
Toward more realistic software reliability predictions: A family of empirical studies. PI: Katerina Goseva – Popstojanova Students: Margaret Hamill & Ranganath Perugupalli Lane Dept. Computer Science and Electrical Engineering West Virginia University, Morgantown, WV
E N D
Toward more realistic software reliability predictions: A family of empirical studies PI: Katerina Goseva – Popstojanova Students: Margaret Hamill & Ranganath Perugupalli Lane Dept. Computer Science and Electrical Engineering West Virginia University, Morgantown, WV katerina@csee.wvu.edu
Problem • Problem: There are many open questions with respect to the realism of the underlying assumptions, accuracy, and applicability of software reliability models • Our goal: Contribute towards more realistic assessment and prediction of software reliability based on theoretical and empirical studies • Two important phenomena will be addressed • Uncertainty in software reliability due to errors in the operational profile • Effect of failure clustering on software reliability predictions
Importance & Benefits • Develop new more accurate software reliability theory • Apply and validate theoretical results on large real-life empirical studies • 300 source files • 800,000lines of C code What are the parts of the system that need more extensive V&V? Identification of critical components -Frequently used components - Components that heavily affect the application - Components with low reliabilities
Intended Approach historical data, UML Informed Approach component traces 1 p12 2 p23 p1E 3 p2E Build software architecture & Estimate operational profile E Conduct uncertainty analysis 1-R1 1 p12R1 1-R2 F 2 Entropy Perturbation analysis Method of moments Monte Carlo simulation p23R2 p1ER1 3 Growth models p2ER2 E Estimate components reliabilities & Build software reliability model Failed & non-failed executions 1-R3 Fault injection Approach
Approach Instrument the software with a profiler Get test cases that failed Execution of test cases Version 3.2 test logs & change logs Bug tracking database Bugzilla Execute tests on newer versions & check logs Profiles for each test case Relational database of profiles for each test case Identify defect location for each test case that failed Mapping C functions to files; Mapping files to components Estimate components reliability Estimate transition probabilities & build operational profile Software reliability model Uncertainty analysis
Accomplishments • Currently we are experimenting with theC properpart of GCC version 3.2.3 • 300 source files • 800,000 lines of C code • We are using 2426 test cases from the test suite of GCC version 3.3.3 • This is the largest application used for empirical software reliability estimation ever
1 2 • Analyzed the uncertainty based on entropy • Identified most frequently used components and components that affect large parts of the application START 3 15 4 14 17 5 13 6 12 END 7 Accomplishments • Identified location of the defects for the failed test cases using three different methods (two automatic and one manual) • Built the operational profile on component level based on execution profiles which contain over 2,000,000 C functions
Next steps • Complete the experiments with open source software GCC • Apply and validate the methods for uncertainty analysis • Lessons learned • Conduct experiments with NASA software • Address the failure clustering phenomenon – theoretically and empirically