Christopher Alexander is an influential architect. His work on pattern languages and design has a notable impact on development of design patterns. He has made a presentation at OOPSLA in 1996: The Origins of Pattern Theory, the Future of the Theory, And The Generation of a Living World.
First of all, he is not quite sure whether there is a strong connection or not. In architecture, he says, there is a profound moral component which is we are not completely aware of in our profession as software engineers. In my opinion, software engineering is also have a moral component or it should have. Maybe it is not much emphasized as in architecture due to the fact that we love to concentrate on the technical side as it is mostly a technically challenging area. But after all, what we are building in software engineering is for humans, for a better living, for improving the quality of life. If there is a human factor, it boils down to one thing: morality, just as Christopher Alexander says.
He also questions whether patterns in software is the same as the patterns he discovered in architecture. He says software patterns is a subset of pattern languages. He sees software patterns as a tool to facilitate the communication between software engineers. He stated three essential features that exist in pattern languages; moral component, creating coherence, and generativeness.
He emphasises the vitality of moral component in pattern languages and the absence of it in software engineering. I think it is true that using patterns in software engineering does not directly improves the quality of life. But using patterns will contribute to building better software, even it is just better in a technical way. Also, maybe it will make the programmer feel better because the code will have a better structure or it will have life in it. It will, in turn, help powering the quality of life.
He mentions a very important aspect of pattern languages. One of the aims of pattern languages is that creating coherence when patterns used together. This means, all the entities created using the pattern language should be in a way that creating harmony. On the other hand, if we look at the design patterns, there is no guarantee that what we will end up with is a coherent software. Software patterns seem to be more independent than patterns in architecture.
This is a larger and deeper concept than patterns. He defines generativity as a process that is capable of leading to a good structure. He says patterns should be generative thus allowing the process to produce an entity which is coherent and consistent with the context. I don’t know exactly if we have this in software engineering but I think we should be after that. This is a very nice concept to have: a process or a path that leads to good software.
My name is Ertuğ Karamatlı. I'm working at sahibinden.com and doing a PhD in Computer Engineering at Boğaziçi University. Contact me at ertug@karamatli.com.
home · rss · knowledge base · twitter · github