From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=BAYES_00,INVALID_MSGID, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 109fba,b87849933931bc93 X-Google-Attributes: gid109fba,public X-Google-Thread: fac41,b87849933931bc93 X-Google-Attributes: gidfac41,public X-Google-Thread: 1108a1,b87849933931bc93 X-Google-Attributes: gid1108a1,public X-Google-Thread: 103376,b87849933931bc93 X-Google-Attributes: gid103376,public X-Google-Thread: 114809,b87849933931bc93 X-Google-Attributes: gid114809,public X-Google-Thread: 11cae8,b87849933931bc93 X-Google-Attributes: gid11cae8,public X-Google-Thread: f43e6,b87849933931bc93 X-Google-Attributes: gidf43e6,public From: harry@matilda.alt.net.au (Harry Protoolis) Subject: Re: What is wrong with OO ? Date: 1996/12/06 Message-ID: #1/1 X-Deja-AN: 202650552 references: <32A4659D.347A@shef.ac.uk> <32a5ceba.81462731@news.nstn.ca> organization: alt.computer pty ltd reply-to: harry@alt.net.au newsgroups: comp.lang.c++,comp.lang.smalltalk,comp.lang.eiffel,comp.lang.ada,comp.lnag.java,comp.object,comp.software-eng Date: 1996-12-06T00:00:00+00:00 List-Id: On Thu, 05 Dec 1996 03:06:57 GMT, Tom Bushell wrote: >On Wed, 04 Dec 1996 08:45:22 -0600, rmartin@oma.com (Robert C. Martin) >wrote: > >>harry@matilda.alt.net.au (Harry Protoolis) wrote: >> >>> The traditional techniques all suffered from a number of significant >>> flaws. Perhaps the most damaging one was what I (rather unkindly) think >>> of as 'The glorification of idiots' phenomenon. What I mean by this is >>> that projects were typically infested by a group of people who never >>> wrote any software, but spent most of the budget drawing diagrams that >>> the implementors never used. >> >>Much to my dismay, there are some OO methods that are promoting >>the same scheme. The "analyst" draw nice pretty little diagrams, and >>even run them through simulators to "prove" that they work. These >>diagrams are then run through a program that generates code. Programmers >>who maintain that code generator have to make sure that the "right" code >>is generated. They have to make the program work. > >It is my growing opinion that this is a fundamental problem with all >"formal" design methods, not just OO design. The effort involved in >doing the design is as great or greater than doing the construction >(coding). Contrast this with doing the blueprints for a bridge - the >design effort is orders of magnitude cheaper than the construction. >(Or so I believe - a civil engineer might correct me on this). Also, >the OO design models I've studied don't seem to be very good maps of >actual real world systems - there seems to be a big gap between high >level architecture and running code. I believe there should be a >fairly smooth continuim from high level to low level of detail. IMHO, the trick with OO design is to do it *informally* most of the time. What I mean by this is that you sketch out high level architecture and analysis results as high level class diagrams and then give them to the 'implementors' to design and code. The implementation team then does design as a series of informal gatherings around a white board drawing state diagrams, detailed class diagrams, object diagrams etc. You then photocopy and file the whiteboard drawings and let the same group of people code from the hand drawn design. I then quite often reverse-engineer the resulting code and call *that* the formal system design. I do some formal tracking of this design process, but the golden rule is that nothing should get in the way of the creative process. The failure of *all* attempts at formal design is this mistaken belief that anything short of coding can replace coding ... >I'm starting to believe that design and code don't make sense as >separate entities - the design should _become_ the code - the design >documents for an implemented system are used as the foundation of the >code, and then regenerated from the code. Major benefits would be >that design work would not be discarded because it was too difficult >to bring it up to date with reality. Therefore, the design should >never get out of synch. This a similar idea to reverse engineering, >but not identical. My point is that the *design* and the *code* come into existance together. To talk about the design becoming the code implies that it exists before the code in some sense. >If anyone has knows of tools that would facilitate this approach, I'd >certainly be interested. I've done some very simple prototypes, and >hope to work on the idea in future (when I have more time - Hah!). I think that a facinating tool would be a language sensitive drawing tool in which you could switch your view between diagrams and code and write 'code' in either view. H - Harry Protoolis alt.computer pty ltd harry@alt.net.au software development consultants