Improved Vision

Using Patterns to Improve Our Architectural Vision. Norm Kerth and Ward Cunningham. IEEE Software. 1997. pdf

Pattern languages can play an important role in furthering the use of architecture and objects in software design. But first we must understand what these terms mean. The authors use the work of Christopher Alexander to illuminate the problems and shed light on future directions in our use of pattern languages in design.

When we say “object” we also imply a problem-solving strategy associated with object use.

Although we generally think of an object as being concrete, it is just this elusive and ethereal quality that makes the object concept special and important. It is a quality that exists in architecture as well, but in a more complicated way.

If we are to discover, learn from, and emulate the work of our best architects, we must not only recognize them, but seek to understand their philosophy as well.

Although a software architectural philosophy is ethereal and hard to explain, a pattern language can embody the philosophy in a form that can be written, discussed, and evaluated. Patterns assembled into a pattern language order our thought processes, much as a natural language’s grammar orders our sentence structure. The combination of patterns and their ordering makes a system rich enough to carry a philosophy.


Norm and I expressed our vision for pattern languages of programming. Some aspects have become true. Others, like active cooperation between industry and academia, find only modest application of patterns.