comp.lang.ada
 help / color / mirror / Atom feed
From: bobduff@world.std.com (Robert A Duff)
Subject: Re: Software Safety (was: Need help with PowerPC/Ada and realtime tasking)
Date: 1996/05/31
Date: 1996-05-31T00:00:00+00:00	[thread overview]
Message-ID: <DsAJJ5.22u@world.std.com> (raw)
In-Reply-To: 31AD794D.2E62@lmtas.lmco.com


In article <31AD794D.2E62@lmtas.lmco.com>,
Ken Garlington  <garlingtonke@lmtas.lmco.com> wrote:
>I have some sympathy for your more general definition, but there's also a
>problem. For example, I cannot build a flight-control system that will
>prevent aircraft crashes. No matter what I do, there will always be some
>chain of events (plausible or otherwise) that will cause the plane to
>crash. On an F-16, it's as simple as the pilot pointing the nose to the
>ground too long, or flying through a sufficiently strong hurricane. Does
>this make flight-control software inherently incorrect, or just inherently
>unsafe under certain conditions?

Agreed.  We don't know for sure if that crash was the fault of the
software or the pilot.  We can study the circumstances, and come to an
opinion, but intelligent people will disagree on the point.

My objection to using the word "correct" to mean "software conforms to
some (possibly bogus) formal spec", is that it *automatically* blames
the pilot, even in cases where intelligent people would blame the
software.  Suppose the software gave confusing info to the pilot.  I
don't want some programmer saying, "But, the formal spec *required* the
software to give that confusing info, and we used formal correctness
proofs to ensure that."

The problem is that, in English, "correct" is an absolute term.  If you
say "This flight-control software has been mathematically proven to be
correct", there's a danger that non-programmers will believe, "They've
proven (beyond any doubt) that the software will do what it ought to do"
(i.e. the non-programmer misses the point that "what it ought to do" is
not necessarily the same thing as what the formal spec said).

Using the term "correct" as the proof-of-correctness folks like to,
gives a false sense of security, IMHO.  *My* meaning for "correct" is
harder to deal with, of course, because it requires human judgement
(what the program *ought* to do, as opposed to what somebody formally
*specified* it should do).  Well, that's life.

>Any requirements specification, formal or otherwise, has to make some
>assumptions about the operating environment, and it has to make some
>assumptions about "acceptable" chains of events that lead to unsafe
>conditions. A requirements specification for a robot control arm may
>assume that no humans will be in the vicinity during operation. This
>may be a reasonable assumption, given the planned operating environment.
>If a human is standing next to the arm during operation, and the arm
>starts moving without warning and hits the human, was the software incorrect?
>Was it unsafe? In this case, even with a general definition of "correctness",
>the software might very well be considered correct, but unsafe (did not have
>a warning function).

Was it unsafe?  I don't know.  It requires some human beings who know
about the situation to judge whether it was reasonable to assume that
the robot is out of reach of humans.  No mathematical proof techniques
are going to help you, there.  I think that if you mathematically prove
that program X obeys formal spec Y, then you should say, "I proved X
obeys Y", and not "I proved X is correct".  Even "I proved X correct
with respect to Y" is subject to misinterpretation, and the false sense
of security (which might lead to the robot boss telling a person to go
over there near the robot and...).

>Note that the reverse is also possible. If the software was supposed to
>command the robot arm to move, and it fails to do so, this might very
>well be incorrect, but safe.

Agreed.

- Bob




  parent reply	other threads:[~1996-05-31  0:00 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-05-17  0:00 Need help with PowerPC/Ada and realtime tasking Dave Struble
1996-05-18  0:00 ` JP Thornley
1996-05-20  0:00   ` Robert I. Eachus
1996-05-21  0:00     ` Michael Levasseur
1996-05-21  0:00   ` Richard Riehle
1996-05-25  0:00     ` JP Thornley
1996-05-27  0:00       ` Darren C Davenport
1996-05-30  0:00         ` Ralph E. Crafts
1996-05-31  0:00           ` JP Thornley
1996-06-03  0:00             ` Ken Garlington
1996-05-28  0:00       ` Tasking in safety-critical software (!) (was Re: Need help with PowerPC/Ada and realtime tasking) Kevin F. Quinn
1996-05-25  0:00     ` Need help with PowerPC/Ada and realtime tasking JP Thornley
1996-05-27  0:00       ` Robert Dewar
1996-05-28  0:00         ` JP Thornley
1996-05-29  0:00           ` Ken Garlington
1996-05-29  0:00             ` Robert A Duff
1996-05-30  0:00               ` JP Thornley
1996-05-31  0:00                 ` Ken Garlington
1996-06-02  0:00                   ` JP Thornley
1996-06-03  0:00                     ` Ken Garlington
1996-05-30  0:00               ` Software Safety (was: Need help with PowerPC/Ada and realtime tasking) Ken Garlington
1996-05-30  0:00                 ` Robert Dewar
1996-06-02  0:00                   ` JP Thornley
1996-06-03  0:00                   ` Robert A Duff
1996-06-05  0:00                     ` Norman H. Cohen
1996-06-07  0:00                       ` Ken Garlington
1996-06-12  0:00                         ` Norman H. Cohen
1996-06-12  0:00                           ` Ken Garlington
1996-06-08  0:00                       ` Robert Dewar
1996-06-08  0:00                         ` Robert A Duff
1996-05-31  0:00                 ` Robert A Duff [this message]
1996-06-03  0:00                   ` Ken Garlington
1996-05-28  0:00   ` Need help with PowerPC/Ada and realtime tasking Robert I. Eachus
1996-05-30  0:00     ` JP Thornley
1996-05-28  0:00   ` Robert I. Eachus
1996-05-30  0:00     ` JP Thornley
1996-06-03  0:00       ` Ken Garlington
1996-05-31  0:00   ` Robert I. Eachus
1996-06-03  0:00   ` Ralph Paul
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox