Software-Architekturstile
Software-Architekturstile sind benannte, wiederverwendbare Organisationsschemata, die die Arten von Komponenten und Konnektoren definieren, die ein System verwendet, sowie die Einschränkungen, wie diese kombiniert werden dürfen.
Definition
Ein Architekturstil ist eine Familie von Architekturen, die durch ein Vokabular von Komponenten- und Konnektortypen und eine Reihe von Einschränkungen für die Konfiguration von Instanzen dieser Typen gekennzeichnet ist.
Scope
Dieses Thema behandelt klassische Stile wie geschichtete Architekturen, Client-Server, Pipe-and-Filter, Repository (datenzentriert), ereignisgesteuert und Publish-Subscribe, Microkernel sowie serviceorientierte und Microservice-Architekturen; den REST-Architekturstil für vernetzte Systeme; und die Kompromisse bei Qualitätsattributen, die die Wahl eines Stils gegenüber einem anderen motivieren.
Core questions
- Welches Vokabular von Komponenten und Konnektoren definiert jeden Stil?
- Welche Qualitätsattribute fördert oder hemmt ein gegebener Stil?
- Wie werden Stile innerhalb eines einzigen Systems kombiniert?
- Wie unterscheiden sich vernetzte und verteilte Stile wie REST und Microservices von klassischen?
Key theories
- Stile als Komponenten-Konnektor-Vokabulare
- Shaw und Garlan charakterisierten Architekturen durch wiederkehrende Muster von Komponenten und Konnektoren mit zugehörigen Einschränkungen, wodurch dem Feld ein Vokabular von Stilen wie Pipe-and-Filter, geschichtet und Repository gegeben wurde.
- REST-Architekturstil
- Fielding leitete REST als eine Reihe von Einschränkungen ab – Zustandslosigkeit, einheitliche Schnittstelle, Cache-Fähigkeit, geschichtetes System –, die die Skalierbarkeit und Entwicklungsfähigkeit des Webs erklären und das Design netzwerkbasierter Dienste leiten.
Clinical relevance
Die frühzeitige Wahl eines geeigneten Stils richtet die Systemstruktur an ihren dominanten Qualitätsanforderungen aus; eine schlechte Übereinstimmung zwischen Stil und Anforderungen ist schwierig und kostspielig zu korrigieren, sobald die Entwicklung im Gange ist.
Evidence & guidelines
ISO/IEC/IEEE 42010 rahmt die Architekturbeschreibung in Bezug auf Standpunkte (viewpoints) und Ansichten (views) ein, innerhalb derer Stile dokumentiert und analysiert werden.
History
Die Katalogisierung von Architekturstilen begann Mitte der 1990er Jahre mit Shaw und Garlan, als Softwarearchitektur zu einer anerkannten Disziplin wurde; Fieldings Dissertation aus dem Jahr 2000 formalisierte REST, und in den 2010er Jahren entstanden Microservice- und ereignisgesteuerte Stile für Cloud-basierte Systeme.
Key figures
- Mary Shaw
- David Garlan
- Roy Fielding
- Len Bass
Related topics
Seminal works
- shaw1996
- fielding2000
- bass2012
Frequently asked questions
- Was ist der Unterschied zwischen einem Architekturstil und einem Entwurfsmuster (Design Pattern)?
- Ein Architekturstil beschreibt die systemweite Organisation – die Arten von Komponenten und Konnektoren und die Regeln für deren Kombination –, während ein Entwurfsmuster ein lokalisierteres Entwurfsproblem innerhalb von Komponenten löst; Stile operieren auf einer höheren Granularitätsebene.
- Kann ein System mehr als einen Stil verwenden?
- Ja. Reale Systeme sind typischerweise heterogen und kombinieren Stile – zum Beispiel eine geschichtete Architektur, deren Präsentationsebene ereignisgesteuert ist und deren Dienste über REST kommunizieren –, wobei jeder Stil dort angewendet wird, wo seine Kompromisse am besten passen.