Now we shall begin to see in detail how the rich andcomplex order of a town can grow from thousands ofcreative acts. For once we have a common pattern languagein our town, we shall have the power to make our streetsand buildings live, through our most ordinary acts. Thelanguage, like a seed, is the generic system which gives ourmillions of small acts the power to form a whole.
Christopher Alexander, ‘The Timeless Way of Building’
This chapter delves into pattern languages by re-examining our earlier request-handling framework example and looking to see what language might surround it, rather than simply what sequence produced it. We revisit the question of context and the relationships in a pattern language. Grammar provides us with a useful and related metaphor to make this connection.
From a bird's-eye view, and as a conclusion from the discussion in Chapter 9, we might be tempted to characterize a software pattern language as:
A network of tightly interwoven patterns that defines a process for systematically resolving a set of related and interdependent software development problems.
Although this characterization is in line with the relevant discussions and publications on pattern languages—for example [Cope96], [Gab96], [Cope97], [POSA2], [HaKo04]—it does not tell the whole story. Just as a stand-alone pattern is much more than ‘a solution to a problem that arises within a specific context,’ a pattern language ...