Padrões Arquiteturais

              Estruturais:
               Camadas
Padrões Arquiteturais
•  Estruturais
    –  Camadas
    –  Pipes e Filtros
•  Sistemas Distribuídos
    –  Broker
•  Sistemas Interativos
    –  MVC
    –  Apresentação-Abstração-Controle (PAC)
•  Sistemas Adaptáveis
    –  Reflexão
    –  Microkernel
2                        Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                                Architecture - Buschmann
Camadas
•  Ajuda a estruturar aplicações que possam
   ser decompostas em grupos de sub-
   tarefas, nas quais cada grupo está em um
   nível de abstração particular




3             Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                     Architecture - Buschmann
Exemplo
•  Pilha de Protocolo de Redes
    – Desenvolvimento em/por partes
    – Codificação e/ou testes incrementais
    – Mudança/alteração a posteriori de partes
      individuais
    – Novas linguagens ou tecnologias podem ser
      incorporadas pela simples recodificação de
      seções de código


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




5   Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
           Architecture - Buschmann
Contexto
•  Um sistema grande que requer
   decomposição




6             Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                     Architecture - Buschmann
Problema
•  Mudanças de código tardias devem ficar
   confinadas a um componente e não afetar
   os demais
•  Interfaces devem ser estáveis e
   padronizadas
•  Partes do sistema devem ser substituíveis
•  Pode ser necessário mais tarde se criar
   novos sistemas com as mesmas questões
   de “nível baixo” do que se está projetando
7              Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                      Architecture - Buschmann
Problema
•  Responsabilidades similares devem ser
   agrupadas para facilitar entendimento e
   manutenção
•  Não há padrão de granularidade dos
   componentes
•  Componentes mais complexos
   necessitam de mais decomposição
•  Sistema deve ser desenvolvido por uma
   equipe de programadores
8              Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                      Architecture - Buschmann
Solução
•  Estruture o sistema em um número
   apropriado de camadas e coloque-as uma
   no topo da outra
•  Inicie de baixo para cima, aumentando o
   nível de abstração




9             Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                     Architecture - Buschmann
Estrutura
•  A camada L usa os serviços da camada
   “L-1” (e somente ela deve usá-los) da
   forma que lhe convier




10            Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                     Architecture - Buschmann
Estrutura




11   Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
            Architecture - Buschmann
Dinâmica
•  Cenário 1
     –  Cliente invoca uma requisição (invocação) à camada
        N. Eventualmente 1:N na camada 1
•  Cenário 2
     –  Comunicação de baixo para cima (notificação). 1:1 ou
        N:1
•  Cenário 3
     –  Camadas Com Estado (cache) versus Sem Estado
        •  Requisições podem atingir apenas um subconjunto de
          camadas

12                     Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                              Architecture - Buschmann
Dinâmica
•  Cenário 4
     – Idem ao cenário 3, mas com notificações e
       não invocações (de baixo para cima)
       •  Ex.: o reenvio de uma requisição
•  Cenário 5
     – Comunicação entre 2 pilhas de camadas




13                  Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                           Architecture - Buschmann
Implementação
1.  Defina o critério de abstração
2.  Determine o número de níveis de
    abstração
3.  Dê o nome às camadas e atribua tarefas
    a cada uma delas
4.  Especifique os serviços (Pirâmide
    Invertida de Reuso)
5.  Refine os passos de 1 a 4
14            Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                     Architecture - Buschmann
Implementação
6.  Especifique uma interface para cada camada
7.  Estruture as camadas individuais
8.  Especifique a comunicação entre camadas
    adjacentes
     •    Modelo PUSH versus PULL
9.  Desacople camadas adjacentes
     •    Acoplamento ONE-WAY para top-down
     •    Bottom-Up: funções de callback
     •    Ou, usando super classes
10. Projetar uma estratégia de tratamento de erro
15                  Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                           Architecture - Buschmann
Usos
•  Máquinas Virtuais
•  APIs
•  Sistemas de Informação




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

Padrões-02 - Padrões Arquiteturais - Camadas

  • 1.
    Padrões Arquiteturais Estruturais: Camadas
  • 2.
    Padrões Arquiteturais •  Estruturais –  Camadas –  Pipes e Filtros •  Sistemas Distribuídos –  Broker •  Sistemas Interativos –  MVC –  Apresentação-Abstração-Controle (PAC) •  Sistemas Adaptáveis –  Reflexão –  Microkernel 2 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann
  • 3.
    Camadas •  Ajuda aestruturar aplicações que possam ser decompostas em grupos de sub- tarefas, nas quais cada grupo está em um nível de abstração particular 3 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann
  • 4.
    Exemplo •  Pilha deProtocolo de Redes – Desenvolvimento em/por partes – Codificação e/ou testes incrementais – Mudança/alteração a posteriori de partes individuais – Novas linguagens ou tecnologias podem ser incorporadas pela simples recodificação de seções de código 4 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann
  • 5.
    Exemplo 5 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann
  • 6.
    Contexto •  Um sistemagrande que requer decomposição 6 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann
  • 7.
    Problema •  Mudanças decódigo tardias devem ficar confinadas a um componente e não afetar os demais •  Interfaces devem ser estáveis e padronizadas •  Partes do sistema devem ser substituíveis •  Pode ser necessário mais tarde se criar novos sistemas com as mesmas questões de “nível baixo” do que se está projetando 7 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann
  • 8.
    Problema •  Responsabilidades similaresdevem ser agrupadas para facilitar entendimento e manutenção •  Não há padrão de granularidade dos componentes •  Componentes mais complexos necessitam de mais decomposição •  Sistema deve ser desenvolvido por uma equipe de programadores 8 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann
  • 9.
    Solução •  Estruture osistema em um número apropriado de camadas e coloque-as uma no topo da outra •  Inicie de baixo para cima, aumentando o nível de abstração 9 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann
  • 10.
    Estrutura •  A camadaL usa os serviços da camada “L-1” (e somente ela deve usá-los) da forma que lhe convier 10 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann
  • 11.
    Estrutura 11 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann
  • 12.
    Dinâmica •  Cenário 1 –  Cliente invoca uma requisição (invocação) à camada N. Eventualmente 1:N na camada 1 •  Cenário 2 –  Comunicação de baixo para cima (notificação). 1:1 ou N:1 •  Cenário 3 –  Camadas Com Estado (cache) versus Sem Estado •  Requisições podem atingir apenas um subconjunto de camadas 12 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann
  • 13.
    Dinâmica •  Cenário 4 – Idem ao cenário 3, mas com notificações e não invocações (de baixo para cima) •  Ex.: o reenvio de uma requisição •  Cenário 5 – Comunicação entre 2 pilhas de camadas 13 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann
  • 14.
    Implementação 1.  Defina ocritério de abstração 2.  Determine o número de níveis de abstração 3.  Dê o nome às camadas e atribua tarefas a cada uma delas 4.  Especifique os serviços (Pirâmide Invertida de Reuso) 5.  Refine os passos de 1 a 4 14 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann
  • 15.
    Implementação 6.  Especifique umainterface para cada camada 7.  Estruture as camadas individuais 8.  Especifique a comunicação entre camadas adjacentes •  Modelo PUSH versus PULL 9.  Desacople camadas adjacentes •  Acoplamento ONE-WAY para top-down •  Bottom-Up: funções de callback •  Ou, usando super classes 10. Projetar uma estratégia de tratamento de erro 15 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann
  • 16.
    Usos •  Máquinas Virtuais • APIs •  Sistemas de Informação 16 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann