Thesis (Ph. D.)--Massachusetts Institute of Technology, Dept. of Nuclear Engineering, 2004.
Page 242 blank.
Includes bibliographical references (p. 238-241).
The objective of this study is to improve quality and reliability of safety-critical software in the nuclear industry. It is accomplished by focusing on the following two areas: Formulation of a standard extensive integrated software testing strategy for safety-critical software, and Development of systematic test-based statistical software reliability quantification methodologies. The first step to improving the overall performance of software is to develop a comprehensive testing strategy, the gray box testing method. It has incorporated favorable aspects of white box and black box testing techniques. The safety-critical features of the software and feasibility of the methodology are the key drivers in determining the architecture for the testing strategy. Monte Carlo technique is applied to randomly sample inputs based on the probability density function derived from the specification of the given software. Software flowpaths accessed during testing are identified and recorded. Complete nodal coverage testing is achieved by automatic coverage checking. It is guaranteed that the most popular flowpaths of the software are tested.
The second part of the methodology is the quantification of software performance. Two Bayesian based white box reliability estimation methodologies, nodal coverage- based and flowpath coverage-based, are developed. The number of detected errors and the failure-free operations, the objective and subjective knowledge of the given software, and the testing and software structure information are systematically incorporated into both reliability estimation approaches. The concept of two error groups in terms of testability is initiated to better capture reliability features of the given software. The reliability of the tested flowpaths of the software and that of the untested flowpaths can be updated at any point during testing. Overall software reliability is calculated as a weighted average of the tested and untested parts of the software, with the probability of being visited upon next execution as the weight of each part. All of the designed testing and reliability estimation strategies are successfully implemented and automated via various software tools and demonstrated on a typical safety-critical software application.
by Yi Zhang.
Ph.D.