comp.lang.ada
 help / color / mirror / Atom feed
* Ariane 5 - not an exception?
@ 1996-07-25  0:00 Simon Bluck
  1996-07-25  0:00 ` Multiple reasons for failure of Ariane 5 (was: Re: Ariane 5 - not an exception?) Kirk Beitz
                   ` (6 more replies)
  0 siblings, 7 replies; 192+ messages in thread
From: Simon Bluck @ 1996-07-25  0:00 UTC (permalink / raw)



The Ariane 501 flight failure was due to the raising of an unexpected
Ada exception, which was handled by switching off the computer.  The
report on this:

   http://www.esrin.esa.it/htdocs/tidc/Press/Press96/ariane5rep.html

is clear and hard-hitting: it will result in much improved software.
But does it get right to the bottom of the issues, and does the
software community appreciate that there are fundamental software
control problems which can directly give rise to such enormous
failures, in this particular case thankfully without loss of life?

It is most unfortunate, but must be accepted as true, that if the
Ariane software had been written in a less powerful language the
numeric overflow might have gone unnoticed, the computers would have
remained switched on, and the rocket would have continued its upward
flight.

Exceptions and assertions are both used, in Ada and C/C++, to detect
software/hardware anomalies.  When one of these trips, it is
frequently very difficult for the designer to know how best to handle
the problem.  To continue may result in corrupt data; to abort is
drastic but eliminates the possibility that further processing will
compound the problem.

The more checks you have, the more likely it is that one of them will
trip.  If you can't think of good ways of handling these checks, the
end result, for the user, may well be very much worse than if the
check had never been performed in the first place.

Of the two handling options, neither is really acceptable.  However,
there is a third option which ought to be considered: to continue but
mark the processed data as suspect.

I.e. each data item would have a truth value of 1.0 for good data,
0.0 for absolutely rotten data, utilising values in between if you
have some idea how good the data is.  If you have numeric overflow,
you could set the data to the largest value available, and mark it as
suspect.

Any data further derived from suspect data must also be marked as
suspect.

Taking a probabilistic attitude to data would bring a lot of software
into the real world where failures can happen at all levels.  Using
this approach would made complex mission-critical software like the
failing Ariane software much easier to understand and control.  Data
would be processed along the same path regardless of whether it is
suspect or entirely valid.  Only the end-users of the data would be
affected, and where duplication of systems provides redundancy, the
algorithm would be to switch to the backup on receiving suspect data,
and switch back to the main source if the backup was suspect.  If
both sources are suspect, then take the least suspect source.  This
is simple and you don't lose your vital input data.  The data truth
values would be passed on from system to system along with the data.

You _never_ switch off a computer, but you may have cause to mark all
data emanating from it as suspect.  Leave it up to the users of the
data to decide if they want to use it or not - they may have no
choice.


Along with the data truth attribute, you need a data type attribute.
This is tending to be relatively standard stuff now that objects are
around and need to know what kind of object they are.  But adding a
data type field is still something that designers skimp on if not
supplied by the language, relying instead on implicit coding of type
information in the senders and receivers of data.

Lack of type information accounts for why the Ariane flight control
was able to interpret diagnostic data as attitude data, virtually
guaranteeing catastrophic failure.  At least if attitude data had
been cut short it could have continued in a straight line.


Well, those are what I think are the important lessons to be learned.
The main reasons cited for Ariane 501's failure are typical human
ones which will be made again on the next big project.  I.e.
inadequate testing, particularly of the complete system in its
(simulated) environment.  Surprise, surprise, this turns out to be
too difficult and too costly to achieve thoroughly.  And small system
mistakes which stress the adequate functioning of the system as a
whole (like thinking that the Ariane 4 alignment process didn't need
changing for Ariane 5).  These will happen time and again, we're only
human.  But with more realistic data processing the system as a whole
would stand a better chance of survival.

SimonB

[All my own opinions, of course.]





^ permalink raw reply	[flat|nested] 192+ messages in thread
* Re: Ada versus PL/I (was: Re: Ariane 5 - not an exception?)
@ 1996-09-04  0:00 Marin David Condic, 407.796.8997, M/S 731-93
  0 siblings, 0 replies; 192+ messages in thread
From: Marin David Condic, 407.796.8997, M/S 731-93 @ 1996-09-04  0:00 UTC (permalink / raw)



++ robin <rav@GOANNA.CS.RMIT.EDU.AU> writes:
>        >>      >  On the other hand, I would rather see people using PL/I for
>        >>      >  a serious project than C.  And I have heard there is an effo
>        >>      >  to release an Object-oriented version of PL/I in the near
>        >>      >  future.  That might actually make PL/I a viable alternative
>        >>      >  to C++.
>        >>
>        >> ---It already is.
>
>        >  Not unless if does not explicitly support object-oriented
>        >  programming.  And OOP kludges do not count.
>
>---we'll have to agree to disagree on that.
>
    If by this you mean that PL/I is alread a viable alternative to
    C++, you may be right. If you mean that OOP can be done in PL/I
    without the usual requisite encapsulation, polymorphism,
    inheritance, and other popular buzzwords and that this makes PL/I
    "object oriented" then there's a problem: By that standard, you
    could call an assembly language "object oriented" - in which case
    the term doesn't mean much.

    Object Oriented Programming can be done in any language - this is
    true. But that hardly makes PL/I (or Basic, or assembly language,
    or whatever) a good, or even adequate choice in which to do so.
    Heck! Even Ada83 was a pretty weak choice for OOP given that you
    had to pull some pretty ugly stunts to get some of those buzzwords
    to work as intended.

    MDC

Marin David Condic, Senior Computer Engineer    ATT:        407.796.8997
M/S 731-96                                      Technet:    796.8997
Pratt & Whitney, GESP                           Fax:        407.796.4669
P.O. Box 109600                                 Internet:   CONDICMA@PWFL.COM
West Palm Beach, FL 33410-9600                  Internet:   CONDIC@FLINET.COM
===============================================================================
    "That which belongs to another."

        --  Diogenes, when asked what wine he liked to drink.
===============================================================================




