110
1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões •Layers •Broker •MVC •MicroKernel •Todo-Parte

1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

Embed Size (px)

Citation preview

Page 1: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

1

PADRÕES POSA• Classificação dos Padrões• Detalhamento dos Padrões

•Layers•Broker•MVC•MicroKernel•Todo-Parte•Mestre-Escravo

Page 2: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

2

ARQUITETURA DE SOFTWARE

[Thaís Batista]

Ponte entre os Requisitos e sua Implementação

Page 3: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

3

ARQUITETURA DE SOFTWARE

[Thaís Batista]

Abstração que ajuda a gerenciar complexidade

Projeto Arquitetural do SoftwareEstrutura modular do softwareComponentesRelacionamento entre

componentes

Page 4: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

4

ARQUITETURA DE SOFTWARE

[Thaís Batista]

Formada por várias visões Visão de Caso de Uso: casos de uso com

arquitetura mais significante; Visão Lógica: quantidade de camandas,

plataforma a ser utilizada, tecnologias, conteiners web, serviços.

Visão geral: visão física, banco de dados, servidores.

Visão de implantação: distribuição dos componentes.

Page 5: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

5

PADRÕES POSA Os Padrões POSA são provenientes dos três

Livros “Pattern-Oriented Software Archicteture”:

POSA I : A System of Patterns; POSA II: Patterns for Networked and Concurrent

Objects; POSA III: Patterns for Resource Management ;

Page 6: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

6

PADRÕES POSA - CLASSIFICAÇÃOOs padrões do POSA são divididos em

três grandes grupos:

Padrões Arquiteturais

Padrões de Projeto Idiomas

Page 7: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

7

PADRÕES POSA - CLASSIFICAÇÃOPadrões Arquiteturais Estrutura de Alto-Nível; Contém um conjunto de sub-sistemas

pré-definidos; Define a responsabilidade de cada

sub-sistema;Detalha o relacionamento entre os

sub-sistemas;

Page 8: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

8

PADRÕES POSA - CLASSIFICAÇÃOPadrões Arquiteturais Classificação

Da Lama à Estrutura: ajudam a evitar o excesso de componentes ou objetos. Suportam a decomposição de um sistema completo em sub-tarefas desse sistema. Padrão Layers; Padrão Pipes and Filters; Padrão Blackboard

Sistemas Distribuídos Broker

Page 9: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

9

PADRÕES POSA - CLASSIFICAÇÃOPadrões Arquiteturais Classificação

Sistemas Interativos: interação homem-máquina. Model – View – Controller Presentation – Abstraction – Control

Sistemas Adaptáveis: suportam a adaptação de tecnologias e mudanças de requisitos funcionais. MicroKernel Reflection

Page 10: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

10

PADRÕES POSA - CLASSIFICAÇÃOPadrões de Projeto Estrutura de Médio-Nível; Implementação independente de

linguagem de programação; Projetado para “Micro-Arquiteturas”

(algo entre um sub-systema e um componente individual);

Page 11: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

11

PADRÕES POSA - CLASSIFICAÇÃO Padrões de Projeto Classificação Decomposição Estrutural

Whole-Part Organização do Trabalho

Master-Slave Controle de Acesso

Proxy Gerenciamento

Command Processor View Handler

Comunicação Forwarder-Receiver Client-Dispatcher-Server Publisher - Subscriber

Page 12: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

12

PADRÕES POSA - CLASSIFICAÇÃOIdiomas Estrutura de Baixo-Nível (em

comparação com os demais);Disponibiliza um guia para

implementação dos componentes e relacionamento dos padrões;

Considera o padrão no nível da linguagem de programação (descreve o padrão usando construções próprias da linguagem de programação);

Page 13: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

13

PADRÕES POSA - CLASSIFICAÇÃOIdiomas Estrutura de Baixo-Nível (em comparação

com os demais);Disponibiliza um guia para

implementação dos componentes e relacionamento dos padrões;

Considera o padrão no nível da linguagem de programação (descreve o padrão usando construções próprias da linguagem de programação);

Padrão Counted Pointer

Page 14: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

14

PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas)

Ajuda a estruturar as aplicações que podem ser decompostas em grupos de sub-tarefas, onde cada grupo de sub-tarefas possui um nível de abstração particular;

Exemplo: Protocolos de Redes OSI

Page 15: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

15

PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas)Problema

