A Pattern is no Best Practice yet!

A Pattern is no Best Practice yet!

A pattern, the universal and fundamental concept in any of the "architecture" disciplines, offers a well-specified solution to a common, recurring problem. That is what much of the literature, charting the many useful patterns, asserts and the community of architects commonly evangelizes.

From there, many infer that the body of documented patterns represents a body of knowledge for best practice and hence the thinking is almost, if not entirely, over. For every problem that you encounter, look up an appropriate pattern, combine all those patterns and there is your solution.

It is an approach that I repeatedly take notice of, especially in the area of software architecture and service-oriented architecture in particular.

Unfortunately that approach shows inadvertent reasoning. Moreover, repeatedly, particularly service-oriented architectures appear to be inherently and deeply flawed as results of such an approach.

While patterns do represent solutions to common, recurring problems, there are a number of additional considerations to take into account that are repeatedly forgotten:

  • For any "one" problem, there is not just "one" appropriate pattern. In fact, usually multiple alternatives are available.
  • While a pattern may represent a solution to a problem with advantages over other available solutions, it also comes with disadvantages, or better said trade-offs. Each pattern! So when wondering if a particular pattern is appropriate, the right answer is: "It depends". To evaluate the appropriateness, you actually need a comprehensive understanding of the "whole" problem in the aspects that count as the most-significant "quality" requirements.
  • Combining patterns which is necessary to create a system, thereby in fact realizing more coarse-grained composite patterns, may no longer offer a solution with all the advantages as a whole or with the advantages that were envisaged. The combination may result in a situation wherein one pattern eradicates the benefits that another one should provide.

Actually, a pattern already represents a composition itself. It represents a particular structure that impacts multiple qualities ("*ilities"), both positively and negatively. Always! Those qualities emerge from applying structural tactics.

For example, the next figure (source: Software Engineering Institute) shows the tactics that benefit modifiability:

No alt text provided for this image

However, each of the above modifiability tactics impede other qualities. For example, using an intermediary benefits modifiability but at the same time also means increasing overhead which is the opposite to do when one wants to optimize performance:

No alt text provided for this image

Hence one can observe that one single pattern always combines different tactics with different implications to different qualities.

When one should actually prefer to trade-off performance for modifiability and go for an introduction of an intermediary, there is still the opportunity to use different tactics to compensate for some of the loss by introducing caching at the intermediary, which is a form of the maintain multiple copies tactic.

An example list of well-known patterns and the tactics for modifiability that they apply is shown in the next table:

No alt text provided for this image

While the pattern literature already represents a great resource for architects, it does not represent a replacement for thorough understanding, analysis and design. That need is actually why organisations do need architects that maintain such an understanding and the skills to create successful architecture designs.

Some architects promise impeccable quality with regard to their architecture designs. In the real world, it points to a lack of understanding with regard to the nature of quality. At best, architecture design is always a considerate exercise in trading off between qualities.

Great article. I think it's interesting to see the parallel and delayed timeline between "patterns" as they evolve in built architecture theory, versus patterns in IT. I'm not an expert in either but I see the history of patterns in built architecture through the lens of Christopher Alexander: * Notes on the Synthesis of Form (1964, year 1). Starts to describe what later came to be known as "patterns". * Notes on the Synthesis of Form - Preface to the first paperback edition (1973, year 9). Already starting to rebel against those who focused on "design methods" as a meta study and assets "I reject the whole idea of design methods as a subject of study, as I think it is absurd to seperate the study of design from the practice of design". * A Pattern Language (1977, year 13). These are fully formed patterns with the notion that they can be combined to create designs. It's not a simple mix and match - still leaves room for a design process. * The Nature of Order (2003, year 39). Doesn't exactly reject patterns but focuses on wholeness, a set of qualities, and a set of structure preserving transformation that help designs unfold. * The Battle for the Life and Beauty of Earth (2012 - however focuses on 1985, year 21). This focuses on two world views that he saw as in battle - one of which was opposed to his style of building. Reading "Battle" in particular makes you feel our current understanding of patterns and our obsessions with Agile, Design Thinking, etc mean we are in the equivalent of year 25. Reading the above article feels like we're heading towards the equivalent of year 30. I mean this as a compliment.

I recommend SOA Design Patterns by Thomas Erl, Prentice Hall/Arcitura: the meta pattern used in this book seems to have anticipated the objections posted in this article. Now, the term "pattern" itself transmits a clear notion of flexibility. A pattern is not a rule, nor a law, nor a recipe nor a requirement. It implies good judgement and constant tradeoff. This is why it is important to have principles on top of the patterns and strategic objectives and goals on top of the principles: this a serious and formal way to trace effectively what choices were made during the actual design cycle. The above mentioned book together with SOA Principles of Design Patterns by the same author, include two tables which allow tracing the support of the SOA design principles to the SOA strategic goals and benefits, and then trace the application of the SOA design patterns in support of the SOA design principles. Note: I did not see in the article any explanation/justification of why a pattern could not be a best practice? Still, it is an enjoyable article!

Like
Reply
Bhoomin Pandya

Proprietor (ConceptMiners & KalaKrut Platform), EKG, Data Analyst & Dev, Chem Info, Musical Community Platform

7y

Kris, The fractal image is a great addition to the article. Makes it highly insightful.

Like
Reply

Good article. Thanks for sharing.

Like
Reply
Dr Nicolas Figay, HDR

Let's prepare and build the continuous operational Interoperability supporting end to end digital collaboration

7y

Fully agree concerning the trade off between qualities. E.g., trade-off between security/interoperability/flexibility/efficiency. There is not one single perfect solution, but a set of alternatives where we will select the most accurate at a given time considering the motivation of what is to be put in place. A global strategy with well defined target, goals, requirements and constraints will be the condition for selecting a given architecture. Everything behind done within the context of an organisation, here comes the interest of enterprise modeling allowing to capture the motivation and to make the link with business, information system and ICT platforms. Thank you very much for your article :)

Like
Reply

To view or add a comment, sign in

Insights from the community

Others also viewed

Explore topics