O documento descreve o padrão arquitetural Camadas. Ele estrutura sistemas em camadas de abstração empilhadas, com cada camada fornecendo serviços para a camada acima. O padrão permite desenvolvimento incremental, testes e manutenção independentes de cada camada.
3. 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
4. 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
5. Exemplo
5 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
6. Contexto
• Um sistema grande que requer
decomposição
6 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
7. 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
8. 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
9. 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
10. 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
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 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
15. 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
16. Usos
• Máquinas Virtuais
• APIs
• Sistemas de Informação
16 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann