- Pipes and Filters
-
Das Pipes-and-filters-Muster ist ein Architekturmuster aus dem Bereich der Softwareentwicklung. Es beschreibt die Struktur für Systeme, die Datenströme verarbeiten.
Aufbau
Das Bild stellt schematisch ein System dar, das auf dem Pipes-and-filters-Muster basiert. Das System wird durch mehrere unabhängige Einheiten strukturiert:
- Filter: Ein Filter ist ein Verarbeitungsschritt. Jeder Filter hat eine Dateneingabe und eine Datenausgabe. In jedem Verarbeitungsschritt werden die einkommenden Daten umgewandelt. Bei der Umwandlung können den Daten Teile entnommen, hinzugefügt oder auch vollständig ersetzt werden. Die Art der Umwandlung wird durch den Filter bestimmt.
- Pipes: Eine Pipe stellt eine Verbindung zwischen den einzelnen Verarbeitungsschritten dar. Der Name lässt sich durch den englischen Begriff für Kanäle (pipes) herleiten.
Im dargestellten Bild ist ein System schematisch dargestellt, bei dem die Daten links ankommen (Dateneingabe) und in mehreren Schritten verarbeitet werden. Das Ergebnis des Gesamtsystems wird rechts wieder ausgegeben (Datenausgabe). Der Ausgang eines Verarbeitungsschrittes ist gleichzeitig der Eingang des nachfolgenden Verarbeitungsschrittes. Das Ergebnis des Systems ist somit abhängig von der Eingabe; der Abhängigkeitsgraph ist linear.
Die Verarbeitungsschritte können immer wieder neu angeordnet werden. Stehen beispielsweise 3 verschiedene Filter zur Verfügung, so können daraus 15 verschiedene Systeme gebildet werden:
- 3-Schrittsysteme: {1,2,3} {1,3,2} {2,1,3} {2,3,1} {3,1,2} {3,2,1}
- 2-Schrittsysteme: {1,2} {1,3} {2,1} {2,3} {3,1} {3,2}
- 1-Schrittsysteme: {1} {2} {3}
Diese 15 Systeme können auch als eine „Familie“ verwandter Systeme bezeichnet werden.
Durch diese Architektur ergeben sich einige Vorteile:
- Systemerweiterungen sind durch Austausch oder Erneuerung von Filtern möglich.
- Wird ein Filter als Komponente eines Systems betrachtet, so ist das System leichter an unterschiedliche Kontexte anzupassen, als wenn das System aus einer einzigen großen Komponente bestünde.
Varianten
Eine Variante des Pipes-and-filters-Musters ist das Tee-and-join-Pipeline-System.[1] Hier einige Unterschiede:
- Es sind mehrere Ein- und Ausgabekanäle pro Filter erlaubt. Dadurch können auch verschiedene unabhängige Datenströme in Abhängigkeit zueinander verarbeitet werden.
- T-Filter oder auch T-Pipes ermöglichen das Aufteilen eines Datenstroms, oder umgekehrt, das Zusammenführen zweier Datenströme. Die zwei Datenströme können daraufhin in unterschiedlicher Weise parallel weiter verarbeitet werden.
- Datenschleifen sind erlaubt: Die Ausgabe eines Filters kann wieder zurückgeführt werden als Eingabe einer vorhergehenden Filtereinheit. Informationen, die in den Eingabedaten enthalten sind, können somit erneut verarbeitet werden. Dadurch ist es insbesondere möglich, nicht lineare Systeme zu bilden.
Einzelnachweise
- ↑ Buschmann, Frank et al: Pattern-orientierte Softwarearchitektur – Ein Pattern System. Addison-Wesley (Deutschland) GmbH, 1. korr. Nachdruck 2000
Wikimedia Foundation.