Filtre og rør

I dataarkitektur består et system i stil med filtre og rør (engelske rør og filtre ) av et nettverk av autonome enheter (filtre) som utfører transformasjoner på informasjon som overføres av et nettverk av forbindelser (rør).

I denne konstruksjonen, som etterligner et kjemisk anlegg, har hvert filter innløp og utløp som rørene er koblet til. Filteret leser inndatainformasjonen, utfører en transformasjon og sender deretter ut resultatet. Behandlingen gjøres bit for bit, og filteret produserer resultatene før det har fortært all inngangsinformasjonen. Filtrene kommuniserer kun med hverandre gjennom rørene, og ingen filter vet identiteten til filteret som er plugget i den andre enden av røret.

Den mest kjente implementeringen er den av Unix- operativsystemet : Kommandotolken ( Unix-skall ) inkluderer en notasjon som gjør det mulig å koble flere kommandoer i form av et nettverk av filtre og rør. Filter- og rørkonstruksjonen brukes også til kompilatorer , digitale signalbehandlingsverktøy og parallell databehandling .

Teknisk

Filter- og rørstilen er analog med et kjemisk anlegg. I hvilke filtre som forårsaker kjemiske reaksjoner på materialer som transporteres med rør. I filter-og-rør-stil bærer en rekke rør informasjon som blir behandlet av filtre.

Filternettverket kan være lineært ( rørledning ), det kan også omfatte løkker eller grener. Filtre fungerer asynkront og har liten eller ingen delt informasjon. Det er utveksling av informasjon gjennom rørene som synkroniserer operasjonene. Informasjonen kan skyves inn i rørene eller suges: i det første tilfellet (presset) deponerer kildefilteret informasjon og dette forårsaker behandling av samlefilteret; i det andre tilfellet (sugd) ber innsamlingsfilteret om informasjon og dette forårsaker behandlingen av kildefilteret.

Filter-og-rør-stilen er godt egnet for behandling av datastrømmer, en type bruk som den klassiske stilen for spørsmålssvar vanligvis ikke kan brukes på. Datastrømmen skal utformes slik at den kan leses, behandles og skrives i små blokker, i stedet for en operasjon eller bit for bit, for å øke gjennomstrømningen.

Operasjonen som skal utføres er delt inn i flere behandlinger utført av autonome enheter koblet sammen til et nettverk av rør. Hvert filter forbruker og produserer informasjon trinnvis, og resultatet produsert av ett filter forbrukes av det neste filteret. Filtrene kobles fra ved bruk av bufferminne som beholder den utvekslede informasjonen.

Fordeler og ulemper

Filter- og rørarkitekturen er enkel å beskrive, forstå og implementere. Det er mulig å lage et grafisk grensesnitt som lar deg interagere med å filtrere og rør. Filtrene er uavhengige, og denne konstruksjonen tillater parallellitet og distribuert beregning .

Ulempene med denne arkitekturen er at det er vanskelig å implementere iterasjoner : informasjonen som sendes i rørene tillater ikke å vite hvor mange ganger operasjonen har blitt utført. Og fordi hver utgående informasjon må overføres til inngangen til et annet filter, kan hyppig kopiering av store mengder informasjon kaste bort tid. I tillegg er filtrene designet for å være strengt uavhengige enheter som ikke deler tilstandsinformasjon, og filtrene og rørarkitekturen tilbyr ikke en mekanisme for å omkonfigurere strømmen under prosessering.

Ytelsesfordelene med denne konstruksjonen er at den lett lar prosessering utføres parallelt, noe som generelt forbedrer ytelsen. Rørene alene sørger for kommunikasjon mellom filtrene, avhengighetene mellom filtrene blir dermed redusert, noe som reduserer antall synkroniseringsoperasjoner. Underinndelingen med filtre kan imidlertid være en ulempe: hvis behandlingene av filtrene utføres på små datamengder, øker dette antall kontekstbrytere , noe som har en negativ innvirkning på ytelsen.

Fra et vedlikeholdssynspunkt er det også fordeler og ulemper: Transformasjonen av filter- og rørnettverket er enkel, og det er mulig å modifisere dette nettverket under behandlingene. Ny funksjonalitet kan gis ved å legge til nye filtre og endre nettverket. En endring i en funksjon krever imidlertid endring av flere filtre. I praksis utveksler systemer vanligvis objekter som representerer virkelige enheter , og det å støtte en endring av objektet krever ofte endring av flere filtre som jobber med det objektet.

Påliteligheten til en filter- og rørkonstruksjon avhenger av topologien til rørnettverket. Suksessen til en operasjon avhenger av suksessen til alle filtre som er involvert i operasjonen. I motsetning til andre konstruksjoner der den primære komponenten kan gi et resultat selv om de sekundære komponentene har mislyktes.

Bruker

Den mest kjente implementeringen av denne stilen er i Unix- operativsystemet , spesielt kommandotolken . Kommandoer som katt , grep , sed og awk kan kobles sammen med rør .

Et annet eksempel er standardkonstruksjonen til en kompilator : typisk består denne av forskjellige filtre som utfører leksikalanalyse , analyserer deretter semantisk analyse, og rørene har en strøm av bokstaver, ord og symboler.

Jitter er et programvarebibliotek i filtre og rørarkitektur som behandler rasterbilder, lyd, 3D-bilder.

DirectShow , fra Microsoft , er et medieavspillingsbibliotek for filter og rør.

Khoros er et digitalt signalbehandlingsbibliotek i filter- og rørarkitektur .

Merknader og referanser

  1. (i) Vincenzo Ambriola, Genoveffa Tortora, Fremskritt innen software engineering og kunnskap prosjektering , World Scientific - 1993 ( ISBN  9789810215941 )
  2. (en) Jan Bosch, Design og bruk av programvarearkitekturer: vedta og utvikle en produktlinjetilnærming , Pearson Education - 2000, ( ISBN  9780201674941 )
  3. (in) Frank Buschmann, Kevlin Henney, Douglas C. Schmidt, Mønsterorientert programvarearkitektur: Et mønsterspråk for distribuert databehandling , John Wiley & Sons - 2007 ( ISBN  9780470059029 )
  4. (en) Branislav Kisačanin, Shuvra S. Bhattacharya, Sek Chai, Embedded computer vision , Springer - 2009, ( ISBN  9781848003033 )
  5. (in) William Crawford, Jonathan Kaplan, J2EE designmønstre , O'Reilly Media Inc. - 2003 ( ISBN  9780596004279 )
  6. (in) Oliver Vogel Ingo Arnold, Arif Chughtai Timo Kehrer, Software Architecture: A Comprehensive Framework and Guide for Practitioners , Springer - 2011 ( ISBN  9783642197352 )