Imagine que esteja projetando um sistema cuja característica principal é uma mistura de assuntos de alto nível com assuntos de baixo nível, em que os assuntos de alto nível usam os assuntos de baixo nível. A parte de baixo nível está frequentemente perto do

hardware A parte de mais alto nível está frequentemente perto

do usuário O fluxo de comunicação tipicamente consiste de

pedidos fluindo do alto para o baixo níveis As respostas andam na direção contrária

Page 16: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

16

PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas)Problema

Decompor um sistema, aumentar o nível de abstração e diminuir as dependências entre as partes;

Page 17: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

17

PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas)Solução

Decompor em camadas de abstração de forma que uma camada não depende da superior e utiliza serviços apenas da camada imediatamente inferior;

Page 18: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

18

PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas)Solução

1. Defina o critério de abstração para agrupar tarefas em camadas;

2. Determine o número de níveis de abstração (baseado no critério acima) Cada nível de abstração corresponde a uma

camada Às vezes não é simples decidir se deve haver

uma quebra de uma camada em subcamadas ou não Camadas demais podem afetar o overhead Camadas de menos comprometem a estrutura

Page 19: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

19

PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas)Solução

3. Dê um nome e atribua tarefas a cada camada Para a camada de cima, a tarefa é a tarefa global do

sistema, do ponto de vista do usuário 4. Especifique os serviços

O princípio básico é de separar as camadas uma das outras

Nenhum módulo abrange duas camadas Tente manter mais riqueza acima e menos abaixo Isso ajuda a prover bons serviços de alto nível para

o programador "em cima"

Page 20: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

20

PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas)Solução

5. Refine as Camadas 6. Especifique uma interface para

cada camada A camada J nada sabe sobre a camada J-1 e usa

uma interface para acessá-la; Pode usar o padrão Façade para organizar a

interface; 7. Estruture as camadas individuais

Quebre a camada em subsistemas (partições) menores se ela for complexa;

Page 21: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

21

PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas)Solução

8. Especifique a comunicação entre camadas A camada J passa a informação necessária para a camada J-1 ao chamá-la

9. Desacople camadas adjacentes Evite situações em que a camada de baixo sabe algo sobre seus clientes (camada acima)

Acoplamento unidirecional é preferível

Page 22: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

22

PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas)Solução

10. Projete uma estratégia de tratamento de erros O esforço de programação e overhead podem ser

grandes para tratar erros numa arquitetura em camadas

Um erro pode ser tratado na camada onde foi descoberto ou numa camada superior

No segundo caso, deve haver mapeamento para tornar o erro semanticamente reconhecível pela camada de cima;

Tente tratar erros na camada mais baixa possível Isso simplifica todas as camadas superiores que não

sabem nem devem saber do erro;

Page 23: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

23

PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas)Estrutura

Page 24: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

24

PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas)Estrutura

Page 25: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

25

PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas)Exemplo

Page 26: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

26

PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas) Cada camada individual pode ser uma

entidade complexa consistindo de diferentes componentes

Page 27: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

27

PADRÕES POSA – Padrões Arquiteturais Padrão Layers (Camadas) Camadas Implementação

Defina o critério de abstração para agrupar tarefas em camadas Exemplo: a distância do hardware pode formar os níveis

mais baixos e a complexidade conceitual os níveis mais altos

Determine o número de níveis de abstração de acordo com seu critério de abstração

Nomeie as camadas e determine as tarefas de cada uma delas A tarefa da camada mais alta é a percebida pelo cliente As tarefas das demais camadas visam ajudar a

realização da tarefa da camada mais alta

Page 28: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

28

PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas)Camadas Implementação (Cont..)

Especifique os serviços Especifique uma interface para cada camada Refine cada camada:

Estruturação de cada camada individualmente Quando uma camada é complexa ela deve ser

separada em componentes individuais e cada componente pode seguir um padrão ou estilo diferente

Page 29: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

29

PADRÕES POSA – Padrões Arquiteturais Padrão Layers (Camadas) Conseqüências

Reuso de Camadas Devido à boa encapsulação provida pelo uso de

interfaces;Suporte a padronização

Permite usar implementações de vários fornecedores;

Dificuldade de estabelecer a correta granularidade das camadas.

Menor eficiência Camadas adicionam overhead;

Page 30: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

30

PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas)Exemplo Aplicação

Arquitetura 2 Camadas

Page 31: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

31

PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas)Exemplo Aplicação

Arquitetura 3 Camadas

Page 32: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

32

