As evidence of this growing interest, early in August more than 70 software practitioners gathered to discuss patterns and pattern languages at the first annual conference on Pattern Languages of Programs. The idea of using patterns and pattern languages is borrowed from work done in building architecture to describe qualities for good architectural designs. In the seventies, the architect Christopher Alexander started using pattern languages to describe the events and forms that appeared in cities, towns, and buildings in the world at large. Although the advantages of having trainees learn from the daily work environment may seem obvious, in many organizations the office setup does not encourage this. Documenting this pattern, and referring to it when designing offices, helps a less experienced architect build a quality workplace.
Software development presents an analogous situation.
Independently developed software systems often share common elements of an architectural structure. Most programs do this, and ones that don't are likely to run into problems. An example of a higher level pattern is the use of callbacks to initiate an operation when an event happens. Higher still are patterns of structure in software development organizations. By documenting these patterns and their relationships, we can develop a set of languages to guide developers in building new systems.