comp.lang.ada
 help / color / mirror / Atom feed
From: Alan Lovejoy <alovejoy@concentric.net>
Subject: Re: Interesting but sensitive topic to discuss (HELP: - OOP and CASE tools)
Date: 1996/11/12
Date: 1996-11-12T00:00:00+00:00	[thread overview]
Message-ID: <32891BA4.4AA5@concentric.net> (raw)
In-Reply-To: rmartin-1211961144000001@vh1-004.wwa.com


Robert C. Martin wrote:
> 
> In article <328109CD.6685@concentric.net>, Alan Lovejoy
> <alovejoy@concentric.net> wrote:
> 
> > The architecture and design of a program is a function of what
> **objects** it contains and
> > how they interact.
> 
> I disagree.  The architecture of a program is a function of the way
> it manages to decouple the source code while allowing the interactions
> to remain unaffected.
>
> This is true irrespective of language.  It is as true in Smalltalk as
> it is in Java or C++.

I have to admit that I don't really understand what you mean. Perhaps you could 
clarify?

> > Class inheritance is an abstraction mechanism for code sharing.  It has
> nothing much to do
> > with architecture or design of a program.  Proof: any program using
> class inheritance can
> > easily be converted into a completely equivalent program where all the
> leaf classes are root
> > classes:
> 
> This is truer for Smalltalk than it is for Java or C++.  But it isn't really
> even true in Smalltalk.  Consider, that the way your two systems are affected
> by a change in specifications is very different.  In the flattened model,
> the classes can, and must, be changed independently.
> But in the hierarchical model a change in the middle of a hierarchy affects
> all those classes that depend upon it.  Thus, the design of the heirarchy
> must take into consideration the most likely changes that will occur; and
> should strive to minimize the effort involved in making those changes.

The design/architecture of the **source code** of a program (what you called
the "static model" in another post, assuming I understood you) is different than the 
desgign/architecture of the program as it exists at execution time (what you called 
the "dynamic model").

As I have used the term "design" in earlier posts, it refers to what you have called
the "dynamic model" (assuming I have correctly understood you). My thesis is not that 
the "static model" is unimportant, but rather that one needs to know what dynamic model 
one wants to achieve before one can optimally derive a static model.  The dynamic model 
is the heart of the design, because it is where the real work gets done, and because
the purpose of the static model is the specification of the dynamic model.  You can't
implement a good static model that specifies a dynamic model without having a good idea 
of what dynamic model you intend to specify!

That being said, I completely agree that a "flat" class library with no inheritance is 
not a good idea. I mentioned it solely to highlight the difference between the static and  
dyanmic models.

Finally, this thread started with the claim that there wasn't enough focus on class 
inheritance in the static model in typical design methodologies.  I and some others 
objected to this, because in our experience typical methodologies don't have sufficient 
support for handling the dynamic model, and overemphasize static modelling issues such as
class inheritance.  In view of the OO languages such as Self that don't even have classes,
one has to question how central class inheritance (as opposed to type inheritance) really
is to even static modelling (not that getting inheritance right is easy, or that getting
it wrong is inconsequential).  The earlier posts should be interpreted in that context.

Bottom line: "Design" involves much more than class hierarchies.  

--
Alan L. Lovejoy		|==============================================| 
Smalltalk Consultant	|	Beware of Geeks bearing GIFs!	       |
alovejoy@concentric.net |==============================================|




  reply	other threads:[~1996-11-12  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   ` Snowball
1996-11-13  0:00     ` Peter Pflaum
1996-11-13  0:00       ` David N. Smith
1996-11-06  0:00   ` Alan Lovejoy
1996-11-07  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-10  0:00       ` drs
1996-11-12  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         ` Interesting but sensitive topic to discuss (HELP: - OOP and CASE tools) Bill Gooch
1996-11-12  0:00           ` Alan Lovejoy
1996-11-13  0:00             ` Ell
1996-11-13  0:00             ` Nick Thurn
1996-11-14  0:00             ` Bill Gooch
1996-11-19  0:00               ` Tim Ottinger
1996-11-12  0:00           ` 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-10  0:00       ` vlad
1996-11-12  0:00     ` Robert C. Martin
1996-11-12  0:00       ` Alan Lovejoy [this message]
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   ` Jan Steinman
1996-11-07  0:00     ` Paul_Gover
1996-11-12  0:00     ` Robert C. Martin
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-12  0:00       ` Alan Lovejoy
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 ` 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         ` Anthony Menio
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-08  0:00 ` Interesting but sensitive topic to discuss (HELP: - OOP and CASE t Alan Lovejoy
1996-11-08  0:00 ` Jon S Anthony
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