Padrões Arquiteturais

       Sistemas Adaptáveis
               Microkernel
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
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
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
Exemplo




5   Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
           Architecture - Buschmann
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
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
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
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
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
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
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
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
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
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
Estrutura




16   Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
            Architecture - Buschmann
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
Dinâmica – Cenário 2
     Arquitetura Microkernel




18        Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                 Architecture - Buschmann
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
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
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
Implementação
12. Implemente os adaptadores
13. Desenvolva as aplicações cliente ou use
    as existentes




22            Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                     Architecture - Buschmann
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
Desvantagens
•  Desempenho
•  Complexidade do projeto e
   implementação




24            Livro Texto: Pattern Oriented Software   Eduardo N. F. Zagari
                     Architecture - Buschmann

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

  • 1.
    Padrões Arquiteturais Sistemas Adaptáveis Microkernel
  • 2.
    Sistemas Adaptáveis •  Sistemasevoluem: 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ãoMicrokernel: –  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 asistemas 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 desenvolvimentode 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 quetem “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 sucessodesta 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 osserviç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 – ServidorInterno (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 – ServidorExterno (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ário1 Cliente chama serviço de seu S.E. 17 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann
  • 18.
    Dinâmica – Cenário2 Arquitetura Microkernel 18 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann
  • 19.
    Implementação 1.  Analise odomí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 ascategorias –  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 asinterfaces 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
  • 22.
    Implementação 12. Implemente os adaptadores 13. Desenvolvaas aplicações cliente ou use as existentes 22 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
  • 24.
    Desvantagens •  Desempenho •  Complexidadedo projeto e implementação 24 Livro Texto: Pattern Oriented Software Eduardo N. F. Zagari Architecture - Buschmann