From: Bertrand Meyer <Bertrand.Meyer@eiffel.com>
Subject: Re: Critique of Ariane 5 paper (finally!)
Date: 1997/08/22
Date: 1997-08-22T00:00:00+00:00 [thread overview]
Message-ID: <33FDCAF1.1CFBAE39@eiffel.com> (raw)
In-Reply-To: 33FCCC68.60B@pseserv3.fw.hac.com
W. Wesley Groleau wrote:
> what some people disagree with is the use of two definitions of
> DBC by the same advocates.
>
> Def'n 1 - Associating specifications with software elements" and
> related practices.
> Def'n 2 - The Eiffel implementation of a subset of these practices.
>
> Now before anyone denies having used definition 2, please explain
> what definition of DBC satisfies the claim "only Eiffel directly
> supports DBC"
This has been explained many times. One can to some degree
apply the principles of Design by Contract in any language,
but among commercially commercially available languages Eiffel
is the only one to offer direct support for "associating
specifications with software elements" as part of the software
elements themselves, i.e. using language constructs --
preconditions, postconditions, class invariants, loop invariants,
loop variants.
In other languages you have to resort to purely methodological
guidelines or to comment conventions etc.
It's better than nothing, but does not go as far, because
the presence of the assertion constructs provides Eiffel
users with major benefits such as:
- Documentation tools (in the supporting environments)
that extract the specification from the software.
Such tools provide a standard form of documentation
for reusable components and are essential to the success
of reusability efforts.
- Better reusable libraries (this too is a property
of the environments, made possible by the language)
thanks to their extensive
use of assertions (e.g. EiffelBase). Also,
these libraries naturally serve as models and
guides for users learning the approach, so they
indirectly lead to more reliable and clearer
application software.
- Runtime assertion monitoring (again in the
environments) providing a particularly effective
tool for testing, debugging and quality assurance.
- Language rules that associate assertions with
inheritance: precondition weakening and postcondition
strengthening in routine redefinitions, invariant
accumulation (a class inherits its parents'
integrity constraints). This is essential to
control the power of polymorphism and dynamic
binding, further decreasing bug sources.
- Close connection with the exception handling
mechanism.
- Simplification of the software's structure, since
supplier classes can avoid redundant checking
of special cases in the presence of preconditions.
- General improvements in software quality: having
a construct in the language itself encourages
developers to use it -- especially, as noted, thanks to
the influence of reusable components --, more so than
a purely methodological injunction to "be good"
and specify. In other words, use of Eiffel
helps promote a quality-oriented and
reliability-conscious mindset. This is a less
directly palpable benefit (and please do not
construe it as a claim that "Eiffel users make
no errors", no one ever said that) but significant
all the same.
Most of this is unique to Eiffel among widely used commercial
languages. Again it does not mean that you cannot get any benefit
of Design by Contract in other languages; you can (especially
if you have used Eiffel before: many people have noted that
you can become a better C++ programmer, for example, if you have
been trained in Eiffel; see e.g the educators' testimonials at
http://www.eiffel.com/services/university/). But you will
get much more in Eiffel.
--
Bertrand Meyer, President, ISE Inc.
ISE Building, 2nd floor, 270 Storke Road, Goleta CA 93117
805-685-1006, fax 805-685-6869, <Bertrand.Meyer@eiffel.com>
http://www.eiffel.com, with download instructions
next prev parent reply other threads:[~1997-08-22 0:00 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
1997-08-03 0:00 Critique of Ariane 5 paper (finally!) Ken Garlington
[not found] ` <dewar.870870888@merv>
[not found] ` <33E8FC54.41C67EA6@eiffel.com>
1997-08-07 0:00 ` Ken Garlington
1997-08-07 0:00 ` Ken Garlington
[not found] ` <33EB4935.167EB0E7@eiffel.com>
1997-08-08 0:00 ` Bertrand Meyer
1997-08-08 0:00 ` Ken Garlington
1997-08-08 0:00 ` Ken Garlington
1997-08-11 0:00 ` Don Harrison
1997-08-11 0:00 ` Bertrand Meyer
1997-08-12 0:00 ` Robert Dewar
1997-08-13 0:00 ` Samuel Mize
1997-08-13 0:00 ` Ken Garlington
[not found] ` <33F22AD8.41C67EA6@eiffel.com>
1997-08-13 0:00 ` Bertrand Meyer
1997-08-13 0:00 ` Ken Garlington
[not found] ` <33F28DBF.794BDF32@eiffel.com>
1997-08-13 0:00 ` Bertrand Meyer
1997-08-15 0:00 ` Ken Garlington
1997-08-15 0:00 ` Jon S Anthony
1997-08-16 0:00 ` Ken Garlington
1997-08-14 0:00 ` Robert S. White
1997-08-15 0:00 ` Ken Garlington
1997-08-16 0:00 ` Robert Dewar
1997-08-14 0:00 ` Samuel Mize
1997-08-15 0:00 ` Thomas Beale
1997-08-15 0:00 ` Samuel Mize
1997-08-15 0:00 ` Bertrand Meyer
1997-08-15 0:00 ` Jon S Anthony
1997-08-16 0:00 ` Ken Garlington
1997-08-14 0:00 ` Jon S Anthony
1997-08-14 0:00 ` Bertrand Meyer
1997-08-15 0:00 ` Jon S Anthony
1997-08-14 0:00 ` Matthew Heaney
1997-08-14 0:00 ` geldridg
1997-08-13 0:00 ` Bertrand Meyer
1997-08-13 0:00 ` Ken Garlington
1997-08-16 0:00 ` Robert Dewar
1997-08-17 0:00 ` Bertrand Meyer
1997-08-19 0:00 ` Ken Garlington
1997-08-20 0:00 ` Robert Dewar
1997-08-21 0:00 ` Thomas Beale
1997-08-21 0:00 ` Robert Dewar
[not found] ` <33FD8685.AAAE3B4F@stratasys.com>
1997-08-22 0:00 ` Robert Dewar
[not found] ` <3401811D.1700E7BE@stratasys.com>
1997-08-25 0:00 ` Jon S Anthony
1997-08-29 0:00 ` Ken Garlington
1997-08-29 0:00 ` Jeff Kotula
1997-09-02 0:00 ` Ken Garlington
[not found] ` <33FE8732.4FBB@invest.amp.com.au>
1997-08-26 0:00 ` Nick Leaton
[not found] ` <33FFA324.4DB9@flash.net>
[not found] ` <34013F3E.27D4@invest.amp.com.au>
1997-08-29 0:00 ` Ken Garlington
1997-08-23 0:00 ` Ken Garlington
1997-08-20 0:00 ` Robert Dewar
[not found] ` <33FB3B29.41C67EA6@eiffel.com>
1997-08-20 0:00 ` Bertrand Meyer
[not found] ` <5tv9cs$85q@nntpa.cb.lucent.com>
[not found] ` <340341CA.2F1CF0FB@eiffel.com>
1997-08-27 0:00 ` Samuel Mize
1997-08-29 0:00 ` Ken Garlington
1997-08-21 0:00 ` W. Wesley Groleau x4923
1997-08-22 0:00 ` Bertrand Meyer [this message]
1997-08-22 0:00 ` W. Wesley Groleau x4923
1997-08-16 0:00 ` Robert Dewar
1997-08-09 0:00 ` Marinos J. Yannikos
1997-08-07 0:00 ` Juergen Schlegelmilch
-- strict thread matches above, loose matches on Subject: below --
1997-08-21 0:00 aek
[not found] ` <33FC66AD.9A0799D4@calfp.co.uk>
1997-08-22 0:00 ` Robert S. White
1997-08-22 0:00 ` Samuel Mize
1997-08-22 0:00 ` Samuel Mize
1997-08-23 0:00 ` Ken Garlington
[not found] ` <33FFA4B1.3543@flash.net>
1997-08-26 0:00 ` Nick Leaton
[not found] ` <3406BEF7.2FC3@flash.net>
[not found] ` <3406E0F7.6FF7ED99@calfp.co.uk>
1997-09-02 0:00 ` Ken Garlington
1997-08-22 0:00 Critique of Ariane 5 paper (finally) AdaWorks
1997-08-22 0:00 Critique of Ariane 5 paper (finally!) Marin David Condic, 561.796.8997, M/S 731-96
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox