This talk is for people who are having difficulty creating and maintaining application architectures. While test-driven development, automated testing and continuous integration are great practices to facilitate local design and making changes without risk, the architecture within which these changes take place will have a large impact on the effort required.
The Agile community is recognizing the need to address the challenges of Architecture at Scale. While many people recognize the importance of patterns, they tend to focus on patterns as a set of solutions. This often leads people to try to develop by combining patterns. This is actually the anti-thesis of the true intention of design patterns. In reality, patterns are a way of thinking – the patterns themselves are a result of this thinking. On quick examination of most design patterns, one can readily see the patterns are used to encapsulate some variation (e.g., algorithm, # of items, order of execution, …).
While the defined patterns are very useful to know and use, it is the thought process underneath them that is much more powerful. The essence of design patterns thinking is:
While design patterns live at the code level, these concepts live from code to high level design. The trick is to create a way of applying these technique at much greater scales. Fortunately, this technique already exists – commonality-variability analysis – introduced by James Coplien and extended with the analysis matrix by Al Shalloway. Using CVA, one can take these concepts up to any scale.
This seminar has three parts to it: