comp.lang.ada
 help / color / mirror / Atom feed
From: Bill Gooch <bill@iconcomp.com>
To: Alan Lovejoy <alovejoy@concentric.net>
Subject: Re: Interesting but sensitive topic to discuss (HELP: - OOP and CASE tools)
Date: 1996/11/11
Date: 1996-11-11T00:00:00+00:00	[thread overview]
Message-ID: <32875B03.3729@iconcomp.com> (raw)
In-Reply-To: 3283BB94.2D82@concentric.net


Alan Lovejoy wrote:
> 
> I think you've hit the nail on the head.  I do distinguish between "design" and "coding".
> 
> To me, the "design" of a program is a language-independent abstraction.  Implementation
> inheritance is a coding issue....

I'd like to hear more about how you think design can be done
independent of language, and what such a "design" would look
like.  I can see that the most abstract levels of design can 
be language-independent, but refinement from this level is an 
essential aspect (IMO) of doing good design.  Such refinement 
necessarily goes down through layers including language, frame-
work, database,... dependencies; in fact, it takes into account 
*all* requirements, including hardware constraints.

If you don't agree that all of this is important in producing
good designs, then I have a question: what do you call a 
program specification, not involving code, which does take
these issues into account?

I think it is impossible to progress very far from a domain 
model into design without considering target language, and
the other things I've mentioned.  A very abstract design, not
considering these issues, may be useful some of the time, but
the design one actually implements *must* consider them.
 
> Many seem to think that the class hierarchy **is** the design! ...

Well, I do not.  But there are many levels of design, and
it is important to ultimately be specific.

> The issues that a design methodology should address with respect to implementation inheritance
> would be questions such as the following:
> 
> * Just because two objects have the same behavior may or may not mean that they should
> inherit the shared behavior.  The methodology should provide the guidance needed to
> resolve this issue (is the fact that the behavior is the same simply accidental, or
> does it depend upon some reliable invariant?  How likely is it that a changed requirement
> will necessitate changing the behavior of one of the objects, but not the other?).
> 
> * When should delegation be used instead of inheritance?
> 
> * When should the Strategy pattern be used instead of inheritance?

I agree that IWBNI methods could help with these things.
I don't know of any method that even comes close, however.
This is why design remains largely a black art - not the
best situation, but it's the way things are.  I'd really
like to hear from anyone who can suggest how to address 
questions such as the ones Alan has raised here in a
method(olog)ical or systematic fashion.

> However, implementation inheritance should be treated as a refinement of the design, not
> as the body and soul of it.

From the last, I gather that in some sense, we are in
agreement.  But again, what do you call this refinement,
if it isn't another (more specific, closer to code) layer
of design?

-- 
William D. Gooch             bill@iconcomp.com
Icon Computing               http://www.iconcomp.com     
Texas liaison for the International Programmers Guild 
For IPG info, see http://www.ipgnet.com/ipghome.htm




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

