comp.lang.ada
 help / color / mirror / Atom feed
From: Snowball <snowballinfo@rase.com>
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: <3288C52E.455E@rase.com> (raw)
In-Reply-To: rmartin-1211961136530001@vh1-004.wwa.com


Robert C. Martin wrote:

> 
> Objects execute inside computers.  They take up memory space and CPU cycles.
> Classes are source code.  They specify the objects and create a structure
> from which the objects are created.
> 
This is true for C++ and some other languages, however for Smalltalk
Classes are 
objects which take up memory space (and sometimes CPU cycles). 

> Any method that concentrates on one more than the other is doing a disservice
> to its inventors and its users.  Rather we must focus on both.  We generally
> use dynamic models (i.e object diagrams, interaction diagrams, etc) to specify
> objects and the way that they interact.  We use static models (i.e. class
> diagrams, package diagrams, etc) to specify classes and the static
> relationships between them.

When we are talking about static and dynamic models, something bothers
me. There are 
two types of complexities in any system. One is the static or structural
(or 
sometimes I call it detail) complexity, the other one is dynamic
complexity. 
To me some canonical forms of systems such as class hierarchy can be
reasonably understood 
by static diagrams, however, it is not very intuitive to attempt to
model dynamic behavior 
in static diagrams such as object or interaction diagrams. I can
differentiate between 
structural complexity and dynamic complexity with an example: a car
engine totally taken 
apart and lying on the floor with all parts visible, and even sorted out
to parts, may 
create an atmosphere for us to develop a detailed understanding of each
part but will not 
give us a clear idea of how it runs. An engine timing diagram can help
us but the best way 
to understand how an engine works is to observe it "running" preferably
with a power to control 
the motion of the time domain. This means that we can take the engine,
replace one of the side walls 
of it with say a glass panel, and let it slowly run, even single step,
so that we can follow the 
entire motion. Same analogy for a software system running would be to
add a layered visual 
debugger and a reverse engineering tool to obtain and animate certain
diagrams to observe how the 
behavior of the system changes in time. (It just happens that I am
working on such a visual 
debugger for Smalltalk to be added to a tool I developed)

> There is a mapping between the two kinds of models that must be maintained.
> Every relationship on a dynamic model; that is, ever pathway accross which
> a message is sent; must be supported by a static relationship in a static
> model.

I totally agree here. To me, they are essentially two different views of
the same system. 
We are mostly defining the structure (time independent portion) of the
system with the static 
models, and we shape the behavior of the system (or how a system behaves
in time). 
Of course in many current languages there is a sharp distinction between
these two views 
although in the real world this distinction is thinner than we think.
For every system adaptation 
is a key to survival. Adaptation requires structural change. That means
adding and/or deleting 
classes, or changing class structure or behavior in time. If this is the
case the ?staticness?
(is there such a word?) of the static diagrams will not hold any more. A
correct class diagram 
for a system initially will not be the correct diagram after some
classes are added or modified 
dynamically. 

Tansel Ersavas
RASE Inc.
mailTo:tansel@deep.net
http://www.rase.com/




  parent 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   ` 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       ` 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-08  0:00       ` Ell
1996-11-08  0:00         ` Alan Lovejoy
1996-11-13  0:00           ` Ell
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           ` Robert Dewar
1996-11-20  0:00           ` Michael Malak
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       ` Alan Lovejoy
1996-11-12  0:00       ` Snowball [this message]
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   ` 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 ` 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 Joachim Durchholz
1996-11-12  0:00   ` Alaric B. Williams
1996-11-13  0:00   ` Richard A. O'Keefe
1996-11-08  0:00 ` 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