Article View: comp.lang.eiffel
Article #1230More OOA (was:Re: Beware of "C" Hackers -- A rebuttal to Bertrand Meyer)
From: dbshapco
Date: Thu, 18 Apr 1996 04:31
Date: Thu, 18 Apr 1996 04:31
108 lines
7346 bytes
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!newsReferences:
<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