Preview only show first 10 pages with watermark. For full document please download

Padrões Posa Classificação Dos Padrões Detalhamento Dos Padrões Layers

ARQUITETURA DE SOFTWARE Ponte entre os Requisitos e sua Implementação [Thaís Batista]

   EMBED


Share

Transcript

1 PADRÕES POSA Classificação dos Padrões Detalhamento dos Padrões LayersBroker MVC MicroKernel Todo-Parte Mestre-Escravo2 ARQUITETURA DE SOFTWAREPonte entre os Requisitos e sua Implementação [Thaís Batista]3 ARQUITETURA DE SOFTWAREAbstração que ajuda a gerenciar complexidade Projeto Arquitetural do Software Estrutura modular do software Componentes Relacionamento entre componentes [Thaís Batista]4 ARQUITETURA DE SOFTWAREFormada 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. [Thaís Batista]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 ;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 Idiomas7 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;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 Broker9 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 Reflection10 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);11 PADRÕES POSA - CLASSIFICAÇÃOPadrõ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 - Subscriber12 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);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 Pointer14 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 OSI15 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ária16 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;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;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 estrutura19 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"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;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ível22 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;23 PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas) Estrutura24 PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas) Estrutura25 PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas) Exemplo26 PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas) Cada camada individual pode ser uma entidade complexa consistindo de diferentes componentes27 PADRÕES POSA – Padrões ArquiteturaisPadrã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 alta28 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 diferente29 PADRÕES POSA – Padrões ArquiteturaisPadrã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;30 PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas) Exemplo Aplicação Arquitetura 2 Camadas31 PADRÕES POSA – Padrões ArquiteturaisPadrão Layers (Camadas) Exemplo Aplicação Arquitetura 3 Camadas32 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ídas33 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; pipe filtro34 PADRÕES POSA – Padrões ArquiteturaisPadrão Pipes and Filters Soluçã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.35 PADRÕES POSA – Padrões ArquiteturaisPadrão Pipes and Filters Soluçã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.36 PADRÕES POSA – Padrões ArquiteturaisPadrão Pipes and Filters37 PADRÕES POSA – Padrões ArquiteturaisPadrão Pipes and Filters38 PADRÕES POSA – Padrões ArquiteturaisPadrão Pipes and Filters Estrutura39 PADRÕES POSA – Padrões ArquiteturaisPadrão Pipes and Filters Estrutura40 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 passivos41 PADRÕES POSA – Padrões ArquiteturaisPadrão Pipes and Filters - Implementação Conseqüê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;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.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 compartilhados44 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.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.46 PADRÕES POSA – Padrões ArquiteturaisPadrão BlackBoard47 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;48 PADRÕES POSA – Padrões ArquiteturaisPadrão BlackBoard Componentes: 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;49 PADRÕES POSA – Padrões ArquiteturaisPadrão BlackBoard50 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;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 especializadas52 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ção53 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.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.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.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.57 PADRÕES POSA – Padrões ArquiteturaisPadrão Broker Estrutura58 PADRÕES POSA – Padrões ArquiteturaisPadrão Broker59 PADRÕES POSA – Padrões ArquiteturaisPadrão Broker60 PADRÕES POSA – Padrões ArquiteturaisPadrão Broker – Implementação Defina um modelo de objetos ou use um modelo existente; 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 servidores61 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 falhas62 PADRÕES POSA – Padrões ArquiteturaisPadrão Model-View-Control Contexto: 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.63 PADRÕES POSA – Padrões ArquiteturaisPadrão Model-View-Control Soluçã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).64 PADRÕES POSA – Padrões ArquiteturaisPadrão Model-View-Control O 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.65 PADRÕES POSA – Padrões ArquiteturaisPadrão Model-View-Control O 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.66 PADRÕES POSA – Padrões ArquiteturaisPadrão Model-View-Control67 PADRÕES POSA – Padrões ArquiteturaisPadrão Model-View-Control View - Não esta preocupada em como a