4 ms·
Thank you for sharing this OP, never heard about it before. Christopher Alexander (architect and influencer of GoF's original software Design Patterns) very cl
by hcarvalhoalves 11y ago
Thank you for sharing this OP, never heard about it before.
Christopher Alexander (architect and influencer of GoF's original software Design Patterns) very cleverly re-frames design problems in one of his books [1] as optimization problems, where the designer is tasked with minimizing the tension between two or more conflicting requirements arranged as a graph, and where each requirement interacts positively or negatively with it's neighbours. By representing a design problem this way, it follows that "solving" it amounts to clustering requirements together to form sub-components that interact well together, or redefining the solution/context boundaries to re-frame the problem and minimize the overall tension.
It's interesting how this TRIZ framework arrives at many similar insights about the design problem, and I wonder what you get by mixing the two approaches. A lot of what makes it hard to apply is also what makes Christopher's framework hard to apply, which is clear definition of the requirements in the first place. C-K theory seems to overcome these limitations but I haven't played with it yet.
[1] https://en.wikipedia.org/wiki/Notes_on_the_Synthesis_of_Form https://en.wikipedia.org/wiki/Notes_on_the_Synthesis_of_Form
[2] https://en.wikipedia.org/wiki/C-K_theory https://en.wikipedia.org/wiki/C-K_theory
- fsloth 11y agoNotes on the synthesis of forms is an awesome book! It really is about systems design in general - the graph based view is the concrete formulation of the fact that elements of the system affect each other amd if these connections are not made explicit in the design process then the components will still be connected - albeit in hidden and accidental ways which will make the system development into a neverending game of whac-a-mole problem fixing. In retrospect this may sound obvious and trivial but taking this simple graph based view of the basis of systems design as the fundamental idea gives concreteness to e.g. lot of software systems practices and unifies them.
- austinjp 11y agoFascinating reading, thanks for that.
- shoo 11y agoah damn, I've already bought two Christopher Alexander books ("The Timeless Way of Building"[1] and "A Pattern Language"), and now I'm going to have to get another one. That sounds great. [1] - well worth a read. Did you know there was a terribly humane philosophy behind the original design patterns work? This was beautifully described in Peopleware as "Local control of design by those who will occupy the space". E.g. - Alexander advocates for the people who are going to live in and work in the buildings be intimately involved in both the design and the construction of the buildings. Not only does he advocate for this, he explains ways of doing this in practice. This philosophy could be ported to software -- let the users of software systems be involved in the design and construction of the systems. That sounds like far more of an ambitious and genuinely positive idea than the old "visitor pattern" / "singleton [anti]pattern" stuff that springs to mind when one has been subjected to the computer-science-education version of design patterns.