Partenaire Premium

POSA 1 - Part 1

Pattern Oriented Software Architecture

Pattern Oriented Software Architecture


Non visible

Fichier Détails

Cartes-fiches 11
Langue Deutsch
Catégorie Informatique
Niveau Université
Crée / Actualisé 29.12.2015 / 09.01.2016
Attribution de licence Non précisé    (Jeyanthan Ravindran)
Lien de web
https://card2brain.ch/box/layerspattern
Intégrer
<iframe src="https://card2brain.ch/box/layerspattern/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Layers-Pattern

Kontext
 Ein grosses Anwendungssystem, welches strukturiert werden soll. Bekanntes Beispiel: OSI-Layer.

Problem
 Ein System soll aus unterschiedlichen High- und Low-Level Funktionen erstellt werden.

Lösung
 Die Anwendung soll in Layers aufgeteilt werden, wobei Layering eine horizontale Aufteilung der Anwendung darstellt. Layer einer höheren Schicht dürfen nur auf die Layers von den unteren Schichten zugreifen. In der Regel dürfen diese nur auf den direkt darunterliegenden Layer zugreifen. Dieser leitet die Anfragen anschliessend ggf. an den erneut darunterliegenden Layer weiter.

Relaxed Layered System

Einem Layer wird erlaubt einzelne darunterliegende Layers zu
überspringen. Er kann somit z.B. auf ein drei Schichten tieferen Layer zugreifen.
Dies führt zu mehr Flexibilität und besserer Performance, jedoch auf Kosten der
Maintainability.

Layering Trough Inheritance

Tiefere Layer implementieren deren Funktionalität als Basisklassen. Höhere Layer leiten von diesen Klassen ab und können dadurch das Verhalten anpassen. Dadurch entsteht jedoch eine sehr starke Kopplung, daher ist davon abzuraten.

Pipe and Filters

Das Pipes and Filters Patterns (oder Data Flow Architektur) wird bei Anwendungen die Datenströme verarbeiten angewendet. Die einzelnen Verarbeitungsschritten entsprechen den Filtern. Die Pipes, welche jeweils zwei Filter verbinden, stellen den Datenstrom zwischen den Filtern dar. Die einzelnen Filter sollten unabhängig realisiert werden und haben keine Abhängigkeit untereinander. Dadurch wird eine hohe Flexibilität erreicht.

Lösung:
 Die Aufgaben eines Systems werden in einzelne sequentielle Prozessschritte unterteilt. Jeder einzelne Prozessschritt wird als Filter implementiert, welcher einen Datenstrom entgegen nimmt, verarbeitet und zu einem ausgehenden Datenstrom führt. Die Quelle (Pump) der Daten, die Filterkomponente sowie die Senke (Verbraucher) sind jeweils
durch eine Pipe verbunden. 

Für die Kommunikation zwischen den Filtern sollte ein uniformes Datenformat etabliert werden. Dadurch können die Filter unabhängig zum vorherigen Filter kombiniert werden. Die Transformation in das Datenformat kann jedoch zu grossem Overhead führen.

Push Pipeline

Sämtliche Filter arbeiten Passiv. Die Datenquelle initiiert den Datenfluss (triggert den ersten Filter). Der Datenfluss triggert jeweils den folgenden Filter.

Pull Pipeline

Der Kontrollfluss wird dadurch gestartet, dass die Senke nach Daten fragt. Die Anfrage propagiert bis zur Datenquelle wodurch der Datenfluss initiiert wird.

Mixed Push-Pull-Pipeline

Bei der Mixed Push-Pull-Pipeline ist sowohl die Datenqulle wie auch der Datensink passiv. Der Datenfluss wird durch einen Filter in der Pipeline initiiert. Dessen Anfrage propagiert bis zur Datenquelle, welche dann den Datenfluss startet.

Complex

Bei dieser Varianten sind sämtliche Filter aktiv. Die Pipes unterstützen ein Buffern der Daten. Die einzelnen Filter laufen in einem eigenen Thread und arbeiten die Daten immer so lange ab, solange Daten in der Pipe verfügbar sind. Jeder
Filter verarbeitet solange Daten, bis die Pipe leer ist, in diesem Fall wartet dieser auf eingehende Daten.