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=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,b87849933931bc93 X-Google-Attributes: gid103376,public X-Google-Thread: fac41,b87849933931bc93 X-Google-Attributes: gidfac41,public X-Google-Thread: 109fba,b87849933931bc93 X-Google-Attributes: gid109fba,public X-Google-Thread: f43e6,b87849933931bc93 X-Google-Attributes: gidf43e6,public X-Google-Thread: 11cae8,b87849933931bc93 X-Google-Attributes: gid11cae8,public X-Google-Thread: 114809,b87849933931bc93 X-Google-Attributes: gid114809,public X-Google-Thread: 1108a1,b87849933931bc93 X-Google-Attributes: gid1108a1,public From: Mukesh Prasad Subject: Re: What is wrong with OO ? Date: 1996/12/06 Message-ID: <32A84763.44B6@dma.isg.mot.com>#1/1 X-Deja-AN: 202743794 references: <32A4659D.347A@shef.ac.uk> <32a5ceba.81462731@news.nstn.ca> content-type: text/plain; charset=us-ascii organization: Motorola Corporation mime-version: 1.0 newsgroups: comp.lang.c++,comp.lang.smalltalk,comp.lang.eiffel,comp.lang.ada,comp.lnag.java,comp.object,comp.software-eng x-mailer: Mozilla 3.0 (Win95; I) Date: 1996-12-06T00:00:00+00:00 List-Id: Tom Bushell wrote: [snip] > 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. [...] I have seen the term "iterative prototyping" used to formally describe an approach like this. Iterative prototyping means you start from a prototype of the system, written from a very sketchy design (the design may even be just in peoples' heads.) You use your prototype to write an improved design, which you then use to implement improvements to the prototype, which you then use to improve your design.... repeat until your erstwhile "prototype" becomes the "system" with a very closely matching design spec, and everybody is happy. In practice, I have seen a shortened version, the "backward spec", i.e. specifications done from implemenations (with modifications as required) work very well in certain cases. Much better than the strict "implement exactly from spec" approach. I believe these less top-down approaches work better because in a lot of cases, at specification time the product is very vaguely understood. Moreover, many implementation problems are not anticipated well. An actual, physical implementation can sharpen everybody's hazy understanding to the point where actually good design decisions can be made. Thus doing the spec from an initial implementation, and fixing the implementation to match the final spec, can yield much better results overall. Of course, there is no reason why your design couldn't be OO. The problems you describe, I think, are not problems of OO, but rather the problems of trying to do a detailed design without sufficient understanding of the product to be designed and its problems. /Mukesh