[comp.object] Art vs. Engineering & Method vs. Genius

msellers@mentor.com (Mike Sellers) (10/20/89)

Ralph Johnson wrote:
> From jnino@cs.utexas.edu 
>> My impression by reading the literature, is that there is no programming
>> methodology that has been recognized to be successful, and furthermore
>> that there is still need to develop a design methodology adequate for
>> OOP applications.
> 
> This is an incorrect impression.  People have been building large
> object-oriented systems successfully.  This indicates that they must
> have some sort of methodology, since large systems cannot be built
> successfully without one.  The problem is to determine their methodology.

I disagree.  A methodology is by nature a *known* set of rules and principles 
that people follow in a particular discipline.  What we have currently is
a situation where people are creating large object-oriented systems, but
rarely are there any explicit rules or procedures followed that apply to
the object-orientedness of the system.  It may be that a majority of the
OO systems out there were created using similar processes, but even if 
this is true (and I don't necessarily believe it is), it doesn't mean that
the processes and methods used are at the point where they are teachable or 
learnable by someone before they have been through one or more OOP projects.  

In effect, I believe we are at the point where we are doing Art (or at least
schtick), not science or engineering.  Once some of the methods that are
currently being used by the brighter ones among us have been filtered out
of the background noise and codified for use by the rest of us, we will have
the building blocks for some methodologies for object-oriented design.  

> It is true that OOD is quite a bit different from traditional design.
> It is also true that it is not written down much.  The people who know
> it do it instead of writing about it.  However, since people are successfully
> designing object-oriented systems, there must be some "method to their
> madness".  The problem is in learning it.
> 
> Ralph Johnson -- University of Illinois at Urbana-Champaign

I don't doubt that there are some incredibly useful methods being used
by OO programmers and designers in both university and industrial settings.
For myself, I have some inklings as to why I do what I do in the course of
a project (we're working in C++).  However, I have not as yet had the 
time-energy cross-product necessary to be able to reflect and apply the
reflections to come up with a useful set of methods.  I'm sure someone 
will soon, and then we'll be off and arguing about why it is that they 
are wrong, even if we ourselves can't quite articulate how we do it
differently.


-- 
Mike Sellers                ...!tektronix!sequent!mntgfx!msellers
Mentor Graphics Corp.                  msellers@mntgfx.MENTOR.COM
Electronic Packaging and Analysis Division -- AutoSurface Project
            "Amor est magis cognitivus quam cognitio"

marc@dumbcat.UUCP (Marco S Hyman) (10/23/89)

msellers@mentor.com (Mike Sellers) writes:
    [Discussion from several people on whether an Object-oriented
    methodology exists deleted]

    In effect, I believe we are at the point where we are doing Art (or at least
    schtick), not science or engineering.  Once some of the methods that are
    currently being used by the brighter ones among us have been filtered out
    of the background noise and codified for use by the rest of us, we will have
    the building blocks for some methodologies for object-oriented design.  

I agree in principal but would use the word _craft_ in place of _art_.
Object-oriented design is being taught like the crafts of old, from
craftmaster to journeyman, from journeyman to aprentice.  How many times
have you had to explain why a problem was partitioned into a particular set
of objects?  How many times have you been at a loss for words other than
``it feels right'' and then go on to explain how you think that the
partitioning you used will solve some future problems or make it easier to
change things later on -- just in case you ``guessed'' wrong?

I was at a conference a year an a half ago where the question most asked of
those preaching the object-oriented way was ``How do you decide what should
be an object?''  The frustration level of the questioners grew with each
non-answer.  There is a large number of programmers who believe that object-
oriented design and programming will solve many of their problems -- the
programming panacea of the 1990s.  This group is looking for the rules that
will turn them into instant object-oriented programmers.  

I believe the best way to _discover_ a working methodology will be to
analyze several large systems put together using object-oriented techniques
and see what worked and what didn't.  Until this happens the best we can do
is teach by example.  And hope that not too many of those initial systems
are failures.

--marc
-- 
// Marco S. Hyman		{ames,pyramid,sun}!pacbell!dumbcat!marc