Recently, I have had discussions with folks at Microsoft about Architecture Styles. This term has been used in the IT industry for a very long time. I think the earliest reference was in the early 80's. But that is neither here, nor there in my opinion. We have been using this concept for a long time. As you can see from my graphic I used above, architecture styles are also used in the other architecture field as well. I think this provides us with a great way of relating what that means to our field.
So what is this term, Architecture Style? It's a bit difficult to answer this as there really isn't a full definition for this term. It's a lot like standards such as IEEE 1471. There is a very loose definition and could be subject to interpretation. From what I have observed, that is very much the case.
You can find references on:
- Wikipedia: Software Architecture
- Book: A Practical Guide to Enterprise Architecture (James McGovern, Scott W. Ambler, Mike Stevens)
So I will define what an Architecture Style means to me and hopefully it will resonate with all of you. I would love to hear your feedback as well.
An Architecture Style is a logical grouping of patterns or architecture references that is implemented through cohesive methods for solving a problem area with a unique set of concerns.
Over the years I have heard this term used in certain circles. I personally use this term for awhile to describe ways of implementing technology solutions. I find it helps articulate concepts a bit easier. The value that I see is:
- It provides framing to have a conversation about a specific topic area
- For example, Software + Services Architecture Style will be very different than a traditional SOA Architecture Style
- Can group a series of patterns or assets in a meaningful way
- If used correctly it can definitely increase the comprehension of complex topic areas
I created a high level mind map that describes the concepts at a high level. This is somewhat of a mind dump and isn't the final by no stretch. It's a good starting point to have a conversation on Architecture Styles.
For concepts as abstract as Architecture Styles it is important to have samples of that it means along with a rough structure of what qualifies as a style. The mind map below attempts to do that with classifications and examples.
As you can see in the mind map I show the structure of the Architecture Style. It is represented as hierarchal but in a real world implementation it will be less about a hierarchal structure and more about orchestration of patterns into styles.
As you can see from the example above, Service Orientation is the Master Architecture Style that contains a series of Sub Architecture Styles. This shows that styles can have sub styles. This isn't a rule by no stretch. However when there are complex styles such as Service Orientation with such broad sweeping implementations it is important to put more formalization around classifying styles and sub styles.
For Service Orientation there are a variety of styles in which to implement. I picked a few to illustrate this point. You may notice that SOA isn't shown. That is because it is a fully loaded term that mixes the principles of an architecture style with the implementation that is generally expressed in a pattern.
What I am illustrating above is the separation of architecture concerns. This helps us classify many styles and/or implementations on the principles of Service Orientation. The result provides a taxonomy to represent different architecture styles. Thus, providing a way to understand, consume and create architecture.
To articulate these concepts back to architecture you can touch... As an example, you could take two 19th century Tudor style homes and they could be very different form each other. The look and feel, most materials and high level layout (style) will be the same. However, the implementation of: room layouts, quality of materials, electrical, networking and central air (patterns) installation can be vastly different.
Even though they follow the same template or style there are between multiple homes if the same style they can be quite different from an implementation perspective. What we see here is that the style of the home is the same where they share some common principles for building however under the scenes there can be a vast amount of design decisions that change the home is built.
I do see that there are some challenges with using abstract concepts such as Architecture Styles. These include:
- Lack of consistent usage
- Usage of the term out of context
- Mixing the term pattern with architectural style
- Lack of industry consensus (The most important one)