Padrões-06 - Padrões Arquiteturais - Microkernel
-
Upload
nicola-zagari -
Category
Technology
-
view
2.657 -
download
1
description
Transcript of Padrões-06 - Padrões Arquiteturais - Microkernel
Padrões Arquiteturais
Sistemas Adaptáveis Microkernel
2 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
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
3 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
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
4 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
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
5 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
Exemplo
6 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
Contexto
• O desenvolvimento de várias aplicações que usam interfaces de programação similares que residem sobre uma mesma funcionalidade núcleo
7 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
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
8 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
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
9 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
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
10 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
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
11 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
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)
12 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
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)
13 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
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
14 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
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
15 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
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)
16 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
Estrutura
17 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
Dinâmica – Cenário 1 Cliente chama serviço de seu S.E.
18 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
Dinâmica – Cenário 2 Arquitetura Microkernel
19 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
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
20 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
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
21 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
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
22 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
Implementação
12. Implemente os adaptadores 13. Desenvolva as aplicações cliente ou use
as existentes
23 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
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”
24 Livro Texto: Pattern Oriented Software Architecture - Buschmann
Eduardo N. F. Zagari
Desvantagens
• Desempenho • Complexidade do projeto e
implementação