PADRÕES POSA – Padrões ArquiteturaisPadrão Pipes and Filters O padrão arquitetural Pipes and Filters provê uma

estrutura para sistemas que processam um stream de dados. Cada passo do processamento é encapsulado através de “canos” entre “filtros” adjacentes. A recombinação de filtros permite que você construa famílias de sistemas relacionados.

Tipicamente divide a tarefa de um sistema em vários passos de processamento seqüencial.

Componentes: São chamados Filtros Tem um conjunto de entradas e um conjunto de saídas

Page 33: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

33

PADRÕES POSA – Padrões ArquiteturaisPadrão Pipes and Filters

Conectores São chamados de Pipes; Servem como condutores, transmitindo a saída

de Filtro a outro;

pipefiltro

Page 34: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

34

PADRÕES POSA – Padrões ArquiteturaisPadrão Pipes and FiltersSolução

O Pipes e Filters divide uma tarefa no sistemas em passos de processamento seqüencial. A saída de dados de um passo é a entrada do passo subseqüente.

Cada passo do processamento é implementado através de um componente filtro.

Um filtro consome e entrega dados incrementalmente.

Page 35: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

35

PADRÕES POSA – Padrões ArquiteturaisPadrão Pipes and FiltersSolução

A entrada do sistema é realizada através de um Data Source, como um arquivo texto, por exemplo.

A saída é realizada em um Data Sink, tal como um arquivo, programa de animação, etc.

Os filtros, data sources e data sink são conectados sequencialmente através dos pipes.

Cada pipe implementa os fluxos de dados entre os passos adjacentes.

A seqüência de filtros combinadas por pipes é chamada de processamento pipeline.

Page 36: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

36

PADRÕES POSA – Padrões ArquiteturaisPadrão Pipes and Filters

Page 37: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

37

PADRÕES POSA – Padrões ArquiteturaisPadrão Pipes and Filters

Page 38: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

38

PADRÕES POSA – Padrões ArquiteturaisPadrão Pipes and FiltersEstrutura

Page 39: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

39

PADRÕES POSA – Padrões ArquiteturaisPadrão Pipes and FiltersEstrutura

Page 40: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

40

PADRÕES POSA – Padrões ArquiteturaisPadrão Pipes and Filters -

Implementação Divida as tarefas do sistema em uma seqüência

de estágios de processamento: Cada estágio deve depender apenas da saída do seu

predecessor direto Todos os estágios são conectados pelo fluxo de dados

Defina o formato de dados a ser passado ao longo de cada pipe

Decida como implementar cada conexão com pipe Implica em decidir se os filtros são componentes

ativos ou passivos

Page 41: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

41

PADRÕES POSA – Padrões ArquiteturaisPadrão Pipes and Filters -

ImplementaçãoConseqüências

Ausência da necessidade de arquivos intermediários.

Flexibilidade de trocar um filtro: filtros possuem interface simples e podem facilmente ser trocados dentro do processamento.

Reuso de componentes Filtros;

Page 42: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

42

PADRÕES POSA – Padrões ArquiteturaisPadrão BlackBoard Problema

Transformar dados brutos em estruturas de dados de alto-nível como diagramas, tabelas ou frases em inglês.

Reconhecimento de imagem, reconhecimento de fala são domínios em que o problema ocorre.

São caracterizados por problemas que, quando decompostos em subproblemas, abrange vários campos. As soluções para os problemas parciais requerem diferentes representações e paradigmas.

Page 43: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

43

PADRÕES POSA – Padrões ArquiteturaisPadrão BlackBoard Uma coleção de programas independentes que

trabalham cooperativamente em uma estrutura de dados comum (blackboard) Cada subsistema é especialista em resolver

determinada parte da tarefa completa. Todos os subsistemas trabalham juntos para resolver o problema.

Vários subsistemas especializados agregam seu conhecimento para conseguir uma possível solução aproximada para o problema

Os subsistemas especializados são independentes uns dos outros

BlackBoard = repositório de dados compartilhados

Page 44: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

44

PADRÕES POSA – Padrões ArquiteturaisPadrão BlackBoard Os subsistemas não se comunicam uns com

os outros e nem seguem uma seqüência pré-determinada. Ao invés disso, o sistema principal é determinado pela progresso do estado corrente de cada subsistema.

Um controle de acesso central avalia o estado corrente do processamento e coordena os subsistemas especializados.

Page 45: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

45

PADRÕES POSA – Padrões ArquiteturaisPadrão BlackBoard Justificativa da denominação BlackBoard

