Abstract

So, I’m to be marooned on a desert island with a handful of books relating to software engineering? I have two immediate, conflicting, reactions. One is to complete the punchline to a music-hall joke: “Second prize, marooned with two handfuls of software engineering books”. The other is to think, I take a handful of books on a short train journey, because I’m terrified of being caught without reading material: how will I last on the island? This wins over the joke, and I start to compose my list. Ia mrather enamoured of the concept of Patterns. A pattern is a codification of a wellknown solution to a common problem, along with a description of where it is and is not applicable. Good software engineering patterns can increase your analysis and design vocabulary, making it easier to “chunk” complexity, and saving reinventing many kinds of wheels. The emphasis on applicability is a refreshing change: unlike many overhyped methods, a pattern is not given as the wa yt osolve a problem, it is just one possible solution. A simple increase in vocabulary is not enough, however: words need to be strung together in some structure to make sentences: we need a language. This is where many of the more simplistic software engineering patterns fall down: a random bunch of nouns does not a language make. The originator of patterns, architect Christopher Alexander, invented a whole Pattern Language for designing buildings: all the way from the smallest detailing of architraves, through placement of windows, to whole houses, and even whole towns. Reading his books is an aesthetically pleasing experience at several levels: the intriguing concepts, the smooth prose, even the physical feel of each book with its slightly flexible hard covers. So, take Alexander’s AP attern Language and The Timeless Way of Building to the island? But I have already read these. I would more like to find out what he’s been up to in the intervening quarter century. So what I propose to take with me is his latest magnum opus, the four volume The Nature of Order, which I have yet to read. As I understand it, this is a more philosophical look at structure, pattern, and design, both natural and artificial: all concepts very relevant to software engineering. If it is even half as thought-provoking and influential as his previous work, this will be time well spent. I mentioned aesthetics. The aesthetic dimension is of utmost importance in design. The theoretical physicist Paul Dirac could say “it is more important to have beauty in one’s equations that to have them fit experiment”. Engineering is somewhat different: we do have to make our artefacts work in the often messy real world. And that real world is sometimes even messier for software engineers, because much of it comprises our own older, possibly not fully thought through, design decisions. But that unavoidable

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call