Vorlesung 5: Architekturmuster und -stile (Architectural Styles and Patterns) Flashcards

1
Q

Erkläre das Konzept der Architekturstile und Patterns

A

Architekturstile in der Softwarearchitektur

Definition: Architekturstile fassen gemeinsame Merkmale eines Softwaresystems zusammen.
Kategorien: Systeme desselben Stils bilden eine Kategorie von Systemen.
Unterscheidung von Mustern: Architekturmuster konkretisieren oft Architekturstile; beide Begriffe werden manchmal synonym verwendet.
Modularität: Typischerweise fördern Architekturstile Modularität und zyklusfreie Strukturen.

Arten von Architekturstilen:
-Strukturelle Stile
-Implementierungsstile
-Kommunikationsstile
-Ereignisbasierte Stile
-… und andere
Verwendung: Verschiedene Arten von Stilen werden oft in Kombination innerhalb eines einzigen Softwaresystems verwendet.

Aspekte der Architekturstile:
-Elementtypen: Welche Arten von Elementen umfasst der Stil?
-Architekturregeln:
Elementregeln: Gelten für einen einzigen Elementtyp, spezifizieren Schnittstellen und Struktur.
Gebotsregeln: Definieren verbindliche Beziehungen zwischen Elementtypen.
Verbotsregeln: Verbieten Beziehungen zwischen bestimmten Elementtypen.
Fazit: Architekturstile begrenzen die möglichen Kombinationen von Elementen innerhalb einer Architektur und definieren dadurch klare Strukturen und Beziehungen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Erkläre: Strukturelle Architekturstile: Geschichtete Architektur (Layered Architecture)

A

▪ Layering ist eine der klassischsten Arten, ein System zu strukturieren
▪ Ein System (oder eine Komponente) besteht oft aus verschiedenen Schichten:
- Eine Schicht stellt Dienste für die darüber liegenden Schichten bereit
- Eine Schicht kapselt alle Details ihrer Implementierung
- Eine Schicht darf nur direkt auf die Schnittstelle einer darunter liegenden Schicht zugreifen
(wenn nicht: man hat oft zyklische Abhängigkeiten)
▪ Schichten können (mindestens) zwei Sichtweisen haben:
- Logische Struktur
- Physikalische Topologie (d.h. Einsatzsicht)
▪ Schichten erzwingen die Trennung von Belangen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was sind Beispiele für mehrschichtige Architekturen:
Grundlegende Schichten

A

▪ Ein Beispiel für eine Reihe logischer Schichten kann sein…

  • Präsentationsschicht: Enthält die Benutzeroberfläche und ist für die Benutzerinteraktionen verantwortlich.
  • Business-Schicht: Enthält die Geschäfts-/Anwendungslogik.
  • Persistenzschicht: Enthält die für die Speicherung von Daten erforderliche Logik.
  • Datenbank-Schicht: Beinhaltet die eigentliche Speicherung der Daten.

▪ Es kommt darauf an, welche Schichten in einer Schichtenarchitektur vorhanden sind:
- Architektonisch wichtige Anforderungen
- Art des Einsatzes
- Verwendete Technologien

Die Abbildung zeigt: Basic Layered Architecture Deployment Variants

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Erkläre die Zugriffsarten zwischen Schichten und das Layers of Isolation Konzept

A

Zugriffsarten zwischen Schichten:

Closed Layers:
Obere Schichten dürfen nicht auf untere Schichten zugreifen.
Schichten können nicht übersprungen werden.
Open Layers:
Obere Schichten können direkt auf darunterliegende Schichten zugreifen.
Layers of Isolation Konzept:

Änderungen in einer Schicht sollten andere Schichten nicht beeinflussen, solange das Interface unverändert bleibt.
Um dies zu unterstützen, müssen Schichten geschlossen sein:
Offene Schichten können zur Kopplung führen, was Änderungen in einer Schicht auf andere auswirken lässt.
Schlussfolgerung: Schichten sollten nicht geöffnet werden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Erkläre die gemeinsamen Komponenten zwischen Schichten und die Herausforderungen beim Hinzufügen neuer Schichten

A

Geschlossene Schichten und gemeinsame Komponenten

Gemeinsame Komponenten zwischen Schichten:

Erleichtern die Entwicklung.
Bei geschlossenen Schichten können gemeinsame Komponenten nur durch die direkt darunterliegende Schicht über freigegebene Schnittstellen bereitgestellt werden.
Herausforderungen beim Hinzufügen neuer Schichten:

Neue Schichten entfernen den direkten Zugriff einer oberen Schicht auf untere Schichten.
Um den Zugriff auf gemeinsame Objekte zu erhalten, muss die neue Schicht als offen definiert werden.
Erstellen einer neuen offenen Schicht verstößt gegen das Prinzip der Layers of Isolation.
Nicht-Teilen von Objekten:

Schwer zu steuern (z.B. hat die Präsentationsschicht technisch Zugriff auf gemeinsame Komponenten der Geschäftsschicht).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Erkläre die Geschichtete (layered) Architektur im Domain-Driven Design (DDD)

A

DDD und geschichtete Architektur:

Präsentationsschicht:
Verantwortlich für Benutzerinteraktion (Anzeige von Informationen und Interpretation von Befehlen).
Applikationsschicht:
Koordiniert Anwendungsaktivitäten (keine Geschäftslogik).
Domänenschicht:
Enthält Informationen über das Geschäftsdomain.
Infrastrukturschicht:
Unterstützt die anderen Schichten (übergreifende Anliegen, Persistenz, etc.).
Muster und Schichten in DDD:

Muster sind direkt mit einer Schicht verbunden.
DDD impliziert keine physische Topologie für die Schichtbereitstellung.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was sind die Vor-und Nachteile der geschichteten (layered)
Architecture

A

▪ Vorteile einer mehrschichtigen Architektur:
- Einfach, leicht zu erlernen und zu implementieren
- Entkopplung der Schichten führt zu weniger (leichter zu verstehenden) Abhängigkeiten
- Getrennte Komponenten machen das Testen einfacher
- Geringer Overhead bei der Implementierung (wahrscheinlich der Stil mit den geringsten Kosten)

▪ Nachteile einer schichtweisen Architektur:
- Bietet nur technische Partitionierung
- Wachsen ist schwierig (Schichten helfen nicht bei der Skalierung; mangelnde Agilität)
- Abhängigkeiten zwischen den Schichten bleiben bestehen - keine Umkehrung der Abhängigkeiten
- Gruppierung der Funktionalitäten ist nicht fachlich, sondern technisch orientiert
- Offene Schichten sind manchmal notwendig, haben aber hohe Auswirkungen auf die Wartung

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Bitte erkläre: Strukturelle Architekturstile: Ports und Adapter

A

Die Architektur der Ports und Adapter, auch bekannt als hexagonale Architektur, basiert auf dem Prinzip, dass der Geschäftsbereich zentral für die Struktur des Systems ist. In diesem Design:

Fokus auf Geschäftsbereich: Der Kern des Systems umfasst Entitäten, Geschäftsregeln und Funktionen. Es ist so konzipiert, dass es unabhängig von externen Infrastrukturkomponenten ist, was die Trennung der Zuständigkeiten betont.

Definition von Ports: Der Geschäftsbereich ist mit Schnittstellen ausgestattet, die als Ports bezeichnet werden und die Interaktion mit externen Elementen ermöglichen. Diese Ports sind so gestaltet, dass sie verschiedene Abstraktionsebenen unterstützen, einschließlich allgemeiner Funktionalitäten oder spezifischer Aufgaben wie Persistenz und Benachrichtigungen.

Arten von Ports:

Primäre Ports: Diese verbinden den Geschäftsbereich direkt mit externen Systemen, Benutzeroberflächen oder Arbeitsabläufen und handhaben eingehende Interaktionen.
Sekundäre Ports: Diese werden verwendet, um den Geschäftsbereich mit der notwendigen Infrastruktur zu verbinden und nach außen gerichtete Interaktionen zu verwalten.
Diese Architektur erhöht die Modularität und Flexibilität, ermöglicht Änderungen in der Technologie oder Infrastruktur, ohne die Geschäftslogik zu beeinflussen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Sieh dir die Abbildung an: Ports and Adapters as Hexagonal Architecture (Ports und Adapter als sechseckige Architektur)

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Erkläre Strukturelle Architekturstile: Saubere Architektur (clean architecture)

A

▪ Die Saubere Architektur kombiniert Ideen
aus mehreren verwandten Ansätzen
- Ports und Adapter
- Onion Architecture (hier nicht diskutiert
aber im Diagramm sichtbar)
- …
▪ Äußere Kreise sind Mechanismen, innere
Kreise sind Richtlinien
▪ Zentral ist die Abhängigkeitsregel: (Quell
code)-Abhängigkeiten können nur nach
nach innen

▪ Entitäten kapseln die allgemeinsten und
(Geschäfts-)Regeln auf hoher Ebene
▪ Anwendungsfälle orchestrieren den Prozess-/Datenfluss
zwischen Entitäten
▪ Schnittstellenadapter konvertieren eingehende Daten in die
Anwendungsfall-Schicht
▪ Frameworks und Treiber bilden die
Infrastruktursicht / erlauben den Zugriff auf innere
Schichten

Entität exkurs:
Im Kontext der Softwareentwicklung und Systemarchitektur bezieht sich der Begriff „Entitäten“ (englisch: entities) auf Objekte oder Datenstrukturen, die geschäftlich oder funktional bedeutsame Informationen repräsentieren. Entitäten sind oft ein zentraler Bestandteil von Geschäftsdomänen und dienen dazu, die Realität innerhalb des Systems zu modellieren. Sie haben spezifische Attribute und Verhaltensweisen, die ihre Rolle und Funktionen im Geschäftsprozess definieren.

Hier sind einige Schlüsselaspekte von Entitäten:

Datenrepräsentation: Entitäten halten Daten, die für das Geschäft wichtig sind. Dies können zum Beispiel Kunden, Aufträge, Produkte oder Konten sein.

Identität: Entitäten haben oft eine eindeutige Identität (z.B. eine Kundennummer oder eine Produkt-ID), die sie von anderen Instanzen desselben Typs unterscheidet.

Geschäftslogik: Entitäten können Geschäftsregeln und -logik enthalten, die definieren, wie sie sich in verschiedenen Situationen verhalten oder wie sie auf bestimmte Aktionen reagieren.

Beziehungen: Entitäten stehen häufig in Beziehungen zueinander, wie etwa Kunde zu Bestellung oder Produkt zu Kategorie.

In der objektorientierten Programmierung werden Entitäten oft als Klassen modelliert, die dann im laufenden System als Instanzen dieser Klassen existieren. In datenbankorientierten Anwendungen können sie als Datensätze in Tabellen abgebildet werden. Entitäten sind also grundlegende Bausteine in der Softwarearchitektur, die dazu beitragen, die Geschäftsanforderungen im technischen Design eines Systems widerzuspiegeln.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Erkläre die Pros and Cons of Ports and Adapters

A

▪ Vorteile von Ports und Adaptern:
- Implementierung der Business-Domäne völlig unabhängig von technischen Aspekten
(“Infrastruktur”)
- Einfache Wartung durch Trennung von Belangen und Umkehrung von Abhängigkeiten
- Hohe Modularität ermöglicht einfachen Wechsel
- Einfacher Austausch der Infrastruktur möglich (Kern ist technologieunabhängig)
▪ Nachteile von Ports und Adaptern:
- Die strikte Anwendung des Stils erfordert eine saubere und konsistente Implementierung der Geschäftsdomäne (etwas, das oft
fehlt)
- Ports können leicht mit Funktionalitäten aufgebläht werden, was ihre Wartung erschwert (SRP!)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Erkläre Structural Architecture Styles: Pipeline Architecture

A

Der Pipeline-Architekturstil, auch bekannt als “Pipes und Filters”, charakterisiert sich durch eine strukturierte Kommunikation zwischen Komponenten. In diesem Stil:

Pipes: Sie bilden den Kommunikationskanal zwischen den Filtern, mit unidirektionaler, punkt-zu-punkt Verbindung ohne Broadcasting.
Filter: Jeder Filter führt nur eine spezifische Aufgabe aus und ist selbstständig, zustandslos und unabhängig von anderen Filtern.
Die unterschiedlichen Filtertypen umfassen:

