SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Padrões Arquiteturais

               Estruturais:
            Pipes e Filtros
Pipes e Filtros
•  O padrão “Pipes e Filtros” provê uma estrutura
   para sistemas que processam fluxos de dados.
•  Cada passo de processamento é encapsulado
   em um componente Filtro.
•  Dados são passados através de pipes entre
   filtros adjacentes.
•  Recombinando-se filtros é possível construir-se
   famílias de sistemas relacionados.


2                Livro Texto: Pattern Oriented Software   2Eduardo N. F. Zagari
                        Architecture - Buschmann
Exemplo




3   Livro Texto: Pattern Oriented Software   3Eduardo N. F. Zagari
           Architecture - Buschmann
Contexto
•  Processamento de fluxo de dados (data
   stream)




4             Livro Texto: Pattern Oriented Software   4Eduardo N. F. Zagari
                     Architecture - Buschmann
Problema
•  Problemas na implementação de um
   sistema de processamento de fluxo de
   dados com um único componente:
    – Sistema pode ter que ser construído por
      vários desenvolvedores
    – A tarefa global do sistema pode se decompor
      naturalmente em vários estágios de
      processamento
    – Requisitos provavelmente podem mudar
5                Livro Texto: Pattern Oriented Software   5Eduardo N. F. Zagari
                        Architecture - Buschmann
Problema
•  Para se projetar um sistema de processamento
   de streams que seja flexível, deve-se considerar
   os seguintes aspectos:
    –  Devem ser possíveis futuras melhorias no sistema
       pela troca de passos de processamento ou pela
       recombinação de passos (mesmo por usuários)
    –  Pequenos passos de processamento são mais fáceis
       de reusar em diferentes contextos do que os
       componentes maiores
    –  Passos de processamento não adjacentes não
       compartilham informação
6                  Livro Texto: Pattern Oriented Software   6Eduardo N. F. Zagari
                          Architecture - Buschmann
Problema
    –  Existem diferentes fontes de dados de entrada, tais
       como conexões de rede ou sensores de temperatura
    –  Deve ser possível armazenar ou apresentar os
       resultados finais de várias formas diferentes
    –  Armazenamento explícito de resultados
       intermediários para processamento posterior em
       arquivos é susceptível a erros, se feito por usuários
    –  Pode-se não querer desconsiderar a possibilidade de
       multi-processamento dos passos



7                    Livro Texto: Pattern Oriented Software   7Eduardo N. F. Zagari
                            Architecture - Buschmann
Solução
•  Dividir a tarefa em vários passos de
   processamento seqüenciais.
    – Os passos são conectados via o fluxo de
      dados
    – Cada passo é implementado por um filtro
    – Filtros consomem e enviam dados
      INCREMENTALMENTE (paralelismo e baixa
      latência)
    – Entrada: fonte de dados (p.ex., arquivo texto)
    – Saída: vertedouro de dados (arq, terminal etc)
8                 Livro Texto: Pattern Oriented Software   8Eduardo N. F. Zagari
                         Architecture - Buschmann
Solução
    – A fonte de dados, os filtros e o vertedouro de
      dados são conectados seqëncialmente via
      pipes
    – Cada pipe implementa o fluxo de dados entre
      passos de processamento adjacentes
    – A seqüência de filtros combinadas pelos pipes
      é chamada de pipeline de processamento



9                 Livro Texto: Pattern Oriented Software   9Eduardo N. F. Zagari
                         Architecture - Buschmann
Estrutura
•  Filtros são as unidades de processamento do
   pipeline
     –  Enriquecem
     –  Refinam
     –  Transformam os dados
•  A atividade do filtro pode ser disparada:
     –  Pelo elemento subseqüente do pipeline puxando
        dados na saída do filtro
     –  Pelo elemento anterior empurrando novos dados de
        entrada ou
     –  * O filtro é um loop ativo, puxando de e empurrando
        abaixo o pipeline
10                   Livro Texto: Pattern Oriented Software   10Eduardo N. F. Zagari
                            Architecture - Buschmann
Estrutura
•  Pipes realizam a comunicação
     – Entre filtros
     – Entre a fonte de dados e o primeiro filtro
     – Entre o último filtro e o vertedouro de dados
