Java Reference
In-Depth Information
Filters jedoch ist, hängt jedoch von der Spezifikation des Datenformats der Datenka-
näle ab. Quelle und Senke können bei entsprechendem Datenformat ebenfalls
leicht ausgetauscht werden. Filter können auch leicht zusammengefasst werden.
x Im Hinblick auf Rapid Prototyping stellt sich die Verwendung dieses Musters als gro-
ßer Vorteil heraus. Filter können von verschiedenen Personen bei Vorliegen der
Schnittstellenspezifikation schnell entwickelt und integriert werden. Nach Fertigstel-
lung der Filter kann ihre Funktion unabhängig voneinander überprüft werden.
x Nicht benachbarte Verarbeitungsstufen teilen keine Informationen und sind daher
entkoppelt.
x Das Speichern von Zwischenergebnissen ist nicht notwendig, aber möglich. Das
Zwischenspeichern von Daten in einer Pipeline ist jedoch fehlerträchtig. Ein solches
Speichern von Zwischenergebnissen könnte beispielsweise genutzt werden, um
Rohdaten für andere Systeme oder Zwecke zur Verfügung stellen.
x Die Aufgaben der Filter können bis zu einem gewissen Grad parallel abgearbeitet
werden, wenn aktive Filter überlappend arbeiten. Dies setzt allerdings voraus, dass
dabei ein Datenstrom vorliegt, der von den verschiedenen Filtern bearbeitet werden
kann.
x Filter können sehr leicht in anderen Filterketten wiederverwendet werden.
5.2.4.2 Nachteile
Die folgenden Nachteile werden gesehen:
x Die Realisierung der Fehlerbehandlung ist schwierig, da im System kein gemein-
samer Zustand existiert.
x Der langsamste Filter in der Kette bestimmt die Verarbeitungsgeschwindigkeit. Es
gibt keine vollständige Parallelisierung, da die Filter aufeinander warten müssen.
x Ist das Format der Datenkanäle nicht sorgfältig spezifiziert, können große Aufwände
bei der Datenkonvertierung in einzelnen Filtern entstehen. Je nach Schnittstellen-
spezifikation der Filter können viele Konvertierungen notwendig sein.
5.2.5 Einsatzgebiete
Die Einsatzgebiete von Pipes and Filters reichen von der Bildverarbeitung bis zu kom-
plexen Simulationssystemen. Ein berühmtes Beispiel des Musters ist der Kommando-
zeileninterpreter von Unix-Systemen. Hier können Ausgaben von Programmen mittels
Pipes an weitere Programme übergeben werden.
Zwei benachbarte aktive Filter, die über eine Pipe kommunizieren, kommen beim Pro-
ducer-Consumer-Muster (siehe beispielsweise [Tan09]) vor. Ein Consumer holt sich
nur dann Daten aus der Pipe, wenn er diese braucht. Ein Producer erzeugt Daten
asynchron zu einem Consumer und übergibt sie der Pipe.
Ein Beispiel für eine Kette von Filtern ist ein Compiler mit seinen verschiedenen Pha-
sen:
Search WWH ::




Custom Search