Thread overview: 79+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1996-11-06  0:00 Interesting but sensitive topic to discuss (HELP: - OOP and CASE tools) Dong Oh Kim
1996-11-06  0:00 ` Paul_Gover
1996-11-06  0:00   ` Jan Steinman
1996-11-07  0:00     ` Paul_Gover
1996-11-12  0:00     ` Robert C. Martin
1996-11-12  0:00       ` Alan Lovejoy
1996-11-12  0:00       ` Snowball
1996-11-15  0:00         ` Soren Skogstad Nielsen
1996-11-28  0:00         ` Piercarlo Grandi
1996-11-28  0:00         ` Piercarlo Grandi
1996-11-06  0:00   ` Alan Lovejoy
1996-11-07  0:00     ` Piercarlo Grandi
1996-11-10  0:00       ` drs
1996-11-12  0:00         ` Piercarlo Grandi
1996-11-10  0:00       ` Vlastimil Adamovsky
1996-11-11  0:00         ` Piercarlo Grandi
1996-11-11  0:00           ` Anthony Menio
1996-11-18  0:00             ` Piercarlo Grandi
1996-11-20  0:00               ` Anthony Menio
1996-11-27  0:00                 ` Piercarlo Grandi
1996-11-12  0:00           ` Anthony Menio
1996-11-18  0:00             ` Piercarlo Grandi
1996-11-19  0:00               ` Anthony Menio
1996-11-27  0:00                 ` Piercarlo Grandi
1996-11-11  0:00       ` Daniel Drasin
1996-11-12  0:00         ` Anthony Menio
1996-11-08  0:00     ` Paul_Gover
1996-11-08  0:00       ` Ell
1996-11-08  0:00         ` Alan Lovejoy
1996-11-13  0:00           ` Ell
1996-11-08  0:00       ` Alan Lovejoy
     [not found]         ` <6KZQfjK-3RB@herold.franken.de>
1996-11-10  0:00           ` Interesting but sensitive topic to discuss (HELP: - OOP and CASE t Chris
1996-11-10  0:00             ` Vlastimil Adamovsky
1996-11-11  0:00         ` Bill Gooch [this message]
1996-11-12  0:00           ` Interesting but sensitive topic to discuss (HELP: - OOP and CASE tools) Jan Steinman
1996-11-12  0:00             ` Alan Lovejoy
1996-11-13  0:00               ` Nick Thurn
1996-11-13  0:00                 ` Alan Lovejoy
1996-11-14  0:00                   ` Nick Thurn
1996-11-12  0:00           ` Alan Lovejoy
1996-11-13  0:00             ` Nick Thurn
1996-11-13  0:00             ` Ell
1996-11-14  0:00             ` Bill Gooch
1996-11-19  0:00               ` Tim Ottinger
1996-11-10  0:00       ` vlad
1996-11-12  0:00     ` Robert C. Martin
1996-11-12  0:00       ` Alan Lovejoy
1996-11-14  0:00         ` David N. Smith
1996-11-14  0:00           ` Bill Gooch
1996-11-20  0:00         ` Robert C. Martin
1996-11-20  0:00           ` Michael Malak
1996-11-20  0:00             ` Robert Dewar
1996-11-20  0:00           ` Robert Dewar
1996-11-26  0:00           ` Tucker Taft
1996-12-03  0:00             ` Robert C. Martin
1996-12-08  0:00               ` Tucker Taft
1996-11-06  0:00   ` Snowball
1996-11-13  0:00     ` Peter Pflaum
1996-11-13  0:00       ` David N. Smith
1996-11-07  0:00 ` Interesting but sensitive topic to discuss (HELP: - OOP and CASE t Joachim Durchholz
1996-11-08  0:00   ` Richard A. O'Keefe
1996-11-09  0:00     ` Piercarlo Grandi
1996-11-13  0:00       ` Richard A. O'Keefe
1996-11-27  0:00         ` Piercarlo Grandi
1996-11-08  0:00 ` Jon S Anthony
1996-11-08  0:00 ` Alan Lovejoy
1996-11-08  0:00 ` Joachim Durchholz
1996-11-12  0:00   ` Alaric B. Williams
1996-11-13  0:00   ` Richard A. O'Keefe
1996-11-08  0:00 ` Nick Thurn
1996-11-08  0:00   ` Alan Lovejoy
1996-11-11  0:00     ` Nick Thurn
1996-11-11  0:00       ` Paul_Gover
1996-11-11  0:00         ` Interesting but sensitive topic to discuss (HELP: - OOP and CASE tools) David N. Smith
1996-11-12  0:00           ` Anthony Menio
1996-11-11  0:00         ` Interesting but sensitive topic to discuss (HELP: - OOP and CASE t Anthony Menio
1996-11-11  0:00 ` Interesting but sensitive topic to discuss (HELP: - OOP and CASE tools) Cesar A. Gonzalez Perez
1996-11-12  0:00 ` Interesting but sensitive topic to discuss (HELP: - OOP and CASE t Joachim Durchholz
1996-11-20  0:00   ` Piercarlo Grandi
replies disabled

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