Herda da idéia de pessoas que trabalham juntas na frente de um quadro (blackboard) para resolver uma tarefa.

Page 46: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

46

PADRÕES POSA – Padrões ArquiteturaisPadrão BlackBoard

Page 47: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

47

PADRÕES POSA – Padrões ArquiteturaisPadrão BlackBoard Componentes:

Origem do Conhecimento: elementos independentes que resolvem aspectos específicos do problema. Juntos modelam o domínio do problema. Nenhum pode resolver a tarefa do sistema sozinho;

Blackboard: elemento central de armazenamento. Armazena dados para resolver o problema que são modificados pelos componentes origens do conhecimento;

Controle: executa um loop que monitora o estado do blackboard e decide qual a próxima ação que tipicamente é o escalonamento de algum elemento origem do conhecimento;

Page 48: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

48

PADRÕES POSA – Padrões ArquiteturaisPadrão BlackBoardComponentes:

O main loop do componente Controle é iniciado;

Controle invoca o procedimento ProximaOrigem() para selecionar o componente Origem do Conhecimento;

ProximaOrigem() determina quais Origem do Conhecimento são potenciais candidatos para encontrar a solução;

Origem do Conhecimento invoca Inspect() para verificar as soluções correntes no blackboard e Update() para realizar mudanças nos dados do BlackBoad;

Page 49: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

49

PADRÕES POSA – Padrões ArquiteturaisPadrão BlackBoard

Page 50: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

50

PADRÕES POSA – Padrões ArquiteturaisPadrão BlackBoard Tem sido utilizado em aplicações que

necessitam de complexas interpretações de reconhecimento de sinais como reconhecimento de fala, de padrões, de imagem;

Page 51: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

51

PADRÕES POSA – Padrões ArquiteturaisPadrão BlackBoard – Implementação Defina o problema:

Especifique o domínio do problema e os campos de conhecimento necessários para encontrar uma solução

Defina a entrada e saída desejável do sistema Defina o espaço de solução para o problema Divida o processo da solução em passos:

Especifique os tipos de conhecimento que podem ser usados para excluir partes do espaço de solução

Divida o conhecimento em origens de conhecimento especializadas

Page 52: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

52

PADRÕES POSA – Padrões ArquiteturaisPadrão BlackBoard –

Implementação Especifique o controle do sistema

Determine quais origens do conhecimento tem permissão para realizar mudanças no blackboard

Associe as categorias de mudanças no blackboard com um conjunto de possíveis origens do conhecimento

Implemente as origens do conhecimento Divida-os em partes de condição e partes de

ação

Page 53: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

53

PADRÕES POSA – Padrões ArquiteturaisPadrão Broker O Padrão Broker é utilizado para estruturar

sistemas distribuídos separando componentes que interagem através de chamadas remota de serviços. O broker é responsável por coordenar a

comunicação, encaminhado as solicitações e transmitido os resultados ou exceções.

Page 54: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

54

PADRÕES POSA – Padrões ArquiteturaisPadrão Broker Contexto:

Construção de um sistema complexo como um conjunto de componentes distribuídos que necessitam comunicar-se. São necessários serviços para adicionar,remover, trocar, ativar e localizar componentes.

Os componentes devem ser capazes de acessar serviços oferecidos por outros através de invocações remotas e transparentes realizadas via um componente Broker que desacopla servidores de clientes.

Page 55: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

55

PADRÕES POSA – Padrões ArquiteturaisPadrão Broker Usado para estruturar sistemas distribuídos com

componentes desacoplados que interagem por invocações remotas ao serviço

O componente Broker é responsável por coordenar a comunicação entre os componentes distribuídos, possibilitando assim, maior desacoplamento entre clientes e servidores e independência de plataforma (sistemas heterogêneos).

Os servidores se registram no broker, assim, seus serviços ficam disponíveis para os clientes através de interfaces.

Page 56: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

56

PADRÕES POSA – Padrões ArquiteturaisPadrão Broker Os servidores se registram no broker, assim,

seus serviços ficam disponíveis para os clientes através de interfaces.

Os clientes acessam as funcionalidades dos servidores através do envio de requisição ao Broker.

Entre as tarefas do Broker estão: localizar o servidor apropriado, encaminhar as requisições para o servidor e transmitir os resultados de volta a cliente.

Page 57: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

57

PADRÕES POSA – Padrões ArquiteturaisPadrão BrokerEstrutura