•  Se os 2 filtros são ativos, o pipe faz o
   sincronismo deles via um buffer FIFO
•  Se a atividade é controlada por um deles,
   o pipe pode ser implementado pela
   chamada direta do ativo para o passivo
11                 Livro Texto: Pattern Oriented Software   11Eduardo N. F. Zagari
                          Architecture - Buschmann
Estrutura
•  Fonte de dados: entrada do sistema
     – Pode ser ativa (modelo Push)
     – Pode ser passiva (modelo Pull)
•  Vertedouro de dados: coleta os resultados
   do fim do pipeline
     – Ativo: puxa os resultados do último estágio de
       processamento
     – Passivo: permite o último filtro empurra ou
       escrever os resultados nele
12                 Livro Texto: Pattern Oriented Software   12Eduardo N. F. Zagari
                          Architecture - Buschmann
Dinâmica
•  4 cenários
     – 3 cenários em que os filtros usam chamadas
       diretas ao componente adjacente do pipeline
       •  Sem componente pipe explícito
     – 1 cenário onde todos os filtros são ativos
       •  Pipe de sincronismo




13                  Livro Texto: Pattern Oriented Software   13Eduardo N. F. Zagari
                           Architecture - Buschmann
Cenário 1




14   Livro Texto: Pattern Oriented Software   14Eduardo N. F. Zagari
            Architecture - Buschmann
Cenário 2




15   Livro Texto: Pattern Oriented Software   15Eduardo N. F. Zagari
            Architecture - Buschmann
Cenário 3




16   Livro Texto: Pattern Oriented Software   16Eduardo N. F. Zagari
            Architecture - Buschmann
Cenário 4 *




17   Livro Texto: Pattern Oriented Software   17Eduardo N. F. Zagari
            Architecture - Buschmann
Implementação
1.  Dividir a tarefa do sistema em uma seqüência
    de estágios de processamento
     •    Cada estágio deve depender somente da saída de
          seu predecessor
2.  Definir o formato dos dados a serem passados
    ao longo de cada pipe
     •    Formato padrão  flexibilidade
3.  Decidir como implementar cada conexão pipe
     •    Implica em definir se os filtros adjacentes são ativos
          ou passivos
18                     Livro Texto: Pattern Oriented Software   18Eduardo N. F. Zagari
                              Architecture - Buschmann
Implementação
4.  Projetar e implementar os filtros
     •    Além dos pipes, baseia-se também na tarefa que
          eles devem realizar
     •    Passivos: funções (PULL) ou procedimentos
          (PUSH)
     •    Ativos: processos ou threads
5.  Projetar o tratamento de erro
     •    Difícil devido a não existência de estado global
     •    No mínimo, deve haver detecção de erro
          •    UNIX usa um canal específico (stderr)
     •    Se um filtro “capota”  Resincronização
8.  Ajustar o pipeline de processamento
19                        Livro Texto: Pattern Oriented Software   19Eduardo N. F. Zagari
                                 Architecture - Buschmann
Variantes
•  Sistemas de pipeline Tee e Join
     –  Permite filtros com mais de uma entrada e/
        ou mais de uma saída




20                 Livro Texto: Pattern Oriented Software   20Eduardo N. F. Zagari
                          Architecture - Buschmann
Usos conhecidos
•  UNIX
•  CMS Pipelines (S.O. IBM)




21            Livro Texto: Pattern Oriented Software   21Eduardo N. F. Zagari
                     Architecture - Buschmann
Benefícios
•  Não há a necessidade de arquivos
   intermediários, mas são possíveis
•  Flexibilidade pela permuta de filtros
•  Flexibilidade pela recombinação
•  Reuso de filtros
•  Rápida prototipação de pipelines
•  Eficiência devido ao processamento
   paralelo
22             Livro Texto: Pattern Oriented Software   22Eduardo N. F. Zagari
                      Architecture - Buschmann
Desvantagens
•  Compartilhamento de informação de
   estado é cara ou inflexível
•  Ganho de eficiência pelo processamento
   paralelo freqüentemente é uma ilusão
     – Custo de transferência de dados entre filtros
     – Serialização interna a alguns filtros
     – Trocas de contexto
•  Overhead na transformação de dados
•  Tratamento de erros
23                 Livro Texto: Pattern Oriented Software   23Eduardo N. F. Zagari
                          Architecture - Buschmann

Contenu connexe

Tendances

tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.
Juan Ravi
 
Automation Testing with Test Complete
Automation Testing with Test CompleteAutomation Testing with Test Complete
Automation Testing with Test Complete
Vartika Saxena
 

Tendances (20)

Validação e Testes de software
Validação e Testes de softwareValidação e Testes de software
Validação e Testes de software
 
Unit testing with NUnit
Unit testing with NUnitUnit testing with NUnit
Unit testing with NUnit
 
Introdução à Qualidade e Testes Ágeis de Software
Introdução à Qualidade e Testes Ágeis de SoftwareIntrodução à Qualidade e Testes Ágeis de Software
Introdução à Qualidade e Testes Ágeis de Software
 
Software testing tools (free and open source)
Software testing tools (free and open source)Software testing tools (free and open source)
Software testing tools (free and open source)
 
Software test automation
Software test automationSoftware test automation
Software test automation
 
Pruebas unitarias
Pruebas unitariasPruebas unitarias
Pruebas unitarias
 
Workshop unit test
Workshop   unit testWorkshop   unit test
Workshop unit test
 
Software Testing
Software TestingSoftware Testing
Software Testing
 
Modelo plano de_testes
Modelo plano de_testesModelo plano de_testes
Modelo plano de_testes
 
Black & White Box testing
Black & White Box testingBlack & White Box testing
Black & White Box testing
 
Modelagem Ágil
Modelagem ÁgilModelagem Ágil
Modelagem Ágil
 
tipos de pruebas.
tipos de pruebas.tipos de pruebas.
tipos de pruebas.
 
Types of testing
Types of testingTypes of testing
Types of testing
 
Unit and integration Testing
Unit and integration TestingUnit and integration Testing
Unit and integration Testing
 
Ordenação
OrdenaçãoOrdenação
Ordenação
 
Automation Testing with Test Complete
Automation Testing with Test CompleteAutomation Testing with Test Complete
Automation Testing with Test Complete
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Conceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidadeConceitos e fundamentos sobre testes de software e garantia da qualidade
Conceitos e fundamentos sobre testes de software e garantia da qualidade
 
PPT Materi Testing Strategi.ppt
PPT Materi Testing Strategi.pptPPT Materi Testing Strategi.ppt
PPT Materi Testing Strategi.ppt
 
Testing in Agile Projects
Testing in Agile ProjectsTesting in Agile Projects
Testing in Agile Projects
 

En vedette

Arquiteturas usando Pipes and Filters
Arquiteturas usando Pipes and FiltersArquiteturas usando Pipes and Filters
Arquiteturas usando Pipes and Filters
Sergio Crespo
 

En vedette (20)

Padrões-04 - Padrões Arquiteturais - Broker
Padrões-04 - Padrões Arquiteturais - BrokerPadrões-04 - Padrões Arquiteturais - Broker
Padrões-04 - Padrões Arquiteturais - Broker
 
Padrões-06 - Padrões Arquiteturais - Microkernel
Padrões-06 - Padrões Arquiteturais - MicrokernelPadrões-06 - Padrões Arquiteturais - Microkernel
Padrões-06 - Padrões Arquiteturais - Microkernel
 
Uma Breve Introdução ao MongoDB
Uma Breve Introdução ao MongoDBUma Breve Introdução ao MongoDB
Uma Breve Introdução ao MongoDB
 
Classificação de Documentos
Classificação de DocumentosClassificação de Documentos
Classificação de Documentos
 
Padrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVCPadrões-05 - Padrões Arquiteturais - MVC
Padrões-05 - Padrões Arquiteturais - MVC
 
Padrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - CamadasPadrões-02 - Padrões Arquiteturais - Camadas
Padrões-02 - Padrões Arquiteturais - Camadas
 
Arquitetura de Software Na Pratica
Arquitetura de Software Na PraticaArquitetura de Software Na Pratica
Arquitetura de Software Na Pratica
 
JAVA REFLETCION
JAVA REFLETCIONJAVA REFLETCION
JAVA REFLETCION
 
Arquiteturas usando Pipes and Filters
Arquiteturas usando Pipes and FiltersArquiteturas usando Pipes and Filters
Arquiteturas usando Pipes and Filters
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Padrões-11 - Padrões Estruturais - Adaptador
Padrões-11 - Padrões Estruturais - AdaptadorPadrões-11 - Padrões Estruturais - Adaptador
Padrões-11 - Padrões Estruturais - Adaptador
 
Padrões-01 - Introdução
Padrões-01 - IntroduçãoPadrões-01 - Introdução
Padrões-01 - Introdução
 
Padrões-10 - Padrões Criacionais - Singleton
Padrões-10 - Padrões Criacionais - SingletonPadrões-10 - Padrões Criacionais - Singleton
Padrões-10 - Padrões Criacionais - Singleton
 
ICC-07 Softwares - Introdução
ICC-07 Softwares - IntroduçãoICC-07 Softwares - Introdução
ICC-07 Softwares - Introdução
 
Padrões-08 - Padrões Criacionais - Abstract Factory
Padrões-08 - Padrões Criacionais - Abstract FactoryPadrões-08 - Padrões Criacionais - Abstract Factory
Padrões-08 - Padrões Criacionais - Abstract Factory
 
Padrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - FacadePadrões-12 - Padrões Estruturais - Facade
Padrões-12 - Padrões Estruturais - Facade
 
Padrões-09 - Padrões Criacionais - Factory Method
Padrões-09 - Padrões Criacionais - Factory MethodPadrões-09 - Padrões Criacionais - Factory Method
Padrões-09 - Padrões Criacionais - Factory Method
 
SO-11 Winux: Laboratório de Sistemas Operacionais
SO-11 Winux: Laboratório de Sistemas OperacionaisSO-11 Winux: Laboratório de Sistemas Operacionais
SO-11 Winux: Laboratório de Sistemas Operacionais
 
Padrões-07 - Padrões Criacionais
Padrões-07 - Padrões CriacionaisPadrões-07 - Padrões Criacionais
Padrões-07 - Padrões Criacionais
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 

Similaire à Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

Arquitetura control logix
Arquitetura control logixArquitetura control logix
Arquitetura control logix
Saddam Lande
 
62282591 senai-curso-avancado-redes
62282591 senai-curso-avancado-redes62282591 senai-curso-avancado-redes
62282591 senai-curso-avancado-redes
Marco Guimarães
 
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Apresentacao do Simula...
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Apresentacao do Simula...UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Apresentacao do Simula...
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Apresentacao do Simula...
Edinaldo La-Roque
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
elliando dias
 

Similaire à Padrões-03 - Padrões Arquiteturais - Pipes e Filtros (20)

Enucomp2017 - Tutorial about network softwarization
Enucomp2017 - Tutorial about network softwarizationEnucomp2017 - Tutorial about network softwarization
Enucomp2017 - Tutorial about network softwarization
 
Em Direção às Redes Programáveis na Internet do Futuro
Em Direção às Redes Programáveis na Internet do FuturoEm Direção às Redes Programáveis na Internet do Futuro
Em Direção às Redes Programáveis na Internet do Futuro
 
Eripi2018 p4 tutorial
Eripi2018 p4 tutorialEripi2018 p4 tutorial
Eripi2018 p4 tutorial
 
Testes Funcionais e Estruturais utilizando Selenium IDE e Cobertura
Testes Funcionais e Estruturais utilizando Selenium IDE e CoberturaTestes Funcionais e Estruturais utilizando Selenium IDE e Cobertura
Testes Funcionais e Estruturais utilizando Selenium IDE e Cobertura
 
Lecture 4-Processos e Threads pt mz.pptx
Lecture 4-Processos e Threads pt mz.pptxLecture 4-Processos e Threads pt mz.pptx
Lecture 4-Processos e Threads pt mz.pptx
 
Arquitetura control logix
Arquitetura control logixArquitetura control logix
Arquitetura control logix
 
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 03
 
62282591 senai-curso-avancado-redes
62282591 senai-curso-avancado-redes62282591 senai-curso-avancado-redes
62282591 senai-curso-avancado-redes
 
Arquitetura peer to-peer (p2p)
Arquitetura peer to-peer (p2p)Arquitetura peer to-peer (p2p)
Arquitetura peer to-peer (p2p)
 
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
sfCon 2012 - Conceitos de Engenharia Reversa aplicados na migração de sistema...
 
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Apresentacao do Simula...
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Apresentacao do Simula...UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Apresentacao do Simula...
UFPA PPGCC LPRAD 2014-02 - Edinaldo La-Roque - OPNET - Apresentacao do Simula...
 
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardoPostgreSQL Tuning: O elefante mais rápido que um leopardo
PostgreSQL Tuning: O elefante mais rápido que um leopardo
 
Redes 6 equipamentos ativos da rede
Redes 6 equipamentos ativos da redeRedes 6 equipamentos ativos da rede
Redes 6 equipamentos ativos da rede
 
Modelo osi
Modelo osiModelo osi
Modelo osi
 
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
Introdução aos sistemas distribuídos on-line para processamento de fluxos de ...
 
AULA DE SISTEMAS OPERACIONAIS.pptx
AULA DE SISTEMAS OPERACIONAIS.pptxAULA DE SISTEMAS OPERACIONAIS.pptx
AULA DE SISTEMAS OPERACIONAIS.pptx
 
Ccna cap05 mod01
Ccna cap05 mod01Ccna cap05 mod01
Ccna cap05 mod01
 
aula sistemas operacionais.pptx
aula sistemas operacionais.pptxaula sistemas operacionais.pptx
aula sistemas operacionais.pptx
 
Redes de Computadores " Camada de Enlace"
Redes de Computadores " Camada de Enlace"Redes de Computadores " Camada de Enlace"
Redes de Computadores " Camada de Enlace"
 
Introdução à sistemas distribuídos
Introdução à sistemas distribuídosIntrodução à sistemas distribuídos
Introdução à sistemas distribuídos
 

Plus de Eduardo Nicola F. Zagari

Plus de Eduardo Nicola F. Zagari (16)

Introdução à Linguagem Ruby
Introdução à Linguagem RubyIntrodução à Linguagem Ruby
Introdução à Linguagem Ruby
 
Onix: Sistema Integrado de Gerˆencia para Redes Sobrepostas
Onix: Sistema Integrado de Gerˆencia para Redes SobrepostasOnix: Sistema Integrado de Gerˆencia para Redes Sobrepostas
Onix: Sistema Integrado de Gerˆencia para Redes Sobrepostas
 
Uma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLS
Uma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLSUma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLS
Uma Plataforma para Engenharia de Tráfego com Qualidade de Serviço em Redes MPLS
 
Uma Implementação do MPLS para Redes Linux
Uma Implementação do MPLS para Redes LinuxUma Implementação do MPLS para Redes Linux
Uma Implementação do MPLS para Redes Linux
 
Módulo de Estudos e Treinamento em Tempo Real
Módulo de Estudos e Treinamento em Tempo RealMódulo de Estudos e Treinamento em Tempo Real
Módulo de Estudos e Treinamento em Tempo Real
 
Módulo de Estudos em Tempo Real
Módulo de Estudos em Tempo RealMódulo de Estudos em Tempo Real
Módulo de Estudos em Tempo Real
 
Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...
Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...
Aproveitamento Funcional de Sistemas Digitais em Subestações: Funções Automát...
 
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
Modernização e Implantação das Funções de Análise de Rede em Tempo Real no Ce...
 
Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...
Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...
Master Thesis - Zagari, Eduardo Nicola Ferraz: Escalonamento em Tempo Real da...
 
Padrões-13 - Padrões Estruturais - Proxy
Padrões-13 - Padrões Estruturais - ProxyPadrões-13 - Padrões Estruturais - Proxy
Padrões-13 - Padrões Estruturais - Proxy
 
ICC-01 História dos Computadores
ICC-01 História dos ComputadoresICC-01 História dos Computadores
ICC-01 História dos Computadores
 
ICC-02 Evolução dos Computadores
ICC-02 Evolução dos ComputadoresICC-02 Evolução dos Computadores
ICC-02 Evolução dos Computadores
 
ICC-03 Organização dos Computadores
ICC-03 Organização dos ComputadoresICC-03 Organização dos Computadores
ICC-03 Organização dos Computadores
 
ICC-04 Sistemas Numéricos
ICC-04 Sistemas NuméricosICC-04 Sistemas Numéricos
ICC-04 Sistemas Numéricos
 
ICC-05 Álgebra Booleana
ICC-05 Álgebra BooleanaICC-05 Álgebra Booleana
ICC-05 Álgebra Booleana
 
ICC-06 Periféricos - Introdução
ICC-06 Periféricos - IntroduçãoICC-06 Periféricos - Introdução
ICC-06 Periféricos - Introdução
 

Padrões-03 - Padrões Arquiteturais - Pipes e Filtros

  • 1. Padrões Arquiteturais Estruturais: Pipes e Filtros
  • 2. Pipes e Filtros •  O padrão “Pipes e Filtros” provê uma estrutura para sistemas que processam fluxos de dados. •  Cada passo de processamento é encapsulado em um componente Filtro. •  Dados são passados através de pipes entre filtros adjacentes. •  Recombinando-se filtros é possível construir-se famílias de sistemas relacionados. 2 Livro Texto: Pattern Oriented Software 2Eduardo N. F. Zagari Architecture - Buschmann
  • 3. Exemplo 3 Livro Texto: Pattern Oriented Software 3Eduardo N. F. Zagari Architecture - Buschmann
  • 4. Contexto •  Processamento de fluxo de dados (data stream) 4 Livro Texto: Pattern Oriented Software 4Eduardo N. F. Zagari Architecture - Buschmann
  • 5. Problema •  Problemas na implementação de um sistema de processamento de fluxo de dados com um único componente: – Sistema pode ter que ser construído por vários desenvolvedores – A tarefa global do sistema pode se decompor naturalmente em vários estágios de processamento – Requisitos provavelmente podem mudar 5 Livro Texto: Pattern Oriented Software 5Eduardo N. F. Zagari Architecture - Buschmann
  • 6. Problema •  Para se projetar um sistema de processamento de streams que seja flexível, deve-se considerar os seguintes aspectos: –  Devem ser possíveis futuras melhorias no sistema pela troca de passos de processamento ou pela recombinação de passos (mesmo por usuários) –  Pequenos passos de processamento são mais fáceis de reusar em diferentes contextos do que os componentes maiores –  Passos de processamento não adjacentes não compartilham informação 6 Livro Texto: Pattern Oriented Software 6Eduardo N. F. Zagari Architecture - Buschmann
  • 7. Problema –  Existem diferentes fontes de dados de entrada, tais como conexões de rede ou sensores de temperatura –  Deve ser possível armazenar ou apresentar os resultados finais de várias formas diferentes –  Armazenamento explícito de resultados intermediários para processamento posterior em arquivos é susceptível a erros, se feito por usuários –  Pode-se não querer desconsiderar a possibilidade de multi-processamento dos passos 7 Livro Texto: Pattern Oriented Software 7Eduardo N. F. Zagari Architecture - Buschmann
  • 8. Solução •  Dividir a tarefa em vários passos de processamento seqüenciais. – Os passos são conectados via o fluxo de dados – Cada passo é implementado por um filtro – Filtros consomem e enviam dados INCREMENTALMENTE (paralelismo e baixa latência) – Entrada: fonte de dados (p.ex., arquivo texto) – Saída: vertedouro de dados (arq, terminal etc) 8 Livro Texto: Pattern Oriented Software 8Eduardo N. F. Zagari Architecture - Buschmann
  • 9. Solução – A fonte de dados, os filtros e o vertedouro de dados são conectados seqëncialmente via pipes – Cada pipe implementa o fluxo de dados entre passos de processamento adjacentes – A seqüência de filtros combinadas pelos pipes é chamada de pipeline de processamento 9 Livro Texto: Pattern Oriented Software 9Eduardo N. F. Zagari Architecture - Buschmann
  • 10. Estrutura •  Filtros são as unidades de processamento do pipeline –  Enriquecem –  Refinam –  Transformam os dados •  A atividade do filtro pode ser disparada: –  Pelo elemento subseqüente do pipeline puxando dados na saída do filtro –  Pelo elemento anterior empurrando novos dados de entrada ou –  * O filtro é um loop ativo, puxando de e empurrando abaixo o pipeline 10 Livro Texto: Pattern Oriented Software 10Eduardo N. F. Zagari Architecture - Buschmann
  • 11. Estrutura •  Pipes realizam a comunicação – Entre filtros – Entre a fonte de dados e o primeiro filtro – Entre o último filtro e o vertedouro de dados •  Se os 2 filtros são ativos, o pipe faz o sincronismo deles via um buffer FIFO •  Se a atividade é controlada por um deles, o pipe pode ser implementado pela chamada direta do ativo para o passivo 11 Livro Texto: Pattern Oriented Software 11Eduardo N. F. Zagari Architecture - Buschmann
  • 12. Estrutura •  Fonte de dados: entrada do sistema – Pode ser ativa (modelo Push) – Pode ser passiva (modelo Pull) •  Vertedouro de dados: coleta os resultados do fim do pipeline – Ativo: puxa os resultados do último estágio de processamento – Passivo: permite o último filtro empurra ou escrever os resultados nele 12 Livro Texto: Pattern Oriented Software 12Eduardo N. F. Zagari Architecture - Buschmann
  • 13. Dinâmica •  4 cenários – 3 cenários em que os filtros usam chamadas diretas ao componente adjacente do pipeline •  Sem componente pipe explícito – 1 cenário onde todos os filtros são ativos •  Pipe de sincronismo 13 Livro Texto: Pattern Oriented Software 13Eduardo N. F. Zagari Architecture - Buschmann
  • 14. Cenário 1 14 Livro Texto: Pattern Oriented Software 14Eduardo N. F. Zagari Architecture - Buschmann
  • 15. Cenário 2 15 Livro Texto: Pattern Oriented Software 15Eduardo N. F. Zagari Architecture - Buschmann
  • 16. Cenário 3 16 Livro Texto: Pattern Oriented Software 16Eduardo N. F. Zagari Architecture - Buschmann
  • 17. Cenário 4 * 17 Livro Texto: Pattern Oriented Software 17Eduardo N. F. Zagari Architecture - Buschmann
  • 18. Implementação 1.  Dividir a tarefa do sistema em uma seqüência de estágios de processamento •  Cada estágio deve depender somente da saída de seu predecessor 2.  Definir o formato dos dados a serem passados ao longo de cada pipe •  Formato padrão  flexibilidade 3.  Decidir como implementar cada conexão pipe •  Implica em definir se os filtros adjacentes são ativos ou passivos 18 Livro Texto: Pattern Oriented Software 18Eduardo N. F. Zagari Architecture - Buschmann
  • 19. Implementação 4.  Projetar e implementar os filtros •  Além dos pipes, baseia-se também na tarefa que eles devem realizar •  Passivos: funções (PULL) ou procedimentos (PUSH) •  Ativos: processos ou threads 5.  Projetar o tratamento de erro •  Difícil devido a não existência de estado global •  No mínimo, deve haver detecção de erro •  UNIX usa um canal específico (stderr) •  Se um filtro “capota”  Resincronização 8.  Ajustar o pipeline de processamento 19 Livro Texto: Pattern Oriented Software 19Eduardo N. F. Zagari Architecture - Buschmann
  • 20. Variantes •  Sistemas de pipeline Tee e Join –  Permite filtros com mais de uma entrada e/ ou mais de uma saída 20 Livro Texto: Pattern Oriented Software 20Eduardo N. F. Zagari Architecture - Buschmann
  • 21. Usos conhecidos •  UNIX •  CMS Pipelines (S.O. IBM) 21 Livro Texto: Pattern Oriented Software 21Eduardo N. F. Zagari Architecture - Buschmann
  • 22. Benefícios •  Não há a necessidade de arquivos intermediários, mas são possíveis •  Flexibilidade pela permuta de filtros •  Flexibilidade pela recombinação •  Reuso de filtros •  Rápida prototipação de pipelines •  Eficiência devido ao processamento paralelo 22 Livro Texto: Pattern Oriented Software 22Eduardo N. F. Zagari Architecture - Buschmann
  • 23. Desvantagens •  Compartilhamento de informação de estado é cara ou inflexível •  Ganho de eficiência pelo processamento paralelo freqüentemente é uma ilusão – Custo de transferência de dados entre filtros – Serialização interna a alguns filtros – Trocas de contexto •  Overhead na transformação de dados •  Tratamento de erros 23 Livro Texto: Pattern Oriented Software 23Eduardo N. F. Zagari Architecture - Buschmann