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