Page 58: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

58

PADRÕES POSA – Padrões ArquiteturaisPadrão Broker

Page 59: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

59

PADRÕES POSA – Padrões ArquiteturaisPadrão Broker

Page 60: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

60

PADRÕES POSA – Padrões ArquiteturaisPadrão Broker – Implementação Defina um modelo de objetos ou use um

modeloexistente; Defina qual tipo de interoperabilidade entre

componentes o sistema deve oferecer Em geral usa-se uma Linguagem de Definição de

Interfaces Especifique a API que o componente Broker

oferece para interagir com clientes e servidores

Page 61: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

61

PADRÕES POSA – Padrões ArquiteturaisPadrão Broker – Implementação Projete o componente Broker

Especifique detalhes da interação do cliente com o servidor

Especifique o comportamento do sistema em caso de falhas

Page 62: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

62

PADRÕES POSA – Padrões Arquiteturais Padrão Model-View-ControlContexto: Aplicações interativas com

interfaces de usuário gráficas flexíveis e controladas pelo usuários.

Problema: Estender a funcionalidade de uma aplicação através apenas da modificação dos menus, da visão do usuário.

Page 63: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

63

PADRÕES POSA – Padrões Arquiteturais Padrão Model-View-ControlSolução: O padrão MVC divide a

aplicação em três camadas: Entrada (View), Processamento (Controller) e Saída (Model).

Utilizar o padrão Observer e estendê-lo para permitir o controle das janelas baseado-em-eventos. O Padrão MVC estende o Observer incorporando um elemento controlador (Controller).

Page 64: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

64

PADRÕES POSA – Padrões Arquiteturais Padrão Model-View-ControlO Modelo diz respeito ao

gerenciamento da informação e ao comportamento da aplicação. O Modelo seria uma mera representação do conteúdo do banco de dados ou entidades de domínio e pelas regras de negócio intrínsecas a essas entidades.

A Visão é responsável por apresentar as entidades de domínio ao usuário, constituindo a parte visível do sistema.

Page 65: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

65

PADRÕES POSA – Padrões Arquiteturais Padrão Model-View-ControlO Controle garante o total

desacoplamento entre essas duas partes principais da aplicação. O Controle interpreta as ações do usuário provenientes da Visão e comanda a execução das regras de negócio contidas no Modelo, além disso, comanda a Visão para que ela apresente adequadamente a informação ao usuário.

Page 66: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

66

PADRÕES POSA – Padrões ArquiteturaisPadrão Model-View-Control

Page 67: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

67

PADRÕES POSA – Padrões ArquiteturaisPadrão Model-View-ControlView - Não esta preocupada em como

a informação foi obtida ou onde ela foi obtida apenas exibe a informaçãoInclui os elementos de exibição no

cliente : HTML , XML , ASP , Applets .É a camada de interface com o usuário.É usada para receber a entrada de

dados e apresentar o resultado

Page 68: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

68

PADRÕES POSA – Padrões ArquiteturaisPadrão Model-View-Control Model - É o coração da aplicação .

Responsável por tudo que a aplicação vai fazer.modela os dados e o comportamento por

atrás do processo de negóciosse preocupa apenas com o armazenamento

, manipulação e geração de dadosÉ um encapsulamento de dados e de

comportamento independente da apresentação.

Page 69: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

69

PADRÕES POSA – Padrões ArquiteturaisPadrão Model-View-ControlCamada de Controle - determina

o fluxo da apresentação servindo como uma camada intermediária entre a camada de apresentação e a lógica.controla e mapeia as ações.

Page 70: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

70

PADRÕES POSA – Padrões ArquiteturaisPadrão Model-View-Control

Page 71: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

71

PADRÕES POSA – Padrões Arquiteturais Padrão Model-View-Control

