Evaluation of Safety Critical Software -- David L. Parnas, -- A. John van Schouwen, -- Shu Po Kwan -- June 1990 Presented By Zhuojing Li Outline • • • • • • • • • Overview Why is Software a Special Concern Why is software used How is software different from other controllers Software testing concerns Software review concerns Modular structure Reliability assessment Conclusions Overview • Can we trust software? • The authors present some important questions. Why is Software a special concern? • Software systems do not work well until they have been used and have failed repeatedly • Errors are more common, and more troublesome • Can be used in safety- critical applications. – Example: Military and civilian aircraft, nuclear plants, medical devices Why is software used? • More logic • Easier to change • More flexible How are software controllers like other controllers • Similarities: Both can be described as black box mathematical models. How is software different from other controller technologies • More complex • More error sensitive – For example: sensitive to small errors – Conventional engineering is tolerant • Harder to test • Has correlated failures • Lack of Professional standards Software testing concerns Cannot test software for correctness: Testing can show the presence of bugs but it can not show that software is free of design errors. Difficult to make prediction of software reliability and availability: Impractical to measure the trustworthiness of software Need for an independent agency Software review concerns • 1st question: Why is reviewability a particular concern for software? – Each programmer has his/her own style. – Software structure and documentation were dismissed. – There is problem of clarity Software review concerns 2nd question: what reviews are needed? Correct intended functions. Maintainable, understandable , well documented structures. Each module to verify the algorithm and data structure design. Code for consistency with the algorithm and data structure design. Test completeness. Software review concerns • 3rd question: What documentation is required to review the functional requirements? • Description should use the mathematics of control systems. Software review concerns • 4th question: What documentation is required to review the software structure? Three types of documents are required. Requirement specification Informal documents: Describing the responsibilities of each modules. Module specification: Provides black box description of each modules Software review concerns 5th question: What documentation is required to review the module’s internal design? • Description of the data structures that will be used. • Description of the program functions and abstraction functions. • Programs that cannot be described on a single page must be presented in a layered way. Software review concerns 6th question: What documentation is required to review the code? Examine the correctness between the algorithms and the actual code No need to examine the global design of the system Software review concerns • 7th question: What documentation is required to review the test plan? -Reviewed by specialists, who compare it with requirement specification Software review concerns • 8th question: Why is configuration management essential for rigorous reviews? – Complexity of software, and tremendous amount of documents. Software review concerns Solution for 8th question: • Use online documentation instead of paper copies of the documents. • Changes in the documentation should be notified by the computer system to all persons who have used the affected document. • Online versions must be kept under strict control. Modular structure • Information Hiding • Object-oriented programming • Separation of Concerns • Encapsulation • Data Abstraction Principle: increase “cohesion” and reduce “coupling” Reliability Assessment for safety–critical software • All software failures would be predictable if we fully understand the software Reliability Assessment for safety–critical software • Software Measurements – Reliability: • Probability of not encountering a sequence of inputs that leads to failure. – Availability: • Fraction of time that the system is running and assumed to be ready to function. Reliability Assessment for safety–critical software • We cannot predict a software failure rate from failure rates for individual lines or subprograms • The finite state machine model help us to determine the number of tests. Reliability Assessment for safety–critical software • Use of hypothesis testing: (1-1/h)N= M 1/h: the probability of failure in a test N: randomly selected tests M: the probability that an unacceptable product would pass our test. Reliability Assessment for safety–critical software • Three classes of program: – For memoryless batch program, use a randomly selected set of input data. – For a batch program with memory, a test is selected by choosing both input data and an internal state. – For real time system, use a multidimensional trajectory. Conclusions • Software can be used in certain safetycritical applications, but extreme discipline in design, documentation, testing and review is needed. • Operating conditions and requirements should be well understood and fully documented the end