2. Sistemas Adaptáveis
• Sistemas evoluem: novas funcionalidades são
adicionadas e serviços existentes atualizados
• Projetar sistemas para mudanças é importante,
não só para que ele suporte suas próprias
modificações, mas também:
– Novas versões de S.O.s, plataformas de interfaces,
componentes de terceiros, bibliotecas
– Novos padrões de plataforma de HW
– Atualizações de requisitos
– Customização
2 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
3. Sistemas Adaptáveis
• Padrão Microkernel:
– Aplica-se a sistemas que devem ser aptos a se
adaptarem a novos requisitos
– Separa as funções principais das funcionalidades
estendidas
• Padrão Reflexão:
– Mecanismo para mudança dinâmica da estrutura e do
comportamento do sistema
– Suporta modificação de aspectos fundamentais
– Meta Nível versus Nível Base
3 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
4. Microkernel
• Aplica-se a sistemas de software que
devem ser aptos a se adaptarem a
alterações nos requisitos do sistema
• Separa a funcionalidade central do
sistema das partes específicas do usuário
e da funcionalidade estendida
• Serve também como um conector para
ligar estas extensões e coordenar suas
colaborações
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
• O desenvolvimento de várias aplicações
que usam interfaces de programação
similares que residem sobre uma mesma
funcionalidade núcleo
6 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
7. Problema
• Sistemas que tem “vida longa”, devem
sobreviver a emersão de novas tecnologias e à
mudanças das antigas
– S.O.s e GUIs
• Aspectos que devem ser levados em
consideração no desenvolvimento da plataforma
da aplicação:
– Deve lidar com a evolução contínua de HW e SW
– Deve ser portável, extensível e adaptável para
permitir a fácil integração de tecnologias emergentes
7 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
8. Problema
• O sucesso desta plataforma de aplicação
depende da capacidade dela de rodar
aplicações escritas para padrões existentes
– Capacidade de emular outras plataformas de
aplicação
• O núcleo funcional da plataforma de aplicação
deve ser separado em:
– Um componente com quantidade de memória mínima
– Serviços que consumam menor processamento
possível
8 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
9. Solução
• Encapsular os serviços fundamentais em
no componente microkernel
– Deve possibilitar outras componentes
comunicarem entre si
– Manter recursos do sistema
– Prover interfaces de acesso
• Demais funcionalidades devem ser
alocadas em Servidores Internos
9 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
10. Solução
• Servidores Externos – implementam suas
próprias visões do microkernel (via
interfaces)
– Representa uma outra plataforma de
aplicação
• Clientes – comunicam-se como os
servidores externos usando as facilidades
de comunicação providas pelo microkernel
10 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
11. Estrutura - Microkernel
• Implementa os serviços básicos, como
facilidades de comunicação, tratamento de
recursos
• Expõe interfaces para que os demais
componentes usem seus serviços
• Esconde dependências específicas do sistema,
como partes dependente de HW
• Implementa serviços atômicos (mecanismos)
sobre os quais funcionalidades mais complexas
são construídas (políticas)
11 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
12. Estrutura – Servidor Interno
(Subsistema)
• Estende a funcionalidade do microkernel
• Microkernel invoca sua funcionalidade via
requisições de serviço
– Podem encapsular algumas dependências do
sistema (p. ex., drivers de placas gráficas
específicas)
• São acessíveis apenas pelo microkernel
(que os ativa ou carrega somente quando
necessário)
12 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
13. Estrutura – Servidor Externo
(Personalidade)
• Usa o microkernel para implementar sua própria
visão (camada de abstração) do domínio da
aplicação
• Também expõem suas funcionalidades
exportando interfaces
• Rodam em processos separados
• Recebem req. de serviços das aplicações
clientes (via facilidades de comunicação)
• Executam o serviço apropriado
• Retornam resultado a seus clientes
13 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
14. Estrutura - Cliente
• Associado a exatamente um servidor
externo
• Clientes podem necessitar acessar as
interfaces de seus servidores diretamente
– Problema: clientes teriam o código para
comunicação com o servidor externo “hard-
coded”. Este acoplamento traz desvantagens:
• Não suporta bem alterações
14 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
15. Estrutura – Adaptadores
(Emuladores)
• Interfaces entre os clientes e os S.Ext. para
protegê-los de dependências diretas
– Isto é, acesso de forma portável
• São parte do espaço de endereçamento dos
clientes
• Se o servidor externo implementa uma
plataforma de aplicação existente, o adaptador
correspondente imita a API da plataforma.
• Responsável por encaminhar as requisições
(usa serviço do microkernel)
15 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
16. Estrutura
16 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
17. Dinâmica – Cenário 1
Cliente chama serviço de seu S.E.
17 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
18. Dinâmica – Cenário 2
Arquitetura Microkernel
18 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
19. Implementação
1. Analise o domínio da aplicação
– Funcionalidade núcleo necessária para
implementar servidores externos
2. Analise os servidores externos
– “Políticas” que serão providas
3. Categorize os serviços
– Sempre que possível, agrupe as
funcionalidades em categorias
semânticamente independentes
19 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
20. Implementação
4. Particione as categorias
– Microkernel versus servidores internos
5. Encontre um conjunto de operações e
abstrações completo e consistente para
cada categoria
6. Determinar estratégias para transmissão
e recuperação de requisições
7. Estruture o componente microkernel
– Considere o uso do Padrão de Camadas
20 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
21. Implementação
8. Especificar as interfaces de
programação do microkernel
9. Criar e manter mapeamento entre
recursos e handles
10. Projetar e implementar Servidores
Internos
– Processos separados ou bibliotecas
11. Implemente os Servidores Externos
21 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann
23. Benefícios
• Portabilidade
– Na maioria dos casos, não se precisa portar os
servidores externos ou clientes se portarmos o
Microkernel para um novo ambiente
– Mesmo a migração do microkernel demanda apenas
modificações nas partes dependentes de HW
• Flexibilidade e Extensibilidade
– Mais “políticas” versus mais “habilidades”
• Separação de “políticas” e “mecanismos”
23 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari
Architecture - Buschmann