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.7 required=5.0 tests=BAYES_00,INVALID_DATE, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 Xref: utzoo comp.software-eng:1172 comp.lang.ada:2077 Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!iuvax!rutgers!cmcl2!yale!jellinghaus-robert From: jellinghaus-robert@CS.YALE.EDU (Rob Jellinghaus) Newsgroups: comp.software-eng,comp.lang.ada Subject: Re: Good Design Strategies Message-ID: <52101@yale-celray.yale.UUCP> Date: 28 Feb 89 04:55:56 GMT References: <4343@enea.se> <6127@medusa.cs.purdue.edu> Sender: root@yale.UUCP Reply-To: jellinghaus-robert@yale.UUCP Organization: Yale University Computer Science Dept, New Haven CT 06520-2158 List-Id: In article <6127@medusa.cs.purdue.edu> rjh@cs.purdue.EDU (Bob Hathaway) writes: >In article <4343@enea.se>, sommar@enea.se (Erland Sommarskog) writes: >>As for bottom-up vs. top-down, Meyer explains this very well in his >>book, and it's certainly applicable to the recent discussion. > >Could you elaborate on this, does he advocate top-down, bottom-up, ??? >I haven't read Meyer's book. Meyer advocates neither, although his strategy (which he terms simply "object-oriented design") is closer to bottom-up than to top-down. His claim is that the best way to obtain reusability, maintainability, and reliability (which should all result from good software engineering technique), the best method is to focus design on the data objects that the program is manipulating. The resulting design can often be very obvious, as it isn't too hard to find the objects in most applications. Object-oriented languages then package the objects and their internal representation together with the routines that operate on them, and thus separate interface from implementation. A good object-oriented system quite often will consist largely of software components that have been taken from older projects, which is not really a possibility in either the top-down or the bottom-up model. If the map of a top- down system is a tree, with the principal function at the top, then an object-oriented system is a net, with each object providing services to other objects, with no clear hierarchical arrangement; this enables the system to be locally modified without global effects. That's a very brief summary of Meyer's arguments. He goes into more detail, with examples, in the book. To respond briefly to Bill Wolfe's comments about Eiffel being flaky: I can't say how good a language Eiffel is in the real world. However, Meyer uses it very effectively as an exemplar of a good object-oriented programming language, and at every step throughout the book he discusses the design decisions he made in creating Eiffel, and what the impli- cations are for object-oriented programs. He discusses the pros and cons of Ada, Smalltalk, etc., etc. at length, and he talks about the essential features of any "true" (in his definition) object-oriented language: multiple inheritance, genericity, polymorphism, dynamic binding, etc. Even if you don't agree with his decisions, his exposition is very clear and (in my opinion) well-written. (You can probably tell I like the book!) >Bob Hathaway >rjh@purdue.edu Rob Jellinghaus | "Next time you see a lie being spread or a jellinghaus-robert@CS.Yale.EDU | bad decision being made out of sheer ignor- ROBERTJ@{yalecs,yalevm}.BITNET | ance, pause, and think of hypertext." {everyone}!decvax!yale!robertj | -- K. Eric Drexler, _Engines of Creation_