Newsgroups: comp.software-eng Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!wuarchive!m.cs.uiuc.edu!cs.uiuc.EDU!johnson From: johnson@cs.uiuc.EDU (Ralph Johnson) Subject: Re: Modifiability Message-ID: <1991Jun7.185211.20475@m.cs.uiuc.edu> Keywords: Maintainability, Modifiability Sender: news@m.cs.uiuc.edu (News Database (admin-Mike Schwager)) Nntp-Posting-Host: m.cs.uiuc.edu Reply-To: johnson@cs.uiuc.EDU (Ralph Johnson) Organization: University of Illinois References: <2192@Terra.cc.brunel.ac.uk> <1991Jun5.201807.13286@netcom.COM> <2195@Terra.cc.brunel.ac.uk> <1991Jun6.230049.19029@netcom.COM> Distribution: comp.software-eng Date: Fri, 7 Jun 1991 18:52:11 GMT In article <1991Jun6.230049.19029@netcom.COM>, jls@netcom.COM (Jim Showalter) writes: |> |> ... Prototype. Iterate. |> Embrace feedback. Focus on architecture and design--coding is trivial in |> comparison. Emphasize reusability, maintainability, and line-of-business |> concerns (e.g. if you build air defense systems for a living, why not |> acknowledge that fact up front and build an architecture that is broadly |> applicable to air defense systems?). This point of view is at the heart of the Smalltalk culture. I think that the reason why Jim (Objects with Ada) Showalter and Kent Beck (to pick one example) have similar world-views has little to do with the fact that they both call what they do "object-oriented programming". Instead, this is the point of view of someone who has really tried to develop reusable software. In fact, the way I tell whether someone has had any practical experience developing reusable software or not is whether they believe what Jim said. Thanks for a good summary, Jim. One of the things that I tend to emphasize is that it is impossible to invent a general-purpose widget unless you know how to build special-purpose ones. Humans develop abstractions by generalizing from concrete examples. Applied to software, this means that unless you have build some nonreusable software in a particular application domain, you don't stand much chance of building reusable software. That is why iteration is so important. People tend to build something concrete that works, and then gradually generalize it as it becomes obvious that it is a special case of a more general idea. Ralph Johnson -- University of Illinois at Urbana-Champaign