^ permalink raw reply	[flat|nested] 192+ messages in thread
* Re: Ada versus PL/I (was: Re: Ariane 5 - not an exception?)
@ 1996-09-04  0:00 Marin David Condic, 407.796.8997, M/S 731-93
  1996-09-06  0:00 ` Robert I. Eachus
  0 siblings, 1 reply; 192+ messages in thread
From: Marin David Condic, 407.796.8997, M/S 731-93 @ 1996-09-04  0:00 UTC (permalink / raw)



++ robin <rav@GOANNA.CS.RMIT.EDU.AU> writes:
>        >> ---Not really, when people have to ask how to do
>        >> a square root [in Ada].
>
>        >  No serious Ada programmer has to ask such a question.
>
>---In Fortran, BASIC, Pascal, Algol, PL/I, you just
>use it [SQRT].  Nothing special needed.
>
    I don't speak PL/I. Is the name of the function for computing a
    square root named SQRT, sqrt (case sensitive), SQT, SQUARE_ROOT,
    etc.? And what parameter(s) does it take? Real? Double Precision?
    Integer? Complex? All of the above? Are they passed by value, or
    do I have to get a pointer to the parameters? And what's the
    calling syntax, anyway? Some version of assignment from a function
    or a procedure with an input and an output parameter? Is the SQRT
    function a "language primitive" or does it live in the PL/I
    equivalent of a #include file? And when you get the PL/I manual
    out, is it emblazoned in bold-faced, 72 point type on Page 1 that
    the function is called <whatever> and is used in <whatever>
    manner? Boy, this PL/I language must _REALLY SUCK_ because it's
    not intuitively obvious to even the most casual observer how to
    compute a square root and I'm obviously a victim of bad language
    design - not simply too stoopit to R.T.F.M.

    In *ANY* language, you can whine about the syntax of this or that
    feature being "less convenient" than in some other language. I'll
    bet some Apl programmers think that PL/I _SUCKS_ because the
    commands are so bleeding long in comparison to what they're used
    to? I'll bet there are Basic programmers who hate that you
    actually have to declare variables in PL/I (I presume) instead of
    simply making them up as you go along? And the fact that you have
    to R.T.F.M. before you can use PL/I (or any language) is hardly a
    sign of bad language design.

    Get over it! Find something *real* to criticize about Ada95.

    MDC

Marin David Condic, Senior Computer Engineer    ATT:        407.796.8997
M/S 731-96                                      Technet:    796.8997
Pratt & Whitney, GESP                           Fax:        407.796.4669
P.O. Box 109600                                 Internet:   CONDICMA@PWFL.COM
West Palm Beach, FL 33410-9600                  Internet:   CONDIC@FLINET.COM
===============================================================================
    "That which belongs to another."

        --  Diogenes, when asked what wine he liked to drink.
===============================================================================




^ permalink raw reply	[flat|nested] 192+ messages in thread
* Re: Ada versus PL/I (was: Re: Ariane 5 - not an exception?)
@ 1996-09-05  0:00 Marin David Condic, 407.796.8997, M/S 731-93
  0 siblings, 0 replies; 192+ messages in thread
From: Marin David Condic, 407.796.8997, M/S 731-93 @ 1996-09-05  0:00 UTC (permalink / raw)



"J. Kanze" <kanze@GABI-SOFT.FR> writes:
>> ---In Fortran, BASIC, Pascal, Algol, PL/I, Turbo C, you just
>> use it [SQRT].  Nothing special needed.
>
>This isn't true for C (and thus Turbo C), of course.  You have to
>include math.h.  While it is a built in in older lanugages like Fortran
>or Basic, most modern languages will require a declaration for the
>function somewhere.  (I'm tempted to say that a language that doesn't
>require a declaration for a function is somewhat deficient, but SQRT is
>a special case.)
>
    Well here's a point that ought to be considered before deciding if
    SQRT should be intrinsic or declared somewhere:

    Ada was (and still is) intended to serve the needs of embedded
    programming. (Yes! yes! yes! You can *still* use it to print
    paychecks and it works just fine!) In embedded systems, you are
    frequently limited in the amount of memory you have available and
    so you don't like to drag along lots of extra functions &
    procedures which will never be called. I've built or seen *LOTS* of
    embedded software which *NEVER* does any arithmetic more
    complicated than +, -, * and /. Hence you'd like to exclude things
    like SQRT, LOG, SIN, etc. as well as any other code that might be
    "intrinsic" in some other language. Making those routines live in
    a "with'ed" package has got to make this job a lot easier.

    I'm not really up on the latest "Linker" theory, but I'd be
    willing to bet that it is a lot simpler to never include an unused
    math package than it is to get a linker to find unused "intrinsic"
    functions built into the RTK and remove them as "dead code".
    Perhaps someone out there a little bit smarter than me can shed
    some light on it? Is it theoretically possible for a linker to
    find *all* unused code and eliminate it? Are most language
    compiler/linker combinations in use today going through
    appropriate gyrations to do this? (A plausible argument for not
    building packages with a bazillion functions in them?)

    MDC

Marin David Condic, Senior Computer Engineer    ATT:        407.796.8997
M/S 731-96                                      Technet:    796.8997
Pratt & Whitney, GESP                           Fax:        407.796.4669
P.O. Box 109600                                 Internet:   CONDICMA@PWFL.COM
West Palm Beach, FL 33410-9600                  Internet:   CONDIC@FLINET.COM
===============================================================================
    "Thanks to the Interstate Highway System, it is now possible
    to travel across the country from coast to coast without
    seeing anything."

        --  Charles Kuralt
===============================================================================




^ permalink raw reply	[flat|nested] 192+ messages in thread

end of thread, other threads:[~1996-09-20  0:00 UTC | newest]

Thread overview: 192+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1996-07-25  0:00 Ariane 5 - not an exception? Simon Bluck
1996-07-25  0:00 ` Multiple reasons for failure of Ariane 5 (was: Re: Ariane 5 - not an exception?) Kirk Beitz
1996-07-26  0:00   ` Robert I. Eachus
1996-07-26  0:00   ` ++           robin
1996-08-05  0:00     ` Darren C Davenport
1996-08-06  0:00       ` U32872
1996-08-07  0:00         ` Robert Dewar
1996-08-08  0:00           ` Pascal Martin @lone
1996-08-09  0:00             ` Robert Dewar
1996-08-10  0:00               ` dwnoon
1996-08-11  0:00                 ` Robert Dewar
1996-08-15  0:00                   ` dwnoon
1996-08-16  0:00                     ` Robert Dewar
1996-08-20  0:00                       ` dwnoon
1996-08-12  0:00                 ` Ken Garlington
1996-08-15  0:00                 ` Richard Riehle
1996-08-22  0:00                   ` ++           robin
1996-08-23  0:00                     ` Ken Garlington
1996-08-31  0:00                     ` Ada versus PL/I " Richard Riehle
1996-09-02  0:00                       ` ++           robin
1996-09-02  0:00                         ` Richard A. O'Keefe
1996-09-03  0:00                           ` ++           robin
1996-09-03  0:00                             ` Robb Nebbe
1996-09-17  0:00                             ` shmuel
1996-09-17  0:00                               ` Jay McFadyen
1996-09-18  0:00                                 ` John McCabe
1996-09-20  0:00                               ` shmuel
1996-09-03  0:00                       ` J. Kanze
1996-09-07  0:00                         ` Robert Dewar
1996-09-09  0:00                           ` ++           robin
1996-09-09  0:00                             ` Robert Dewar
1996-09-09  0:00                               ` Ken Garlington
1996-09-03  0:00                       ` ++           robin
1996-09-04  0:00                         ` Robert Dewar
1996-09-07  0:00                           ` ++           robin
1996-09-06  0:00                             ` PL/I or PL/1 Larry Hazel
1996-09-11  0:00                     ` Multiple reasons for failure of Ariane 5 (was: Re: Ariane 5 - not an exception?) J.Worringen
1996-09-12  0:00                       ` Ken Garlington
1996-09-14  0:00                       ` David Alex Lamb
1996-09-14  0:00                       ` Use DejaNews to retrieve Ariane discussion David Alex Lamb
1996-09-19  0:00                         ` Earl H. Kinmonth
1996-08-11  0:00               ` Multiple reasons for failure of Ariane 5 (was: Re: Ariane 5 - not an exception?) ++           robin
     [not found]               ` <4uibvh$References: <Dv45EJ.8r@fsa.bris.ac.uk>
1996-08-16  0:00                 ` A. Grant
1996-08-08  0:00         ` bohn
1996-08-23  0:00   ` Jon S Anthony
1996-08-26  0:00     ` ++           robin
1996-08-23  0:00   ` Jon S Anthony
1996-08-23  0:00     ` ++           robin
1996-08-23  0:00       ` Richard A. O'Keefe
1996-08-23  0:00         ` Ken Garlington
1996-08-26  0:00         ` ++           robin
1996-08-27  0:00           ` Ken Garlington
1996-08-28  0:00             ` Larry Kilgallen
1996-08-29  0:00               ` Ken Garlington
1996-08-30  0:00             ` ++           robin
1996-08-30  0:00               ` David Weller
1996-09-04  0:00               ` Ken Garlington
1996-09-06  0:00                 ` Sandy McPherson
1996-09-09  0:00                   ` Ken Garlington
1996-08-30  0:00         ` Jon S Anthony
1996-08-26  0:00       ` Ken Garlington
1996-08-26  0:00         ` Dave Jones
1996-08-27  0:00           ` Ken Garlington
1996-08-30  0:00             ` ++           robin
1996-09-04  0:00               ` Ken Garlington
1996-09-06  0:00                 ` ++           robin
1996-09-18  0:00               ` Merlin Dorfman
1996-09-20  0:00                 ` John McCabe
1996-08-30  0:00         ` ++           robin
1996-08-30  0:00           ` John McCabe
1996-09-06  0:00       ` Jon S Anthony
1996-09-06  0:00         ` Robert Dewar
1996-07-26  0:00 ` Ariane 5 - not an exception? Bob Gilbert
1996-07-29  0:00   ` Martin Tom Brown
1996-07-30  0:00     ` John McCabe
1996-07-31  0:00       ` Greg Bond
1996-08-03  0:00         ` John McCabe
1996-07-26  0:00 ` ++           robin
1996-07-29  0:00   ` Bill Angel
1996-07-29  0:00     ` Paul_Green
1996-07-30  0:00     ` Ken Garlington
1996-07-30  0:00     ` Lloyd Fischer
1996-07-30  0:00     ` Bob Kurtz
1996-07-30  0:00     ` Richard Shetron
1996-07-30  0:00       ` ++           robin
1996-07-30  0:00     ` Nancy Mead
1996-07-31  0:00       ` Steve O'Neill
1996-07-31  0:00       ` Tucker Taft
1996-08-01  0:00       ` root
1996-08-01  0:00         ` Tucker Taft
1996-08-04  0:00     ` Richard Riehle
1996-08-05  0:00       ` Nigel Tzeng
1996-08-06  0:00         ` John McCabe
1996-08-05  0:00       ` John McCabe
1996-08-05  0:00       ` Fergus Henderson
1996-08-13  0:00       ` ++           robin
1996-08-13  0:00         ` Ken Garlington
1996-08-13  0:00           ` Kirk Bradley
1996-08-14  0:00             ` Ken Garlington
1996-08-18  0:00           ` PL/I Versus Ada (Was: Arianne ...) Richard Riehle
1996-08-19  0:00             ` Robert Dewar
1996-08-20  0:00             ` Lon Amick
1996-08-21  0:00             ` Lon D. Gowen, Ph.D.
1996-08-21  0:00             ` Tony Konashenok
1996-08-28  0:00               ` Richard Riehle
1996-08-29  0:00                 ` Lon D. Gowen, Ph.D.
1996-08-30  0:00                   ` Tony Konashenok
1996-08-30  0:00                     ` Adam Beneschan
1996-08-30  0:00                 ` John McCabe
1996-08-21  0:00             ` Tim Dugan
1996-08-23  0:00             ` arbuckj
1996-08-22  0:00           ` Ariane 5 - not an exception? ++           robin
1996-08-22  0:00             ` Ken Garlington
1996-08-13  0:00         ` Darren C Davenport
1996-08-14  0:00         ` John McCabe
1996-08-19  0:00           ` Chris Papademetrious
1996-08-22  0:00           ` ++           robin
1996-08-22  0:00             ` John McCabe
1996-08-23  0:00               ` Ken Garlington
1996-08-24  0:00                 ` John McCabe
1996-08-26  0:00                   ` Byron B. Kauffman
1996-08-27  0:00                     ` John McCabe
1996-08-28  0:00                       ` Byron B. Kauffman
1996-08-28  0:00                         ` Robert Dewar
1996-08-29  0:00                           ` Ted Dennison
1996-08-30  0:00                         ` John McCabe
1996-08-22  0:00             ` Martin Tom Brown
1996-08-23  0:00             ` Bob Gilbert
1996-08-24  0:00               ` Robert I. Eachus
1996-08-25  0:00                 ` John McCabe
1996-08-27  0:00                 ` Tom Speer
1996-08-26  0:00               ` Jon S Anthony
1996-08-20  0:00         ` Richard Riehle
1996-07-30  0:00   ` Ken Garlington
1996-08-02  0:00     ` Craig P. Beyers
1996-07-30  0:00   ` Steve O'Neill
1996-07-31  0:00     ` Martin Tom Brown
1996-07-31  0:00       ` Nigel Tzeng
1996-08-02  0:00       ` Ken Garlington
1996-08-03  0:00         ` Thomas Kendelbacher
1996-08-01  0:00     ` ++           robin
1996-08-01  0:00       ` Ken Garlington
1996-08-05  0:00         ` John McCabe
1996-08-06  0:00           ` Mark van Walraven
1996-08-06  0:00           ` Ken Garlington
1996-08-06  0:00           ` Ken Garlington
1996-08-02  0:00       ` Pascal Martin @lone
1996-08-03  0:00         ` Dr. Richard Botting
1996-08-05  0:00           ` system
1996-08-06  0:00         ` ++           robin
1996-08-08  0:00           ` Darius Blasband
1996-08-10  0:00             ` dwnoon
1996-08-12  0:00               ` Thomas Kendelbacher
1996-08-13  0:00                 ` ++           robin
1996-08-13  0:00             ` Roy Gardiner
1996-08-13  0:00               ` Ken Garlington
1996-08-13  0:00               ` Lance Kibblewhite
1996-08-13  0:00             ` ++           robin
1996-08-15  0:00             ` Richard Riehle
1996-08-05  0:00       ` Steve O'Neill
1996-08-06  0:00         ` Frank Manning
1996-08-08  0:00           ` Steve O'Neill
1996-08-09  0:00             ` Pat Rogers
1996-08-09  0:00           ` JP Thornley
1996-08-06  0:00         ` Francis Lipski
1996-08-07  0:00           ` Martin Tom Brown
1996-08-09  0:00             ` Ken Garlington
1996-08-13  0:00         ` ++           robin
1996-08-13  0:00           ` Steve O'Neill
1996-08-01  0:00   ` Jon S Anthony
1996-08-02  0:00   ` James Kanze US/ESC 60/3/141 #40763
1996-08-06  0:00   ` Stefan 'Stetson' Skoglund
1996-08-06  0:00   ` Robert I. Eachus
1996-07-26  0:00 ` JP Thornley
1996-07-29  0:00   ` JP Thornley
1996-07-29  0:00   ` Nigel Tzeng
1996-07-29  0:00   ` Ken Garlington
1996-07-30  0:00   ` Robert I. Eachus
1996-07-31  0:00     ` JP Thornley
1996-08-01  0:00       ` Alan Brain
1996-08-02  0:00         ` JP Thornley
1996-08-01  0:00   ` Ken Garlington
1996-07-26  0:00 ` Theodore E. Dennison
1996-07-29  0:00   ` Ken Garlington
1996-07-27  0:00 ` Bill Angel
1996-07-30  0:00 ` Dr. Richard Botting
1996-07-30  0:00   ` David Weller
1996-07-30  0:00     ` Robert Dewar
  -- strict thread matches above, loose matches on Subject: below --
1996-09-04  0:00 Ada versus PL/I (was: Re: Ariane 5 - not an exception?) Marin David Condic, 407.796.8997, M/S 731-93
1996-09-04  0:00 Marin David Condic, 407.796.8997, M/S 731-93
1996-09-06  0:00 ` Robert I. Eachus
1996-09-05  0:00 Marin David Condic, 407.796.8997, M/S 731-93

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