Everyone who writes safety critical software should read this
eles
eles at eles.com
Wed Nov 6 01:35:58 PST 2013
On Wednesday, 6 November 2013 at 01:52:30 UTC, growler wrote:
> On Tuesday, 5 November 2013 at 08:41:17 UTC, eles wrote:
>> On Saturday, 2 November 2013 at 04:03:46 UTC, Walter Bright
>> wrote:
>>> On 11/1/2013 8:03 AM, bearophile wrote:
> Fail safe design needs to be engineered to handle the situation
> when any component fails regardless of the quality of
> components used. Software is just one more (weak) component in
> the system.
Yes, but you cannot go at zero probability, only if you use an
infinite number of back-ups. Otherwise, there is some
infinitesimal, but non-zero probability that everything fails.
You take two teams that develop software independently, in
different languages, on different machine architectures etc.
However, there is a non-zero probability that both teams (or
compilers or processor or all of that) expose the same bug or the
arbiter that counts the votes has some error.
In designing failsafe systems *you rely* on something, because
you have no choice. But yes, you go as pessimistic as possible
(usually, limited by the budget).
Hardware can fail mostly for the same reasons that software fails
too. The difference, in the long term, is that once a software is
100% correct, it will never get worse. The hardware can be in
good shape today and badly broken tomorrow. Just have a look at
Curiosity's digger.
> Of course component quality is important to overall safety
> because fail safe systems are not foolproof. But as Walter says
> it should not be part of the solution nor relied upon in a fail
> safe deign.
As said earlier, you cannot go as extreme as that. You don't rely
on any specific part, but you rely on combination of parts and
you simply bet on the fact that their probability of independent
but simultaneous failure is very small.
Then, it is a matter of scale what means "a part" and "several
parts". Just zoom in and out on the project's design and you see
it. Is more like a fractal.
If you don't allow yourself to rely on anything, you get nothing
built. You may design perfect fail safe systems, you just cannot
build those.
The bottom line is: never claim that your system is fully fail
safe, no matter the strategy and the care you put in designing
and building it. There is no spoon.
More information about the Digitalmars-d
mailing list