Friday, July 18, 2003

Pattern Theory

I came across Patttern Theory yesterday via the story I linked to about the Architect Chris Alexander. Until I did a bit more reading, I didn't realise that usage of the term Pattern (as in Patterns: Custom Designs for Domino and WebSphere Integration) had a specific meaning, and was not being used in the generic sense.

Alexander has been developing his ideas on Architecture for more than thirty years and has published a number of books (see below). He wants to distill why some forms are good, how we know they are good, and the rules we can use to repeatedly create these forms. His thoughts resonate with the idea that there are both good (elegant) and bad (ugly) ways of designing and developing software and systems. The results of the development process also reflect the worth of process used in their construction.

To see how this thinking relates more directly to computing you should read this presentation by Alexander - The Origins of Pattern Theory, the Future of the Theory, And The Generation of a Living World by Christopher Alexander. It is the transcript of the Keynote at the 1996 ACM Conference on Object-Oriented Programs, Systems, Languages and Applications (OOPSLA) in San Jose, California.

An interesting idea from the presentation above was that we can take an elemental pattern or design and applying "structure-preserving transformations" to it. In this way the path to the design objective is defined as a number of transformations that preserve the integrity of the original element. An acorn becomes an oak.

The first book that applied the idea of patterns to software was Design Patterns by Gamma, Helm, Johnson and Vlissides. It is interesting to note that Gamma works for OTI (Eclipse & WS Studio) and Vlissides works at IBM Research. A quick google reveals lots of others using this appoach to software development as well as discussing its relevance.

Please forgive me if this is all well-known or I'm preaching to the converted. To me this revealed a deeper dimension and helps provide a mental framework to my thoughts about clarity, elegance and rightness in software.

Christopher Alexander's books:

No comments: