Engineering PapersSearch

Engineering topics

Knight, John C.

Publications and source records attributed to Knight, John C..

25 records · Page 2

The consistent comparison problem in N-version software

The authors have identified a difficulty in the implementation of N-version programming. The problem, called the consistent comparison problem, arises for applications in which decisions are based on the results of comparing finite-precision numbers. It is shown that when versions make comparisons involving the results of finite-precision calculations, it is impossible to guarantee the consistency of their results. It is therefore possible that correct versions may arrive at completely different outputs for an application that does not apparently have multiple correct solutions. If this problem is not dealt with explicitly, an N-version system may be unable to reach consensus even when none of its component versions falls.

Brilliant, Susan S.

Data diversity: An approach to software fault tolerance

Data diversity is described, and the results of a pilot study are presented. The regions of the input space that cause failure for certain experimental programs are discussed, and data reexpression, the way in which alternate input data sets can be obtained, is examined. A description is given of the retry block which is the data-diverse equivalent of the recovery block, and a model of the retry block, together with some empirical results is presented. N-copy programming which is the data-diverse equivalent of N-version programming is considered, and a simple model and some empirical results are also given.

Ammann, Paul E.

A system for evaluating Ada implementations using synthesized benchmarks

A system is described that allows project designers to evaluate the suitability of an Ada implementation for a particular application using tailored benchmarks. Specification of the load that an application is expected to generate is written in an Ada-like notation. An Ada program is then synthesized that generates the specified load. Studies of the way in which performance varies with various parameters of the application can be performed by the system automatically.

Knight, John C.

On the implementation and use of Ada on fault-tolerant distributed systems

Due to a lack of distribution semantics and failure semantics, Ada was found to be inadequte for programming distributed systems in which process failure has to be tolerated. It is shown, however, that it is possible to define adequate distribution and failure semantics for Ada so that the language can be used to program fault-tolerant distributed systems. It is noted that although the new semantics require no additions or changes to Ada's syntax, an extensive support system is necessary to implement them.

Knight, John C.

Detection of faults and software reliability analysis

Multi-version or N-version programming is proposed as a method of providing fault tolerance in software. The approach requires the separate, independent preparation of multiple versions of a piece of software for some application. These versions are executed in parallel in the application environment; each receives identical inputs and each produces its version of the required outputs. The outputs are collected by a voter and, in principle, they should all be the same. In practice there may be some disagreement. If this occurs, the results of the majority are taken to be the correct output, and that is the output used by the system. A total of 27 programs were produced. Each of these programs was then subjected to one million randomly-generated test cases. The experiment yielded a number of programs containing faults that are useful for general studies of software reliability as well as studies of N-version programming. Fault tolerance through data diversity and analytic models of comparison testing are discussed.

Knight, John C.