Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!samsung!crackers!jjmhome!zinn!nuucp From: mjv@objects.mv.com (Michael J. Vilot) Newsgroups: comp.object Subject: Re: object-oriented design is *hard*! Message-ID: <912@zinn.MV.COM> Date: 5 Sep 90 03:52:13 GMT Sender: nuucp@zinn.MV.COM Lines: 59 Paul Chisholm writes: > I seem to need to keep everything in my head, design everything, and only > then start coding. > ... > I don't really know where to start, or what the natural next steps are I became a fan of incremental development in 1981, when a project I worked on achieved some success with it. I usually work on larger systems (> 100K NCSL), and it's usually not possible to get all of the design into one head before writing any code. Having some way to record and communicate parts of the design (and a reasonable and consistent notation for it) is very helpful. In Grady Booch's ``Object Oriented Design with Applications,'' he describes a method he calls ``round trip gestalt design'' (or, analyze a little, design a little, code a little). You might want to take a look at it. Be aware, though -- waxing a floor a little at a time without an overall plan can leave you stranded in a corner! In a nutshell, the steps are: - Identify the classes and objects at the current level of abstraction - Identify the semantics of each class - Identify the relationships between the classes and objects - Implement the classes (in choosing implementations, you often encounter more classes and objects at the next level of abstraction, leading to a new round) There's also a notation and a rational alternative to the waterfall process model that we all know -- after 20 years of trying -- just doesn't work. While he's clearly made progress over the ``find the nouns and verbs'' approach Russ Abbott outlined in the early '80s, some people find the OOD method insufficiently precise or ``comprehensive.'' Still, the other methods I've seen are even more vague and ill-defined. He's at least got heuristics for evaluating whether what you're doing looks appropriate. And Grady's method has evolved over the past decade through application on ``real'' projects. So, until something better comes along, his approach seems to be a reasonable place to start. I've found it useful. > Anybody else experiencing this, ... ? I think a lot of people who have ``become very comfortable with the top-down approach'' experience a bit of vertigo as part of the ``paradigm shift'' folks like to talk about in the context of object-oriented anything. It may just be a consequence of old dogs learning new tricks -- I've noticed young children have less trouble with the ideas of classification and organizing objects than many of the engineers I work with! Of course design _is_ *hard*, but I find that OOD is easier than SA/SD because it is more direct -- I don't have to reorient my thinking from the world as a set of things to a set of bubble charts, and again reorient from bubbles to structure charts. On the other hand, this means that I have to cope with the essential complexity of the problem -- I can't hide behind the make-work of producing piles of paper. Oh well ;-} -- Mike Vilot, ObjectWare Inc, Nashua NH mjv@objects.mv.com (UUCP: ...!decvax!zinn!objects!mjv)