Frameworks: putting design patterns into perspective

Design patterns have made a strong impact on how object-oriented software is designed, implemented, and communicated in industrial projects. Teaching patterns is therefore of great importance. Patterns, however, have a natural catalogue-like nature, that easily misleads us into to lecturing them one at a time. This leaves an impression of patterns as isolated solutions to independent problems. We present our experience with trying to counteract this problem by using a well-engineered framework, JHotDraw, as a case study in how patterns work together to define a flexible and compositional software system of high quality.