[http://www.inf.ufes.br/~vsouza/files/DesignPatterns05.pdf] - Referência

Page 72: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

72

PADRÕES POSA – Padrões ArquiteturaisPadrão Model-View-Control

Page 73: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

73

PADRÕES POSA – Padrões ArquiteturaisPadrão Model-View-Control

Page 74: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

74

PADRÕES POSA – Padrões Arquiteturais Padrão Model-View-Control Conseqüências Como o modelo MVC gerencia múltiplos

visualizadores usando o mesmo modelo é fácil manter , testar e atualizar sistemas múltiplos.

É muito simples incluir novos clientes apenas incluindo seus visualizadores e controles.

Torna a aplicação escalável. É possível ter desenvolvimento em paralelo

para o modelo , visão e controle pois são independentes.

Page 75: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

75

PADRÕES POSA – Padrões Arquiteturais Padrão Presentation-Abstraction-

Control O PAC possui uma arquitetura que vai além da

arquitetura do MVC. O MVC é restrito a GUI’s com uma ou mais

visões em cima do mesmo modelo. Se o modelo consistir de subestruturas que

todas requerem uma forma especial de interação, então é necessário uma estrutura de GUI’s mais complexa.

O PAC não tem o modelo como um componente principal.

Para isso, possui uma estrutura hierárquica de componentes PAC.

Page 76: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

76

PADRÕES POSA – Padrões Arquiteturais Padrão Presentation-Abstraction-

Control Cada componente PAC é constituído

de três items: Presentation Abstraction Control

Page 77: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

77

PADRÕES POSA – Padrões Arquiteturais Padrão Presentation-Abstraction-

Control Presentation: é similar ao View do

MVC. Ele mostra as informações provenientes da camada Abstraction.

Abstraction: contém dados como o Model do MVC. Entretanto, é parte de uma estrutura de dados maior, mais completa.

Control: é um pouco similar ao Control do MVC. Processa eventos externos e atualiza o modelo. A diferença pro MVC é que no PAC o Control passa as requisições para o seu PAC pai.

Page 78: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

78

PADRÕES POSA – Padrões ArquiteturaisPadrão Presentation-Abstraction-

Control O PAC agrupa os componentes Controlador e

Visão dentro de um único componente chamado Apresentação

Page 79: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

79

PADRÕES POSA – Padrões ArquiteturaisPadrão Presentation-Abstraction-

Control Comparação: O MVC é assim....

Page 80: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

80

PADRÕES POSA – Padrões Arquiteturais Padrão Presentation-Abstraction-

Control

Page 81: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

81

PADRÕES POSA – Padrões Arquiteturais Padrão Presentation-Abstraction-

Control

Page 82: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

82

PADRÕES POSA – Padrões Arquiteturais Padrão Presentation-Abstraction-

Control

Alto-Nível

Nível Intermediário

Page 83: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

83

PADRÕES POSA – Padrões Arquiteturais Padrão Presentation-Abstraction-

Control A camada Control do pai cria os PAC

filhos quando o programa é iniciado. Quando o Control recebe um evento de

um usuário (1), ele pode atualizar a Presentation (2a) e/ou Abstraction (2b).

Então o Control envia o envio de mudança para seu PAC pai (3).

O Pai atualiza seus filhos (5) e atualiza a Presentation (6a) e/ou Abstraction (6b).

Depois da atualização de todos os filhos, os pais são atualizados (7).

Page 84: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

84

PADRÕES POSA – Padrões Arquiteturais Padrão Presentation-Abstraction-

Control PAC nível-topo:

Prover a funcionalidade principal Controlar a hierarquia dos PAC

PAC nível intermediário Coordenar os PACs nível base Compor PACs bases em uma única

unidade mais abstrata PAC nível base

Prover uma visão específica Prover uma serviço do sistema

Page 85: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

85

PADRÕES POSA – Padrões Arquiteturais Padrão Presentation-Abstraction-

Control• Presentation

-Visualização e interação com o usuário;

• Control-Interação com o componente de nívelIntermediário;

• Abstraction-Mantém informaçõessobre os dados a serem exibidos;

Page 86: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

86

PADRÕES POSA – Padrões Arquiteturais Padrão MicroKernel Se aplicam a sistemas de software que

devem estar aptos a se adaptarem a mudanças nos requisitos do sistema.

Separam um núcleo funcional mínimo das funcionalidades estendidas e das partes específicas do cliente;

[http://disciplinas.lia.ufc.br/tasi061/arquivos/POSA.ppt]

Page 87: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

87

PADRÕES POSA – Padrões ArquiteturaisPadrão MicroKernelO uso de micro-núcleos se aplica a

sistemas que precisam ser adaptados para mudanças nos requisitos.

Premissa básica do bom programador OO: Design for Change;Exemplo: Sistema operacional

hipotético Hydra no qual podemos executar aplicação Windows ou UNIX Systen ;

Page 88: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

88

PADRÕES POSA – Padrões ArquiteturaisPadrão MicroKernelContexto: Desenvolvimento de

várias aplicações que utilizam interfaces similares baseadas numa mesma funcionalidade;

Page 89: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

89

PADRÕES POSA – Padrões Arquiteturais Padrão MicroKernelProblema:

A necessidade de adaptação contínua à evolução de hardwares e softwares;

A necessidade de ser portável, extensível e adaptável para permitir a integração com novas tecnologias.

Page 90: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

90

PADRÕES POSA – Padrões Arquiteturais Padrão MicroKernelProblema:

Software básico é utilizado ao longo de muitos anos, às vezes décadas. Ao longo da sua vida, acontecem muitas mudanças no hardware, nos modelos de programação, nos tipos de bibliotecas utilizadas, e nos requisitos das aplicações;

O núcleo da funcionalidade do software básico deve ser encapsulado em um componente que seja o menor possível e que consuma o mínimo possível de recursos computacionais para não prejudicar as aplicações para as quais ele oferece suporte;

Page 91: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

91

PADRÕES POSA – Padrões Arquiteturais Padrão MicroKernelSolução:

Encapsule os serviços fundamentais da sua plataforma em um componente chamado de “micronúcleo”;

O micronúcleo oferece os seus serviços básicos através de sua interface bem definida;

“Servidores Internos”: funcionalidade estendida do micronúcleo, que não é essencial e que não pode ser implementada sem aumentar a complexidade do micronúcleo

Page 92: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

92

PADRÕES POSA – Padrões ArquiteturaisPadrão MicroKernelSolução:

Outros componentes chamados de “servidores externos” utilizam a interface do micronúcleo para prover outros tipos de interfaces baseadas na funcionalidade exportada pelo micronúcleo.

Os clientes (aplicações) interagem com o sistema através dos “servidores externos”;

Page 93: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

93

PADRÕES POSA – Padrões ArquiteturaisPadrão MicroKernel

Page 94: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

94

PADRÕES POSA – Padrões ArquiteturaisPadrão MicroKernel Participantes

MicroKernel: encapsula as diversas dependências do sistema, externalizando uma interface para prover acesso aos seus serviços. Ele implementa os serviços fundamentais do sistema que não podem ser exportados para outros componentes. Assim, cabe a este componente o controle e a coordenação do acesso aos recursos do sistema.

Page 95: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

95

PADRÕES POSA – Padrões ArquiteturaisPadrão MicroKernelParticipantes

Servidor Interno:Quando certa funcionalidade não tem como ser implementada em seu componente microkernel sem resultar em um aumento da complexidade e do tamanho deste, então ela deve ser exportada para um servidor interno(internal server) que proverá tal serviço ao componente. Só pode ser acessado pelo microkernel.

Page 96: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

96

PADRÕES POSA – Padrões ArquiteturaisPadrão

MicroKernel Participantes

Servidor Externo: Os servidores externos usam interfaces para expor determinados serviços do núcleo funcional mínimo. Eles trabalham recebendo requisições do cliente, invocando serviço pedido ao microkernel e retornando os resultados para o cliente.

Page 97: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

97

PADRÕES POSA – Padrões ArquiteturaisPadrão MicroKernelParticipantes

Cliente: são as aplicações em si que se associam com um – e apenas um – servidor externo, acessando a sua interface, a fim de usufruir dos serviços providos pelo microkernel.

Um cliente que necessita acessar um serviço do microkernel deve faze-lo por meio de um acesso a um servidor externo. Este servidor externo encaminhará a requisição para o microkernel, que em seguida retornará o serviço ao cliente.

Page 98: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

98

PADRÕES POSA – Padrões Arquiteturais Padrão MicroKernel Participantes

Adaptador: Para evitar que os clientes tenham que conhecer a interface dos servidores externos e sejam obrigados a implementá-la diretamente, uma classe auxiliar chamada de Adaptador é utilizada a fim de esconder estas peculiaridades do cliente.

Assim, quando um cliente faz uma requisição de serviço do microkernel, é responsabilidade do adaptador tratar e encaminhar esta chamada de forma adequada ao servidor apropriado.

Page 99: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

99

PADRÕES POSA – Padrões ArquiteturaisPadrão MicroKernelConseqüências: Portabilidade; Flexibilidade e extensibilidade através da

implementação de um novo servidor externo;

Separação de regras e mecanismos. Escalabilidade; Confiança; Transparência.

Page 100: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

100

PADRÕES POSA – Padrões ArquiteturaisPadrão ReflectionPermite mudar as estruturas e o

comportamento de um sistema de software dinamicamente;

Suporta a modificação dos aspectos funcionais, tais como estruturas de tipos e mecanismos de chamada de função;

Page 101: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

101

PADRÕES POSA – Padrões ArquiteturaisPadrão Reflection Exemplo:

Considere um sistema em C++ que necessita que seus objetos sejam guardados no disco de forma persistente.

Poderíamos implementar um método para ler e escrever objetos do disco para cada tipo de objeto: obviamente ruim.

Poderíamos oferecer uma superclasse básica para objetos persistentes da qual todos os objetos persistentes deveriam herdar. As subclasses deveriam sobrecarregar os métodos para leitura e escrita do disco. Problema: mudanças nas classes nos forçariam a atualizar estes métodos manualmente, ou seja, persistência e a funcionalidade básica da aplicação estão fortemente acopladas/misturadas.

Queremos desenvolver um mecanismo de persistência desacoplado da funcionalidade das aplicações.

Este mecanismo deveria ser capaz de enxergar em tempo de execução a estrutura interna dos objetos e decidir o que deve ser armazenado em disco.

Page 102: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

102

PADRÕES POSA – Padrões ArquiteturaisPadrão Reflection Contexto

Construção de sistemas que permitem, a priori, a sua própria modificação.

Page 103: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

103

PADRÕES POSA – Padrões ArquiteturaisPadrão Reflection Problema

Page 104: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

104

PADRÕES POSA – Padrões ArquiteturaisPadrão Reflection Problema: Os requisitos para uma dada aplicação evoluem ao longo do tempo. Forças:

Mudar software convencional (que não está preparado para mudanças) é muito difícil e sujeito a erros;

Sistemas de software adaptáveis em geral tem uma estrutura interna complexa;

Quanto maior o número de mecanismos diferentes que aplicamos em um sistema para torná-lo mais adaptável, mais complexo ele fica;

As mudanças exigidas podem ser de muitos tipos; desde adicionar um pequeno atalho a uma seqüência de comandos até mudar completamente uma aplicação para adaptá-la a um cliente específico.

Page 105: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

105

PADRÕES POSA – Padrões ArquiteturaisPadrão Reflection Solução: Faça com que o software seja ciente de si mesmo

(self-aware), que ele conheça a sua própria estrutura e que seja possível inspecionar e modificar a sua estrutura interna e comportamento.

Page 106: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

106

PADRÕES POSA – Padrões ArquiteturaisPadrão ReflectionA aplicação é dividida em duas partes:

Um meta-nível fornece informações a respeito das propriedades selecionadas do sistema e torna o software consciente disso;

Oferece uma auto-representação do software para que ele tenha conhecimento da sua própria estrutura e comportamento. Ele é composto de meta-objetos.

Page 107: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

107

PADRÕES POSA – Padrões Arquiteturais Padrão Reflection

Um nível-base inclui a lógica da aplicação. A implementação é feita sobre o meta-nível; define a lógica da aplicação e é composto pelos objetos da aplicação (por exemplo, os componentes). Os objetos utilizam os meta-objetos para os aspectos não-funcionais.

Page 108: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

108

PADRÕES POSA – Padrões ArquiteturaisPadrão ReflectionUma interface é especificada para

manipulação dos meta-objetos do meta-nível através de um protocolo de meta-objetos;

Guardam informações sobre os tipos utilizados, os algoritmos utilizados, os mecanismos de comunicação utilizados, os mecanismos de persistência utilizados, etc.

Page 109: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

109

PADRÕES POSA – Padrões ArquiteturaisPadrão Reflection

Class ColaboradoresBase Level Meta Level

Responsability

Implementa a lógica da aplicação;

Usa informações provenientes do meta level;

Class ColaboradoresMeta Level Base Level

ResponsabilityEncapsula sistemas internos

que podem mudar;

Provê uma interface para facilitar as modificações do meta level

Class ColaboradoresMetaobjetc Protocol Meta Level / Base Level

ResponsabilityOferece uma interface para especificar as mudanças do meta level;

Executa mudanças especificadas

Page 110: 1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões Layers Broker MVC MicroKernel Todo-Parte Mestre-Escravo

110

PADRÕES POSA – Padrões ArquiteturaisPadrão ReflectionConseqüências

Nenhuma modificação de código explícita: ao extender o software, passe o novo código para o meta-nível como um parâmetro do meta-objeto. O meta-objeto é responsável por entregar as mudanças.

Facilidade ao mudar o software: o meta-objeto encapsula de forma segura as mudanças.