🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.eiffel
Article #1230

More OOA (was:Re: Beware of "C" Hackers -- A rebuttal to Bertrand Meyer)

#1230
From: dbshapco
Date: Thu, 18 Apr 1996 04:31
108 lines
7346 bytes
In article <4l3auv$jnt@onramp.arc.nasa.gov>, lamaster@viking.arc.nasa.gov 
says...
>
>In article <goochb.334.0015B418@rwi.com>, 
>goochb@rwi.com (William D. Gooch) writes:
>
>OTOH, it is interesting that it is in GUI/window development that 
>O-O methods have been *generally* regarded (even by skeptics) as most 
>successful.  So, perhaps, there is some significance after all to such 
>correspondence.  At least, if what you care about is actual productivity,
>rather than an O-O religious experience.  Now, in some applications,
>the GUI is 99% of the app, but in others, I can assure you that it is
>less than 1%.  It may simply be the case that O-O methods are more 
>effective, pragmatically speaking, for the former case than for the
>latter.  Why insist on applying the same techniques to every problem?
>[cliche' of the day: "If the only tool you have is a hammer, 
>everything looks like a nail."]

Software engineering lacks the conventionalized techniques and terminology 
developed with centuries of practise in other fields such as architecture or 
mechanical engineering, and often even the conventional terminology and 
conceptual foundations that allow an architect to discuss with relative ease 
the problems of live loading on a building structure with an engineer.

GUIs however seem to become one of those areas that are (now) highly 
conventionalized and easy to analyze because the problem in fact was 
decomposed into a metaphorical framework at Xerox Parc over a decade ago.  No 
reasonably computer literate person needs the concept of a window explained 
to them.

Often I've witnessed software development teams accepting the tandem problem 
of decomposing an unconventional and original problem and learning new 
techniques and technologies for doing so.  The novelty of both have negative 
symbiotic effects on each other.  The relativity immaturity of software 
engineering further complicates the task.  It is often difficult to 
communicate the foundational concepts to team members of varying levels of 
training and understanding, and managers and team leaders haven't the 
experience to tailor roles, training and responsibilities appropriately.  
This is a recipe for disaster, and the price of failed software projects, 
cost overruns and late delivery is estimated in the Saganesque billions and 
billions per year in North America.

GUIs by now are as much a cooked and 'toy' problem as those found in 
introductory OO books -- there exist straightforward and automatic 
decompositions of the problem into classes and class hierarchies, and in fact 
many GUI frameworks representing pre-fab applications.  They possess another 
attractive attribute -- they are highly visual and therefore susceptible to 
the architectonic (~spatio-temporaral) analysis that many engineers, 
mathematicians and computer scientists excel at (who tend to be the people 
doing software development).

This does not mean that OOT fails at unconventional problems, but that many 
fail to recognize that with such problems an extra step is involved in 
decomposing the problem into appropriate elements at an appropriate level of 
abstraction.  This happens in architecture, mathematics, science, engineering 
and so on -- these fields usually just have frameworks handed down from 
decades or centuries of practise, a legacy either software engineering 
doesn't enjoy or isn't recognized by undertrained practioners.  Software 
engineering is also an applied science, which requires appreciation of the 
domain to which it is applied.  Most of us have so long used and played with 
and programmed GUIs that we can consider ourselves de facto 'domain experts'. 
Confronted with other domains, developers often fail to recongize the need 
for this domain expertise.

What I find *consistently* are software teams that employ OOADP to describe a 
linear, structured solution to their problem.  Having typically 1-12 years 
experience solving problems in software their minds have been trained to 
operate this way.  Like breaking away from any habit, those adopting OO are 
going to find their technique suffers until OO becomes natural -- the new 
habit replacing the old.  You can teach people all the OOADP you want, and 
without integrating the new thinking into their work they can readily bend 
all that teaching to developing and describing old-style solutions.  OOT can 
only support, and not enforce, the new paradigms.  And BTW, OOADP introduces 
awful and needless overhead and complexity into linear, structured software 
solutions, so that people who abuse OO (as I said in an earlier post) come to 
blame OO for introducing awful and needless overhead and complexity.  It is 
fairly difficult to describe a blueprint for a building using calculus 
notation or Lisp syntax, but that isn't a failing of calculus or Lisp.

The great divide in OO separates those who understand the notations, the 
languages, and the jargon and those who've grokked the fundamental paradigm 
shift (a la Kuhn).  This might actually get back to the subject that started 
this thread an era ago: a mind trained to one paradigm (the, let us say 
somewhat archetypal, C hacker) more strongly resists the new paradigm than 
the tabula rasa.  I think that is Bertrand Meyer's hypothesis, and not an 
established fact, and even if true the C hacker archetype also carries many 
other skills and qualities that might outweigh this disadvantage.

Most people need to recover the architectonic thinking so natural to them and 
discard training forced upon them by a more primitive level of technology.  
Use Cases can be taught in a three day course, OMT a four day course, C++ or 
Eiffel a four day course, but getting people to again trust themselves and 
their natural patterns of thought after years of shoehorning their thinking 
into unnatural patterns to accomodate the technology is bloody difficult 
(IME).

OOT's power is that it supports natural ways for humans to reason about 
problems, and by notation to communicate that reasoning to other humans in 
reasonably natural form.  But all the computer still understands is opcodes, 
and all technologies only add notational or expressive power *for the benefit 
of humans*.  And I might claim that OO has higher general notational and 
expressive power across a wider spectrum of domains than other technologies.


-- 
Brad Shapcott, Technical Consultant
Lockheed-Martin's Advanced Concepts Center
Ottawa, Canada (613) 592-8744 x227
Technical Details
Message-ID: <4l4gi5$7qf@news.nstn.ca>
Path: arc1-ca.pugleaf.net!news.nstn.ca!news
References: <1995Jul3.034108.4193@rcmcon.com> <bksDoFwBA.Eut@netcom.com> <jmaling-2303960413010001@slwol1p47.ozemail.com.au> <4kkkbm$4ld@news4.digex.net> <4kku1gINN7me@keats.ugrad.cs.ubc.ca> <4kma54$11m@news4.digex.net> <goochb.334.0015B418@rwi.com> <4l3auv$jnt@onramp.arc.nasa.gov>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news.nstn.ca!news
From: dbshapco@fox.nstn.ca (dbshapco)
Newsgroups: comp.lang.eiffel,comp.lang.c,comp.lang.c++,comp.object,comp.software-eng
Subject: More OOA (was:Re: Beware of "C" Hackers -- A rebuttal to Bertrand Meyer)
Date: 18 Apr 1996 04:31:01 GMT
Organization: iSTAR Navigator User
Message-ID: <4l4gi5$7qf@news.nstn.ca>
References: <1995Jul3.034108.4193@rcmcon.com> <bksDoFwBA.Eut@netcom.com> <jmaling-2303960413010001@slwol1p47.ozemail.com.au> <4kkkbm$4ld@news4.digex.net> <4kku1gINN7me@keats.ugrad.cs.ubc.ca> <4kma54$11m@news4.digex.net> <goochb.334.0015B418@rwi.com> <4l3auv$jnt@onramp.arc.nasa.gov>
Reply-To: dbshapco@fox.nstn.ca
NNTP-Posting-Host: ts2-14.ott.istar.ca
Mime-Version: 1.0
X-Newsreader: WinVN 0.93.14