comp.lang.ada
 help / color / mirror / Atom feed
* Re: The stupidity of all the Ariane 5 analysts.
@ 1997-08-18  0:00 Joerg Rieling
  1997-08-19  0:00 ` Robert S. White
  0 siblings, 1 reply; 26+ messages in thread
From: Joerg Rieling @ 1997-08-18  0:00 UTC (permalink / raw)



hi all,

ok, i perfectly agree with some of the points you made concerning
inherent robustness etc etc etc.

but, a minimum requirement for any software is to test it under
sufficiently realistic conditions, isn't it ?   if the responsible
software engineers would have fed _simulated_ data containing some
information about the trajectory into their programs, they could
(would) have found the  bug, d'accord ?
sometimes experimental programming is not the worst choice ...

bye

j"org.

--
<---->


(- PGP key available.-)





^ permalink raw reply	[flat|nested] 26+ messages in thread
* Re: The stupidity of all the Ariane 5 analysts.
@ 1997-08-19  0:00 Marin David Condic, 561.796.8997, M/S 731-96
  0 siblings, 0 replies; 26+ messages in thread
From: Marin David Condic, 561.796.8997, M/S 731-96 @ 1997-08-19  0:00 UTC (permalink / raw)



Joerg Rieling <joerg@HERA-B.DESY.DE> writes:
>but, a minimum requirement for any software is to test it under
>sufficiently realistic conditions, isn't it ?   if the responsible
>software engineers would have fed _simulated_ data containing some
>information about the trajectory into their programs, they could
>(would) have found the  bug, d'accord ?
>sometimes experimental programming is not the worst choice ...
>
    This is exactly the point that has so many people torqued off
    about the whole debate. (Especially those of us who actually build
    this sort of software for a living.) The claim seems to be on the
    table that a) Existing software development practices are
    insufficient for developing safe software and b) the only way to
    be sure that you don't blow up a rocket is to use Design By
    Contract as exemplified by Eiffel.

    The problem is - as those of us in the business know - existing
    practices, HAD THEY BEEN FOLLOWED, would have caught the problem.
    (Your example of testing the software across the expected flight
    envelope.) So would lots of other existing practices. The problem
    is that the human beings in charge of the process didn't follow
    the usual and customary procedures (probably under cost and
    schedule pressure). Hence, no technology would likely have helped
    keep them out of the Gulag they are now most likely consigned to.
    (It's sad too for those of us who have ever experienced the "Hurry
    up and get it done no matter what the risk..." pressure that can
    be brought onto a project.)

    DBC and Assertions, in my not so humble opinion, would have proven
    to make no significant difference in the situation. DBC is a kind
    of process and apparently the people in charge were into
    circumventing processes. So DBC could have as easily been
    circumvented for the same reasons as they circumvented existing,
    industry accepted and used processes. (which, IMNSHO, would
    probably have caught the problem had they been followed.) If you
    walk a tightrope without a net often enough, eventually you'll
    splat up against the pavement.

    Assertions are just another kind of runtime check which - although
    useful - would probably have made no difference either. The reason
    being that the existing checks were disabled (for good reason)
    and so assertions would also have been disabled. Disabled checks
    don't change anything. The notion that they would have served as
    documentation implies some kind of review/testing and go back to
    the above paragraph on DBC. They had already circumvented that
    part of the game, so forget that argument.

    The seriously flawed notion that the runtime checks be turned
    on during testing and then disabled for production only displays
    lack of knowledge of how flight qualified software is really
    built. Nobody is going to go through any sort of serious
    verification of a software package only to allow you to change
    some of the bits afterwards and claim "well, it's really the same
    thing so let's go fly with it..." That might be O.K. for testing
    something like Microsoft Word, but it will never pass muster for
    safety critical software. Hence, you run with them in or you run
    with them out. Running with them in might have done something to
    save the day - but then so would the existing range checks that
    were taken out.

    MDC




^ permalink raw reply	[flat|nested] 26+ messages in thread
* Re: Safety-critical development in Ada and Eiffel
@ 1997-07-12  0:00 Ken Garlington
  1997-07-15  0:00 ` Don Harrison
  0 siblings, 1 reply; 26+ messages in thread
From: Ken Garlington @ 1997-07-12  0:00 UTC (permalink / raw)



Don Harrison wrote:
> 
> If even this small overhead is unacceptable, you can force static binding
> where necessary by freezing routines.
> Although you forgo the flexibility of
> polymorphism, you can still take advantage of inheritance by virtue of Eiffel
> synonyms - these allow you to declare a routine under different names.

But I can do this in Ada, as well, so I don't see the benefit.

 :Does this "pre-allocated memory pool" mean that you will know exactly
