Thank you for sharing this OP, never heard about it before.<p>Christopher Alexander (architect and influencer of GoF&#x27;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&#x27;s neighbours. By representing a design problem this way, it follows that &quot;solving&quot; it amounts to clustering requirements together to form sub-components that interact well together, or redefining the solution&#x2F;context boundaries to re-frame the problem and minimize the overall tension.<p>It&#x27;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&#x27;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&#x27;t played with it yet.<p>[1] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Notes_on_the_Synthesis_of_Form" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Notes_on_the_Synthesis_of_Form</a><p>[2] <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;C-K_theory" rel="nofollow">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;C-K_theory</a>