Producer (Erzeuger/Pumpe): Der Startpunkt eines Prozesses, der ausschließlich Daten aussendet.
Transformer (Transformator): Führt Transformationen an den Daten durch.
Tester (Prüfer): Überprüft die Daten nach einem oder mehreren Kriterien und erzeugt optional eine Ausgabe.
Consumer (Verbraucher/Senke): Der Endpunkt der Pipeline, der Daten speichert oder anzeigt.
Die einfache und unidirektionale Kommunikation fördert die Wiederverwendung durch Komposition. Pipeline-basierte Strukturen sind häufig in EDI- oder ETL-Tools zu sehen, die zur Verbindung von Datenquellen verwendet werden, und in Prozess-Orchestratoren wie Workflow-Engines, die Informationen zwischen Prozessschritten übertragen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Erkläre die Pipeline Structures in MapReduce (MapReduce ist ein konzeptioneller Rahmen für die Verarbeitung riesiger Datenmengen (es gibt viele Implementierungen).)

A

MapReduce ist ein konzeptioneller Rahmen für die Verarbeitung riesiger Datenmengen (es gibt viele Implementierungen).
▪ Eingabedaten werden aufgeteilt, auf verschiedenen Rechenknoten verarbeitet (d.h. gemappt) und “zusammengeführt” (d.h. reduziert)
▪ MapReduce verwendet eine Pipeline-Struktur auf niedriger Ebene

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Erkläre Vor- und Nachteile von Pipeline-Architekturen

A

▪ Vorteile von Pipeline-Architekturen:
- Sehr einfach zu verstehen und zu implementieren
- Unabhängige Komponenten sind leicht zu ändern und zu testen
- Kann leicht erweitert werden (z. B. durch Hinzufügen neuer Filter)
- Pipeline-Architekturen können sich im Laufe der Zeit weiterentwickeln (einfach zu erweitern und zu ändern)
- Gute Skalierbarkeit bei großen Datenmengen
▪ Nachteile von Pipeline-Architekturen:
- Keine gute Skalierbarkeit hinsichtlich der Systemkomplexität (die Verwendung vieler Filter verringert die Leistung)
- Nur für sehr spezifische Anwendungsfälle geeignet (z. B. weniger geeignet für Benutzerinteraktionen)
- Keine Zusammenarbeit zwischen Filtern (unidirektionales Design ist obligatorisch)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

erkläre Structural Architecture Styles: Microkernel

A

Microkernel-Architekturen bestehen aus zwei Hauptkomponenten:

Anwendungslogik in Plugin-Komponenten: Die Anwendungslogik ist in separaten Plugin-Komponenten gekapselt. Diese Plugins arbeiten unabhängig und greifen nur auf Funktionalitäten zu, die das Kernsystem bereitstellt.

Kernsystem mit Plugin-System: Das Kernsystem bietet ein Plugin-System, das Erweiterbarkeit, Anpassbarkeit und Isolation von Plugins ermöglicht. Es stellt ein Software Development Kit (SDK) zur Verfügung, das ausreichend Erweiterungspunkte („extension points“) für die Funktionsfähigkeit der Plugin-Komponenten bietet.

Verträge: Diese definieren die erwarteten Eingaben, Ausgaben und Verhaltensweisen der Plugin-Komponenten. Es ist üblich, verschiedene Verträge für verschiedene Arten von Plugin-Komponenten zu haben.
Register: Ein Register wird verwendet, um die verfügbaren Plugin-Komponenten zu verwalten und zu identifizieren.
Die Struktur des Kernsystems kann variabel gestaltet werden, und auch die Einsatztopologien des Systems können unterschiedlich sein. Zudem können Plugins unterschiedliche Bindungszeiten aufweisen, was bedeutet, dass sie zu verschiedenen Zeitpunkten während der Laufzeit oder der Kompilierungszeit an das System gebunden werden können.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Siehe die Abbildung an: Microkernel Architecture: Core System Structures

A
17
Q

Siehe die Abbildung an: Microkernel Architecture: Deployment Variants

A
18
Q

Pros and Cons of Microkernel Architectures

A

▪ Vorteile von Mikrokernel-Architekturen:
- Kann technisch oder domänenbasiert partitioniert werden
- Einfach (als Konzept), leicht zu verstehen
- Sehr einfach zu erweitern (Erweiterbarkeit ist das Hauptmerkmal)
- Gute Leistung (typischerweise keine Architektur-Sinkhole)
- Testbarkeit / Zuverlässigkeit gut (Plugin-Komponenten können separat getestet werden)
▪ Nachteile von Mikrokernel-Architekturen:
- Kompliziert zu implementieren
- Schwierig, eine gute Struktur aufrechtzuerhalten (Vertragsmanagement / Versionierung ist der Schlüssel)