ScholarGate
Asisten

Software Architecture Styles

Software architecture styles are named, reusable organizing schemes that define the kinds of components and connectors a system uses and the constraints on how they may be combined.

Temukan Topik dengan PaperMindSegeraFind papers & topics
Tools & resources
Unduh salindia
Learn & explore
VideoSegera

Definition

An architecture style is a family of architectures characterized by a vocabulary of component and connector types and a set of constraints on how instances of those types can be configured.

Scope

This topic covers classic styles such as layered, client-server, pipe-and-filter, repository (data-centered), event-driven and publish-subscribe, microkernel, and service-oriented and microservice architectures; the REST architectural style for networked systems; and the quality-attribute trade-offs that motivate selecting one style over another.

Core questions

  • What vocabulary of components and connectors defines each style?
  • Which quality attributes does a given style promote or inhibit?
  • How are styles combined within a single system?
  • How do networked and distributed styles such as REST and microservices differ from classic ones?

Key theories

Styles as component-connector vocabularies
Shaw and Garlan characterized architectures by recurring patterns of components and connectors with associated constraints, giving the field a vocabulary of styles such as pipe-and-filter, layered, and repository.
REST architectural style
Fielding derived REST as a set of constraints — statelessness, uniform interface, cacheability, layered system — that explain the scalability and evolvability of the web and guide network-based service design.

Clinical relevance

Choosing an appropriate style early aligns the system structure with its dominant quality requirements; a poor fit between style and needs is difficult and expensive to correct once development is underway.

Evidence & guidelines

ISO/IEC/IEEE 42010 frames architecture description in terms of viewpoints and views, within which styles are documented and analyzed.

History

The cataloguing of architectural styles began with Shaw and Garlan in the mid-1990s as software architecture became a recognized discipline; Fielding's 2000 dissertation formalized REST, and the 2010s saw the rise of microservice and event-driven styles for cloud-scale systems.

Key figures

  • Mary Shaw
  • David Garlan
  • Roy Fielding
  • Len Bass

Related topics

Seminal works

  • shaw1996
  • fielding2000
  • bass2012

Frequently asked questions

What is the difference between an architectural style and a design pattern?
An architectural style describes the system-wide organization — the kinds of components and connectors and the rules for combining them — whereas a design pattern solves a more localized design problem within components; styles operate at a higher level of granularity.
Can a system use more than one style?
Yes. Real systems are typically heterogeneous, combining styles — for example a layered architecture whose presentation tier is event-driven and whose services communicate via REST — with each style applied where its trade-offs fit best.

Methods for this concept

Related concepts