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

16
Padrões Arquiteturais Estruturais: Camadas

description

Padrões Arquiteturais. Padrão Estrutural. Camadas.

Transcript of Padrões-02 - Padrões Arquiteturais - Camadas

Page 1: Padrões-02 - Padrões Arquiteturais - Camadas

Padrões Arquiteturais

Estruturais: Camadas

Page 2: Padrões-02 - Padrões Arquiteturais - Camadas

2 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

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

Page 3: Padrões-02 - Padrões Arquiteturais - Camadas

3 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

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

Page 4: Padrões-02 - Padrões Arquiteturais - Camadas

4 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

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

Page 5: Padrões-02 - Padrões Arquiteturais - Camadas

5 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

Exemplo

Page 6: Padrões-02 - Padrões Arquiteturais - Camadas

6 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

Contexto

• Um sistema grande que requer decomposição

Page 7: Padrões-02 - Padrões Arquiteturais - Camadas

7 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

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

Page 8: Padrões-02 - Padrões Arquiteturais - Camadas

8 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

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

Page 9: Padrões-02 - Padrões Arquiteturais - Camadas

9 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

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

Page 10: Padrões-02 - Padrões Arquiteturais - Camadas

10 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

Estrutura

•  A camada L usa os serviços da camada “L-1” (e somente ela deve usá-los) da forma que lhe convier

Page 11: Padrões-02 - Padrões Arquiteturais - Camadas

11 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

Estrutura

Page 12: Padrões-02 - Padrões Arquiteturais - Camadas

12 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

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

Page 13: Padrões-02 - Padrões Arquiteturais - Camadas

13 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

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

Page 14: Padrões-02 - Padrões Arquiteturais - Camadas

14 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

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

Page 15: Padrões-02 - Padrões Arquiteturais - Camadas

15 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

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

Page 16: Padrões-02 - Padrões Arquiteturais - Camadas

16 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

Usos

• Máquinas Virtuais •  APIs •  Sistemas de Informação