InfoQ

News

A Quick Look at Architectural Styles and Patterns

Posted by Abel Avram on Feb 11, 2009

Community
Architecture
Topics
Messaging ,
Methodologies
Tags
Patterns ,
Patterns and Practices ,
Event Stream Processing

App Arch Guide 2.0 (Microsoft patterns&practices), Chapter 6, talks about architectural styles like Message-Bus, Layered Architecture, SOA. Beside those styles there are numerous architectural patterns like Plug-in, Peer-to-Peer, Publish-Subscribe. Some authors make a difference between architectural styles, patterns and metaphors.

What is an architectural style? According to App Arch Guide, an architectural style is:

A set of principles. You can think of it as a coarse-grained pattern that provides an abstract framework for a family of systems. An architectural style improves partitioning and promotes design reuse by providing solutions to frequently recurring problems.

The authors of the guide list a number of architectural styles:

Architecture style Description
Client-Server Segregates the system into two applications, where the client makes a service request to the server.
Component-Based Architecture Decomposes application design into reusable functional or logical components that are location-transparent and expose well-defined communication interfaces.
Layered Architecture Partitions the concerns of the application into stacked groups (layers).
Message-Bus A software system that can receive and send messages that are based on a set of known formats, so that systems can communicate with each other without needing to know the actual recipient.
N-tier / 3-tier Segregates functionality into separate segments in much the same way as the layered style, but with each segment being a tier located on a physically separate computer.
Object-Oriented An architectural style based on division of tasks for an application or system into individual reusable and self-sufficient objects, each containing the data and the behavior relevant to the object.
Separated Presentation Separates the logic for managing user interaction from the user interface (UI) view and from the data with which the user works.
Service-Oriented Architecture (SOA) Refers to Applications that expose and consume functionality as a service using contracts and messages.

Each of those architectural styles are applied to specific areas of interest:

Category Architecture styles
Communication Service-Oriented Architecture (SOA), Message Bus, Pipes and Filters
Deployment Client/server, 3-Tier, N-Tier
Domain Domain Model, Gateway
Interaction Separated Presentation
Structure Component-Based, Object-Oriented, Layered Architecture

J.D. Meier, summarizing a few key points from the book A Practical Guide to Enterprise Architecture by James McGovern, Scott W. Ambler, Michael E. Stevens, James Linn, Vikas Sharan, and Elias K. Jo, noted a subtle difference between architectural styles and patterns:

  • An architectural style is a central, organizing concept for a system.
  • An architectural pattern describes a coarse-grained solution at the level of subsystems or modules and their relationships.
  • A system metaphor is more conceptual and it relates more to a real-world concept over a software engineering concept.

David Calvert made in 1996 a partial list of architectural styles/patterns:

  • Dataflow Systems -- Batch sequential, Pipes and filters.
  • Call-and-return systems -- Main program and subroutines, OO systems, Hierarchical layers.
  • Independent components -- Communicating processes, Event Systems.
  • Virtual Machines -- Interpreters, Rule-based systems.
  • Data-centered systems (repositories) -- Databases, Hypertext system, Blackboards.

Other more modern styles/patterns are: Plugin, Peer-to-Peer, Shared Nothing Architecture, Representational State Transfer (REST), Front-end and back-end. There is a more complete list on Wikipedia.

suggestion by ganesh ghag Posted Feb 12, 2009 2:58 AM
Re: suggestion by Ersin Er Posted Feb 12, 2009 5:49 AM
  1. Back to top

    suggestion

    Feb 12, 2009 2:58 AM by ganesh ghag

    maybe it would be better to talk about relevant styles in context of a partcular architectural view( like logical, physical, etc). some styles are really peers/choices in the physical view and some in the logical view

  2. Back to top

    Re: suggestion

    Feb 12, 2009 5:49 AM by Ersin Er

    The table below "Each of those architectural styles are applied to specific areas of interest:" somehow tries to make such a distinction but it's not of course formally stated with respect to views.

Educational Content

Brian Marick on 4 Challenges and 5 Guiding Values of Agile Software Development

Brian Marick takes us through a quick tour of the most important values and challenges to adopting Agile successfully (they aren't the typical challenges and values we hear in the community).

Are You a Software Architect?

The line between development and architecture is tricky. Does it exist at all? Is an ivory tower actually needed? There's a balance in the middle, but how do you move from developer to architect?

Agile – A Way of Life and Pragmatic Use of Authority

The word 'authority' sometimes produces an allergic response in hard-line agilists. Freedom and authority – both are bad if misused and both are good if used in right spirit for a noble cause.

Getting Started with Grails, Second Edition

"Getting Started with Grails" brings you up to speed on this modern web framework. Companies as varied as LinkedIn, Wired, and Taco Bell are all using Grails. Are you ready to get started as well?

Using ITIL V3 as a Foundation for SOA Governance

Those familiar with only ITIL V2 often scoff at the thought that ITIL could serve as a governance framework for SOA. With ITIL V3, the focus of the framework shifted towards service-orientation.

Adrian Colyer on AspectJ, tc Server and dm Server

SpringSource CTO Adrian Colyer discusses AspectJ, SpringSource's dm Server and tc Server products, OSGi and Scrum.

Adam Wiggins on Heroku

Heroku's Adam Wiggins talks about Rails, Background Jobs, Add-Ons, Ruby, and how Heroku manages to work around Ruby's inefficiencies using Erlang and other languages.

SOA as an Architectural Pattern: Best Practices in Software Architecture

For Grady Booch the foundation of a good architecture is patterns, SOA being just one of many patterns. In this Second Life presentation, Booch attempts to bring more clarity on what architecture is.