24
Padrões Arquiteturais Sistemas Adaptáveis Microkernel

Padrões-06 - Padrões Arquiteturais - Microkernel

Embed Size (px)

DESCRIPTION

Padrões Arquiteturais. Sistemas Adaptáveis. Microkernel.

Citation preview

Page 1: Padrões-06 - Padrões Arquiteturais - Microkernel

Padrões Arquiteturais

Sistemas Adaptáveis Microkernel

Page 2: Padrões-06 - Padrões Arquiteturais - 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

Page 3: Padrões-06 - Padrões Arquiteturais - Microkernel

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

Page 4: Padrões-06 - Padrões Arquiteturais - Microkernel

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

Page 5: Padrões-06 - Padrões Arquiteturais - Microkernel

5 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

Exemplo

Page 6: Padrões-06 - Padrões Arquiteturais - Microkernel

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

Page 7: Padrões-06 - Padrões Arquiteturais - Microkernel

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

Page 8: Padrões-06 - Padrões Arquiteturais - Microkernel

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

Page 9: Padrões-06 - Padrões Arquiteturais - Microkernel

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

Page 10: Padrões-06 - Padrões Arquiteturais - Microkernel

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

Page 11: Padrões-06 - Padrões Arquiteturais - 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)

Page 12: Padrões-06 - Padrões Arquiteturais - Microkernel

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)

Page 13: Padrões-06 - Padrões Arquiteturais - Microkernel

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

Page 14: Padrões-06 - Padrões Arquiteturais - Microkernel

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

Page 15: Padrões-06 - Padrões Arquiteturais - Microkernel

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)

Page 16: Padrões-06 - Padrões Arquiteturais - Microkernel

16 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

Estrutura

Page 17: Padrões-06 - Padrões Arquiteturais - Microkernel

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.

Page 18: Padrões-06 - Padrões Arquiteturais - Microkernel

18 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

Dinâmica – Cenário 2 Arquitetura Microkernel

Page 19: Padrões-06 - Padrões Arquiteturais - 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

Page 20: Padrões-06 - Padrões Arquiteturais - Microkernel

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

Page 21: Padrões-06 - Padrões Arquiteturais - Microkernel

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

Page 22: Padrões-06 - Padrões Arquiteturais - Microkernel

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

Page 23: Padrões-06 - Padrões Arquiteturais - Microkernel

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”

Page 24: Padrões-06 - Padrões Arquiteturais - Microkernel

24 Livro Texto: Pattern Oriented Software Architecture - Buschmann

Eduardo N. F. Zagari

Desvantagens

• Desempenho • Complexidade do projeto e

implementação