I like this piece from RalphJohnson and SteveMellor: One example of a question with conflicting answers is "How should generic information be treated?" Much of the information in our software is generic to the problem domain, while other information is specific to the particular problem we are solving. How do we separate the two and encode the generic information in such a way that it can be reused? * Object-oriented developers tend to encode both generic and specific information in objects and classes, though not in the same ones. Sometimes they use abstract classes to encode generic information, and put specific information in the concrete classes. Other times the classes represent generic information, and the specific information is in the scripts that instantiate classes, parameterize the instances, and connect them together. * Domain-specific software architects encode the generic information in a domain specific software architecture supported by special purpose languages, encode the problem-specific information using those languages, then translate from the special purpose languages to the final code. * People working with patterns view this as an unimportant question, because what is important is to discover the generic patterns and document them. The software developer can then decide whether to encode the patterns in objects, to use a domain specific language, or to just use the patterns to write a single, specific, program. The biggest gain comes from understanding and making explicit the patterns. Again, each of these points is oversimplified. Nevertheless they represent the common point of view in each camp. BruceAnderson 26xi96