> :what address
> :each object's data will reside at, or merely that you dynamically
> :allocate memory
> :at initialization and do not dynamically allocate after initialization
> :is complete?
> 
> The latter. You don't actually need to know *where* objects are allocated,
> merely that there is sufficient memory to allocate them.

Actually, in my systems, I do need to know where they are allocated, so
that
I can examine them from the hideously crude display in the cockpit
during
troubleshooting.

> Maybe general assertions are more common than you imagine. However, I agree
> that range constraints are roughly covered by Ada subtypes. I use them liberally
> for just that purpose.

Maybe, but again, I would like to see how these complex assertions are
used. Again,
the code I've seen to date doesn't seem to use them that much.

> Correct me I misunderstand you.. Are you wondering whether contracting
> helps you to identify more bugs? I can offer my own experience which has
> firmly convinced me of this.

Contracting definitely identifies more bugs. However, my concern with
Eiffel
assertions (and Ada assertions, for that matter) is that, once raised,
it's
not always clear what to do about them. In a safety-critical system such
as
we build, you can't just generate a core dump, or ask the user what to
do next.
You have to generate a correct response to the assertion failure, and
you have
to do it very quickly. Static assertion checks, of course, can be
detected and
corrected during development, which is why I like Ada's strong static
type checking.

There is a school of thought that says to add in assertions, test the
system, and
then remove/suppress the exceptions. I have seen too many cases of code
that works
with the assertions active, and then breaks (due to timing differences,
or more
likely code generation errors) to have much confidence in this approach.

Another consequence of using assertions is that you have to develop and
test the
assertions. As a result, you need confidence that the benefits of the
assertions
outweigh the dilution of your test effort. One of the advantages of
Ada's simpler
approach (at least, it seems simpler to me) to simple
pre/post-conditions (range
checks in particular) is that the cost of adding them is somewhat
reduced. However,
in both languages, overuse of assertions may be just as bad as underuse.

(As you can tell, I'm somewhat of an assertions heretic. However, I will
say that
for non-real-time, non-safety-critical systems, they are outstanding. My
tool code
is lousy with them.)

> Consequently, when we (a team of 5) recently
> reached the end of a 5 month long development effort of incremental coding
> and integration testing, the parts of the system that used contracting work
> flawlessly apart from problems resulting from misinterpretation of requirements.

Most of the problems we see in formal testing are from misinterpretation
of
requirements - which is another issue I have with assertions as a magic
safety wand.
Of course, Bertand Meyer's Eiffel website insists that even
misinterpretation of
requirements (Ariane V) will be a problem no longer when Eiffel is used!
:)




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

end of thread, other threads:[~1997-08-19  0:00 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1997-08-18  0:00 The stupidity of all the Ariane 5 analysts Joerg Rieling
1997-08-19  0:00 ` Robert S. White
  -- strict thread matches above, loose matches on Subject: below --
1997-08-19  0:00 Marin David Condic, 561.796.8997, M/S 731-96
1997-07-12  0:00 Safety-critical development in Ada and Eiffel Ken Garlington
1997-07-15  0:00 ` Don Harrison
1997-07-15  0:00   ` Ken Garlington
1997-07-16  0:00     ` Jean-Marc Jezequel
1997-07-16  0:00       ` Ken Garlington
1997-07-17  0:00         ` The stupidity of all the Ariane 5 analysts Thaddeus L. Olczyk
     [not found]           ` <33CEAF05.6389@flash.net>
1997-07-20  0:00             ` Bertrand Meyer
1997-07-21  0:00               ` Ken Garlington
1997-07-31  0:00                 ` Al Christians
1997-08-01  0:00                   ` "Paul E. Bennett"
1997-08-01  0:00                     ` Ken Garlington
1997-07-21  0:00               ` Ian Begg
1997-07-21  0:00               ` Robert S. White
1997-07-21  0:00                 ` Robert Dewar
1997-07-21  0:00                 ` Ken Garlington
1997-07-23  0:00                   ` Robert S. White
1997-07-23  0:00                     ` Robert Dewar
1997-07-24  0:00                       ` Ken Garlington
1997-07-29  0:00                       ` Shmuel (Seymour J.) Metz
1997-07-31  0:00                         ` Robert Dewar
1997-08-01  0:00                           ` Shmuel (Seymour J.) Metz
1997-08-04  0:00                           ` Larry Kilgallen
1997-08-08  0:00                         ` Don Harrison
1997-08-11  0:00                           ` Shmuel (Seymour J.) Metz
1997-07-23  0:00                     ` Ken Garlington
1997-07-25  0:00                       ` Robert S. White
1997-07-22  0:00                 ` W. Wesley Groleau x4923
1997-07-23  0:00               ` Joerg Rodemann

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