October 26, 2005
@ 12:36 AM

I claimed in the past (on my "what's software architecture" post) that Architecture is a type of design - if that is true, an interesting question is do we also have architectural patterns ?

 

I think the answer is yes - there are architectural patterns they are also called architectural styles - I actually like this term better as it is helps differentiate them from design patterns; for example I agree with  Harry Pierson's observation  that many of the patterns in Martin Fowler's PoEAA are indeed technical patterns at an engineering or design level and not architectural patterns.

 

The difference between architecture styles and design patterns is similar to  the distinction between architecture and design - architectural styles effect the solution globally or at least it affects major parts of the solution and not solve local issues. Although it is interesting to note that some architecture styles have been well known well before the notion of design patterns for software was introduced.

 

SEI's architecture glossary defines Architecture Style as

"A specialization of element and relation types, together with a set of constraints on how they can be used."

That's a good start but it might be a little hard to understand we can basically say that an architectural style  defines a family of solutions in terms of a pattern of structural organization using a vocabulary of  components and connector types (plus constraints on their use). It is also worth mentioning that different styles can be combined to create compound or derived styles.

I'll try to illustrate what a style is using an example:

 

One of the basic architecture styles is "Layered architecture":

 

The layered style is composed of layers (the components) which provides facilities and has a specific roles. The layers have communication paths / dependencies (the connectors).

In a layered style a layer has some limitations on how it can communicate with other layers (the constraints). Typically a layered is allowed to call only the layer below it and be called only by the layer above it (but there are variants e.g.  a layer can call to any layer below it; vertical layers that can call multiple layers; etc. - as long as the layers communication paths are limited by some rules)

 

You can see the application of layered style all over the place for example: logical software layers (e.g. presentation component, UI Controllers, business processes, business components, data entities, data access layer) , SOA layers (fundamental , Intermediate, Process), physical tiers (e.g. database server, application server, web server and clients)  etc.

 

There are many other architecture styles including for example pipe and filter, push based, peer-to-peer, blackboard, MVC, PAC, or the more recent Adaptive Object Models, REST and SOA (some will probably disagree that SOA is a style - but I'll try to explain why I think it is on another opportunity). I'll try to talk a little about some of them in the next posts.


 
Tuesday, November 01, 2005 3:22:47 AM (GMT Standard Time, UTC+00:00)
I am curious what you think of the architectural patterns put forward in "Patterns for e-Business" by Galambos, Vasudeva, Adams, and Koushik? See http://www.amazon.com/exec/obidos/ASIN/1931182027/calebspublish-20/103-9933894-1911837?creative=327641&camp=14573&link_code=as1
Tuesday, November 01, 2005 9:42:05 PM (GMT Standard Time, UTC+00:00)
Hi Philip
Thanks for the comment - I have to admit I did not read this book (added to "to buy&read list" :)) - thus, I can't really comment on the patterns described there (and I am afraid judging them by their name would be too superficial)

In any event, since I consider architecture a type of desing I believe you can still apply design patterns on the architecture (i.e. you can say that the architecture has layered sytle and apply the chain of responsibility pattern within a layer) so a style would denote the patterns applied on the architectue as awhole and design patterns will be used to model/communicate specific areas within the architecture

Arnon
Thursday, March 16, 2006 3:05:17 PM (GMT Standard Time, UTC+00:00)
Hi Philip,

I think Microsoft pattern and practice group did a great job in defining what is architecture pattern, design pattern and what is implementation patterns.

Although article title is "Enterprise Solution Patterns Using Microsoft .NET" but the principles defined are very true in general solution architecture space.

Link: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnpatterns/html/Esp.asp


I would not call layered approach for architecting the software as architecture style instead I view it as an architecture pattern. The same goes for MVC and pipe and filter etc.

Well, as far as PoEAA book is concerned, I'm a regular reader of Martin Fowler and I do recall him mentioning this couple of times in blog that the work for PoEAA is was incomplete and it does not cover broad range of patterns available in solution architecture space. And that is the reason he is coming up with second part of that book.

Thanks,
Gaurav
Gaurav Vijawyargia
Comments are closed.