InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

A Quick Look at Architectural Styles and Patterns

Posted by Abel Avram on Feb 11, 2009

Sections
Enterprise Architecture,
Process & Practices,
Development,
Architecture & Design
Topics
Messaging ,
Architecture ,
Methodologies
Tags
Patterns and Practices ,
Patterns ,
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.

Related Sponsor

In today’s hyper-competitive world, later may be too late to adopt Agile development and this Roadmap for Success will help you get started. Download "Agile Development: A Manager's Roadmap for Success" now!

suggestion by ganesh ghag Posted
Re: suggestion by Ersin Er Posted
  1. Back to top

    suggestion

    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

    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

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.

Beauty Is in the Eye of the Beholder

Alex Papadimoulis discusses ugly code, where it comes from, how to avoid it, and how to get rid of it.

Architecting Visa for Massive Scale and Continuous Innovation

John Davies examines Visa’s architecture and shows how enterprises have architected complex integrations incorporating Hadoop, memcached, Ruby on Rails, and others to deliver innovative solutions.

Max Protect: Scalability and Caching at ESPN.com

Sean Comerford unveils ESPN.com’s architecture, what components are used and why, and the current changes the website goes through.

The Seven Deadly Sins of Enterprise Agile Adoption

Are there repeated patterns of failure on Enterprise Agile Enablement efforts? Sanjiv and Arlen discuss Seven Deadly Sins to avoid when adopting Agile in an enterprise.

Questions for an Enterprise Architect

Erik Dörnenburg answers: What is Enterprise and Evolutionary Architecture?, discussing 4 issues: Turning strategy into execution, Ensuring conformance, Where do the architects sit? Buying or building?

Wrap Your SQL Head Around Riak MapReduce

Sean Cribbs explains what Map-Reduce and Riak are, why and how to use Map-Reduce with Riak, and how to convert SQL queries into their Map-Reduce equivalents.