Baixe o app para aproveitar ainda mais
Prévia do material em texto
www.labes.ufpa.br ARQUITETURA DE SOFTWARE INTRODUÇÃO PROF. RODRIGO QUITES REIS PROF. ADAILTON MAGALHÃES LIMA labes-ufpa, 2017 1 www.labes.ufpa.br Agenda • Unidade 1 – Introdução – 1 - Arquitetura e Projeto de Software – 2- Estilos Arquiteturais 2labes-ufpa, 2017 www.labes.ufpa.br Parte 1 Arquitetura e Projeto de Software labes-ufpa, 2017 3 www.labes.ufpa.br Introdução • Expressões que indicam a adoção de um modelo arquitetural – Sistemas de 3 Camadas... – Uso do Padrão de Projeto X... – ...Padrão Fachada... – Uso da Arquitetura MVC (Modelo-Visão-Controlador) – ... 4labes-ufpa, 2017 www.labes.ufpa.br Arquitetura: o que aprender da construção civil? 5 Capa de livro clássico na área de Arquitetura de software labes-ufpa, 2017 www.labes.ufpa.br Arquitetura: o que aprender da construção civil? 6labes-ufpa, 2017 www.labes.ufpa.br Arquitetura: o que aprender da construção civil? 7labes-ufpa, 2017 www.labes.ufpa.br Arquitetura de Software Amostra 8 Enactment GenericDataSource ContractManagement DiscoverDataLocation SystemInformationManagement DataChannel MessagesChannel DiscoveryChannel DataExchangeFormat NotificationInterface Jxta Channels IMPL (Socket, RMI, WebServices, ....) ARQUITETURA EM CAMADAS DA EXECUCAO DISTRIBUIDA NO SISTEMA P2Process O nivel de abstracao cresce de baixo para cima. No nivel inferior encontram-se os componentes que utilizam diretamente a API JXTA. No nivel superior esta a interface de execucao de modelos de processos do sistema. OBS: Dentro de cada pacote há uma descrição breve da funcionalidade de cada camada e componente. A B C D E labes-ufpa, 2017 www.labes.ufpa.br Arquitetura de Software Amostra 9labes-ufpa, 2017 www.labes.ufpa.br Arquitetura de Software Amostra 10 under definition defined valid finished manager started contract defini... manager finished contract definition / generate contract validation... contract defined and isValid()==... not valid contract defined and isValid()==f... supplier defines that all activitities are concl... isValid()==false, becaus e condition has changed to f... isValid()==true, because condition has changed to ... supplier defines that all activitities are concl...labes-ufpa, 2017 www.labes.ufpa.br O que é Arquitetura de Software? • A arquitetura de software de um programa ou sistema computacional é a estrutura ou estruturas do sistema que abrange os componentes de software, as propriedades externamente visíveis destes componentes e as relações entre eles 11 Bass et al apud Pressman labes-ufpa, 2017 www.labes.ufpa.br Por que Arquitetura de Software? • A arquitetura não é software operacional. Porém, permite a um Engenheiro de Software: – Analisar a adequação de um projeto no atendimento dos requisitos estabelecidos – Considerar alternativas arquiteturais em um estágio em que as mudanças do projeto ainda são fáceis e baratas – Reduzir os riscos associados com a construção de software 12labes-ufpa, 2017 www.labes.ufpa.br Por que Arquitetura de Software? • Facilitador da comunicação entre os envolvidos com um sistema • Destaca decisões iniciais de projeto que vão ter um impacto profundo em todo o trabalho de se segue • Modelo relativamente pequeno, intelectualmente inteligível de como o sistema é estruturado e como seus componentes trabalham em conjunto 13labes-ufpa, 2017 www.labes.ufpa.br Como começar? 14 A parte de imagem com identificação de relação rId3 não foi encontrada no arquivo. Spec A parte de imagem com identificação de relação rId3 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId3 não foi encontrada no arquivo. A parte de imagem com identific ação de relação rId3 não foi encontr ada no arquivo. Prototype Design modeling labes-ufpa, 2017 www.labes.ufpa.br Princípios de Projeto (1) 1. O projeto não pode ser “bitolado” Um bom projetista deve considerar abordagens alternativas, julgando cada uma com base nos requisitos do projeto 2. O projeto deve ser relacionável ao modelo de análise Como um único elemento do projeto pode estar relacionado com vários requisitos, é necessários ter recursos para estabelecer como os requisitos são satisfeitos pelo projeto 3. O projeto não deve reinventar a roda Sistemas são construídos usando um conjunto de padrões de projeto, muitos dos quais estão descritos amplamente na literatura. Os padrões de componentes COTS devem ser escolhidos como alternativa à reinvenção 4. O projeto deve “minimizar a distância intelectual” entre o software e o problema, tal como existe no mundo real O software, sempre que possível, deve imitar a estrutura do domínio do problema 5. O projeto deve exibir uniformidade e integração Um projeto é uniforme se parece que uma única pessoa desenvolveu a coisa toda. Regras de estilo e formato devem ser definidas para uma equipe de projeto antes que o trabalho inicie. Um projeto é integrado se houver cuidado na definição de interfaces entre os seus componentes 15labes-ufpa, 2017 www.labes.ufpa.br Princípios de Projeto (2) 6. O projeto deve ser estruturado para acomodar modificação 7. O projeto deve ser estruturado para degradar suavemente, mesmo quando dados, eventos ou condições de operações aberrantes são encontradas 8. Projeto não é codificação. Codificação não é projeto – Mesmo quando os mais detalhados projetos procedimentais são criados para os componentes de programa, o nível de abstração de projeto é maior que o do código-fonte. 9. O projeto deve ser avaliado quanto à qualidade, à medida que é criado, não depois do fato – Uma variedade de conceitos e medidas de projeto está disponível para auxiliar o projetista na avaliação de qualidade. 10. O projeto deve ser revisto para minimizar erros conceituais (semânticos) – A equipe de projeto deve garantir que os principais elementos conceituais (omissões, ambigüidade e inconsistência) tenham sido cuidados antes de se preocupar com a sintaxe do modelo 16labes-ufpa, 2017 www.labes.ufpa.br Princípios de Projeto (3) • 11. Deve considerar de maneira detalhada o atendimento aos requisitos não-funcionais – Segurança – Escala – Tempo de resposta – Plataforma operacional – Disponibilidade: 24 x 7 – ... 17labes-ufpa, 2017 www.labes.ufpa.br Conceitos fundamentais do projeto de software labes-ufpa, 2017 18 www.labes.ufpa.br Conceitos Fundamentais • Abstração - dados, procedimento e controle • Refinamento - elaboração dos detalhes de todas as abstrações • Modularidade - criação de compartimentos para dados e funções • Arquitetura - estrutura completa do software – Propriedades estruturais – Propriedades Extra-estruturais – Estilos e padrões • Procedimento - os algoritmos que fornecem as funções desejadas • Ocultamento da Informação - interfaces definidas e controladas 19labes-ufpa, 2017 www.labes.ufpa.br Conceitos Fundamentais • Abstração – De dados 20 porta Definido como uma estrutura de dados fabricante modelo tipo material peso mecanismo de abertura preço labes-ufpa, 2017 www.labes.ufpa.br Conceitos Fundamentais • Abstração – Procedimental 21 abrir Definido tendo o “conhecimento” do do objeto que está associado com Abrir Detalhamento algorítmico labes-ufpa, 2017 www.labes.ufpa.br Conceitos Fundamentais • Refinamento 22 open walk to door; reach for knob; open door; walk through; close door. repeat until door opens turn knob clockwise; if knob doesn't turn, then take key out; find correct key; insert in lock; endif pull/push door move out of way; end repeat labes-ufpa, 2017 www.labes.ufpa.br Conceitos Fundamentais • Modularidade – Facilidade para construir, facilidade para modificar, facilidade para conserto, ... 23 A par te de ima ge m co m ide ntif ica çã o de rel açã o rId 3 nã o foi en co ntr ad a no arq uiv o. A parte de imagem com identificação de relação rId3 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId3não foi encontrada no arquivo. A parte de imagem com identificação de relação rId3 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId3 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId3 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId3 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId3 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId3 não foi encontrada no arquivo. A part e de imag em com ident ifica ção de relaç ão rId3 não foi enco ntra da no arqui vo. A parte de imag em com identi ficaçã o de relaç ão rId3 não foi enco ntrad a no arqui vo. A parte de image m com identifi cação de relação rId3 não foi encont rada no arquivo . A parte de image m com identifi cação de relação rId3 não foi encont rada no arquivo . A parte de imagem com identificação de relação rId3 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId3 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId3 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId3 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId3 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId3 não foi encontrada no arquivo. labes-ufpa, 2017 www.labes.ufpa.br Conceitos Fundamentais • Modularidade 24 Qual o número “correto” de módulos para um projeto de software específico? Quantidade “ótima” de módulos custo de software Quantidade de módulos module integration cost Custo de desenvolvimento de módulo labes-ufpa, 2017 www.labes.ufpa.br Conceitos Fundamentais • Modularidade 25 MODULE What's inside?? How big is it?? Qual o tamanho “correto” dos módulos? labes-ufpa, 2017 www.labes.ufpa.br Conceitos Fundamentais • Modularidade à Independência – Coesão • Medida da identidade funcional de um módulo • I.e., módulo realiza uma única função – Acoplamento • Grau de dependência entre módulos – Ideal: coesão alta e acoplamento baixo – Obs: apesar destas medidas terem surgido para técnicas Estruturas, são também aplicáveis em métodos OO 26labes-ufpa, 2017 www.labes.ufpa.br Conceitos Fundamentais • Modularidade: Coesão – Tipos: • Funcional (caixa preta, a melhor) – uma e somente uma função identificável. • Seqüencial (várias atividades – que precisam ser - executadas em seqüência, e os dados fluem de uma atividade para outra) • Comunicacional (atividades usam a mesma entrada e a mesma saída) • Procedural (atividades diferentes, com controle – e não dados - fluindo de uma para outra) • Temporal (várias funções executadas no mesmo tempo. Ex: inicialização) • Lógica (várias funções semelhantes porém independentes) • Coincidental (a pior) 27labes-ufpa, 2017 www.labes.ufpa.br Conceitos Fundamentais • Modularidade: Coesão – Como conseguir coesão funcional – descrever o módulo evitando • Sentença composta, vírgula, mais de 1 verbo (seqüencial ou comunicacional) • Palavras que se relacionem com o tempo (temporal) • Predicado da sentença com mais de 1 objeto 28labes-ufpa, 2017 www.labes.ufpa.br Conceitos Fundamentais • Exercício 29labes-ufpa, 2017 www.labes.ufpa.br Conceitos Fundamentais • Modularidade: Acoplamento – nível de inter-dependência entre os módulos de um programa de computador. Quanto maior for o acoplamento menor será o nível de coesão. (Wikipedia) – Tipos • Acoplamento de dados: troca de parâmetros (o melhor) • Acoplamento de imagem (estrutura de dados comum utilizada parcialmente em vários módulos) • Acoplamento de controle - exemplo: flags indicando o que um módulo deve fazer (intermediário) • Acoplamento comum (módulos acessam área de dados comum) • Acoplamento de conteúdo: se um módulo faz referência ao interior do outro (o pior) 30labes-ufpa, 2017 www.labes.ufpa.br Conceitos Fundamentais 31labes-ufpa, 2017 www.labes.ufpa.br Conceitos Fundamentais • Arquitetura 32 “The overall structure of the software and the ways in which that structure provides conceptual integrity for a system.” [SHA95a] Propriedades Estruturais. Este aspecto da representação de projeto arquitetural define os componentes de um sistema (e.g., módulos, objetos, filtros) e a maneira pela qual estes componentes são empacotados e interagem entre si. Propriedades Não-Funcionais. A descrição do projeto arquitetural deve tratar como a arquitetura atende os requisitos de performance, capacidade, capacidade, segurança, adaptação e outras características do sistema Famílias de sistemas relacionados. O projeto arquitetural deve ser baseado em reutilização e reutilizável labes-ufpa, 2017 www.labes.ufpa.br Conceitos Fundamentais • Ocultamento da Informação – Information Hiding, Parnas 1972 33 módulo interface controlada ”segredo" • algoritmo • estrutura de dados • detalhe da interface externa • política de alocação de recurso clientes Decisão específica de projeto labes-ufpa, 2017 www.labes.ufpa.br Conceitos Fundamentais • Ocultamento da Informação – Reduz a ocorrência de “efeitos colaterais” – Limita o impacto global das decisões locais de projeto – Enfatiza comunicação através de interfaces controladas – Desencoraja o uso de dados globais – Leva ao encapsulamento - um atributo de projeto de alta qualidade – Resulta em qualidade de software 34labes-ufpa, 2017 www.labes.ufpa.br Agenda • Introdução • 1 - Arquitetura e Projeto de Software • 2- Estilos Arquiteturais • 3 - Padrões de Projeto • 4 - Estilo em Camadas e MVC – detalhamento • Exercícios e trabalhos práticos 35labes-ufpa, 2017 www.labes.ufpa.br Parte 2 Estilos Arquiteturais nPressman, 2012 nMendes, 2002 nAn Introduction to Implicit Invocation Architectures - Benjamin Edwards (ben@ben- edwards.com) nGarlan & Shaw: An Introduction to Software Architecture - http://www.cs.cmu.edu/afs/cs/project/able/ftp/intro_softarch/intro_softarch.pdf labes-ufpa, 2017 36 mailto:ben@ben-edwards.com www.labes.ufpa.br Referências bibliográficas 37labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais 38 Arquitetura = Componentes + Conectores labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Arquitetura é composta de: – Subsistemas ou componentes • Responsáveis pelo comportamento do sistema • Exemplos: – Carrinho de compras, gestor de transações concorrentes, banco de dados – Padrões de Conexão • Possibilitando vários tipos de interação e compartilhamento de informação entre esses componentes • Exemplos: – Chamadas de métodos, consultas SQL, requisições HTTP 39labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Cada estilo descreve uma categoria de sistemas que engloba: – Um conjunto de componentes (um banco de dados, módulos de interface) que realiza uma função requerida pelo sistema – Um conjunto de conectores que fornecem “comunicação, coordenação e cooperação” entre os componentes – Restrições que definem como os componentes podem ser integrados para compor um sistema – Modelos semânticos que permitem ao projetista entender as propriedades gerais do sistema pela análise das propriedades conhecidas de suas partes 40labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Pipes & Filters • Chamada e Retorno • Orientadas a Objeto • Camadas • Centrada em Dados • Invocação implícita 41labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Centradas em Fluxo de dados ou Pipes and Filters 42 Exemplo: sistemas workflow Considera uma rede pela qual flui dados de uma extremidade (origem) à outra (destino) labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Centradas em Fluxo de dados ou Pipes and Filters: Aplicação em compiladores (1) 43 Análise Léxica AnáliseSintática Otimização Análise Semântica Geração de código 2ª geração) Código intermediário para atender portabilidadeentre plataformas 1ª geração) Análise Léxica AnáliseSintática Análise Semântica Otimização Geração de código Função de análise Função de síntese Geração de Código Intermediário Análise Léxica AnáliseSintática Análise Semântica Otimização Geração de código Função de análise Função de síntese Geração de Código Intermediáriolabes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Pipes and Filters: Compiladores (2) 44 Análise Léxica Análise Sintática Otimização Análise Semântica Geração de código Geração de Código Intermediário Tabela de símbolos de estrutura sintática editor Outras ferramentas Integração com editores e outras ferramentas labes-ufpa, 2017 www.labes.ufpa.br 45 DTE com seqüência de estados e ações para TCC1 e TCC2. (CBCC)labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Pipes & Filters • Chamada e Retorno • Orientadas a Objeto • Camadas • Centrada em Dados • Invocação implícita 46labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Chamada e Retorno – Estrutura relativamente fácil de ampliar e mudar – Subestilos: • Programa Principal/Subprograma • Chamada de Procedimentos Remotos (SD) 47 Exemplo: middleware para programação distribuída labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Chamada e Retorno – Aplicações: • Sistemas distribuídos com troca de mensagens • RMI, CORBA, WebServices, entre outros 48 cliente Método remoto execução interrom pida execução reinicia labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Pipes & Filters • Chamada e Retorno • Orientadas a Objeto • Camadas • Centrada em Dados • Invocação implícita 49labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Orientado a Objeto – Classes encapsulam dados e operações – Interfaces estabelecem contratos e associação de baixo acoplamento – Comunicação e coordenação entre componentes conseguida através de mensagens 50 : Atendente comp : Computador : Loja Tela Inserção Computador 1: inserirComputador(loja) 2: criar(número) 3: comp 4: recuperar(loja) 5: loja 6: inserir(comp) 7: computador inserido 8: computador inserido labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Orientado a Objeto – Classes e Associações • Implementação de Tipos Abstratos de Dados (entidades independentes) • Mapeamento com conceitos do domínio do problema • Troca de mensagens à menor acoplamento que uso de variáveis compartilhadas • Classes podem ser reutilizadas • Objetos podem ser distribuídos e executar em seqüencialmente ou em paralelo 51labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Orientado a Objetos – Mensagem • Comunicação entre obj1 e obj2 (à) – obj2.msg(); // executada no contexto de obj1 • Destinatário explicitamente declarado (ruim) 52labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais 53 : Usuário : Usuário Controlador Relatórios Controlador Relatórios : Equipe : Equipe : Jogo : Jogo : OcorrênciasJogoEquipe : OcorrênciasJogoEquipe 1: obterGolsAno 2: obterEquipes( ) 3: equipes 4: equipes 5: obterQuantidadeGols(equipe, ano) 6: obterJogos(Equipe, ano) 7: jogosEquipeAno 8: obterGols(Equipe, Jogo) 9: quantidadeGols repetir enquanto houver jogosEquipeAno 10: totalGols labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Orientado a Objetos – Interfaces • Representam responsabilidades em alto nível de abstração • Baixo acoplamento baixo: classes não se conhecem • Facilita a manutenção 54labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Orientado a Objetos – Interface 55labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Orientado a Objetos – Frameworks - (wikipedia, pt) • estrutura de suporte definida em que um outro projecto do software pode ser organizado e desenvolvido. • Pode incluir programas de apoio, bibliotecas de código, linguagens de script e outros softwares para ajudar a desenvolver e juntar diferentes componentes do seu projecto. • Especificamente em OO, framework é um conjunto de classes com objetivo de reutilização de um design, provendo um guia para uma solução de arquitetura em um domínio específico de software. • Framework se diferencia de uma simples biblioteca (toolkit), pois esta se concentra apenas em oferecer implementação de funcionalidades, sem definir a reutilização de uma solução de arquitetura (design). 56labes-ufpa, 2017 http://pt.wikipedia.org/wiki/Classe_(programa%C3%A7%C3%A3o) www.labes.ufpa.br Estilos Arquiteturais • Orientado a Objetos – Possibilita (todos) os estilos arquitetônicos descritos 57labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Pipes & Filters • Chamada e Retorno • Orientadas a Objeto • Camadas • Centrada em Dados • Invocação implícita 58labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Camadas 59 ¨ Inspirado em Sistemas Operacionais ¨Utilizado hoje para segmentar IU, Lógica da aplicação, e BD (normalmente) labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Camadas 60 http://www.ime.usp.br/~andrers/aulas/bd2005-1/img/arquitetura_n_camadas.jpg labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais 61 http://atlas-connect-forum.web.cern.ch/Atlas-connect-forum/SDP/layers.gif labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Camadas – Número de camadas depende da funcionalidade a ser oferecida pelo sistema – Definição de critérios de abstração para agrupar subtarefas na composição de uma camada – Critérios: persistência, interação com usuário, distribuição, etc. – Vantagem: flexibilidade – Desvantagem: o desempenho fica comprometido face à necessidade de um caso de uso passar por várias camadas – Desafio do projeto em camadas: encontrar equilíbrio entre número de camadas x tempo de resposta x outros requisitos não-funcionais 62labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Camadas – Protocolos de redes de computadores 63 física enlace rede transporte sessão apresentação aplicação labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Camadas – Desenho de aplicação “aberta” 64 física enlace rede transporte sessão apresentação aplicação física enlace rede transporte sessão apresentação aplicação protocolo da camada 7 protocolo da camada 6 protocolo da camada 5 protocolo da camada 4 protocolo da camada 3 protocolo da camada 2 protocolo da camada 1 Sistema X Sistema Y física enlace rede transporte sessão apresentação aplicação física enlace rede transporte sessão apresentação aplicação protocolo da camada 7 protocolo da camada 6 protocolo da camada 5 protocolo da camada 4 protocolo da camada 3 protocolo da camada 2 protocolo da camada 1 Sistema X Sistema Y Descrição de um protocolo público, onde cada camada estabelece uma interface para conversar com Componentes da camada correspondente. labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Pipes & Filters • Chamada e Retorno • Orientadas a Objeto • Camadas • Centrada em Dados • Invocação implícita 65labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Centradas em Dados – Repositório (passivo) e Blackboard (ativo) – Usado quando um sistema é descrito como um armazém centralizado de dados que se comunica com um número de clientes – Vantagem: Fácil de administrar – Desvantagem: Dificuldade em identificar erros/dependências 66labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Centradas em Dados - Repositório – Acesso a um repositório com dados comuns para os clientes – Componentes-clientes podem ser modificados ou adicionados sem preocupação com os outros 67 Repositório de dados Software do cliente Software do cliente Software do cliente Software do cliente Software do cliente labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Centradas em Dados – Baseada em SGBDs “ricos” • Pode ser visto como um repositório passivo ou blackboard ativo – Stored Procedures e triggers podem serusados para notificar clientes • recursos de programação, ferramentas para geração de telas e relatórios, tipos definidos por usuários, ... • Por exemplo: Oracle, DB2 – Vantagem: • simplifica o desenvolvimento de ferramentas diversas, independentes – Desvantagem: • Dependência de um produto/tecnologia/fornecedor. 68labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Pipes & Filters • Chamada e Retorno • Orientadas a Objeto • Camadas • Centrada em Dados • Invocação implícita 69labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Invocação Implícita (baseada em eventos) – Objetivo principal: baixo acoplamento – Funcionamento: • Ao invés de invocar um procedimento diretamente, um componente pode anunciar um ou mais eventos • Outros componentes registram o interesse no evento • Quando um evento é anunciado, o sistema por si só invoca os procedimentos registrados pelo evento. • Portanto, um evento implicitamente causa a invocação de procedimentos em diversos outros módulos 70labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Invocação Implícita 71labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Invocação implícita – Diferença com relação à invocação explícita: • Os componentes do sistema usam eventos para se comunicar entre si. • Os conectores são ligações fracas entre eventos e métodos dos componentes, os quais podem ser (re-)definidos em tempo de execução. 72labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Invocação implícita – Exemplo: framework • Fluxo de controle determinado pelo framework • O código do framework invoca o código adicionado 73 Framework Código do usuário Fluxo de Controle labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Invocação implícita – Tipicamente implementado com o padrão Observer 74 http://en.wikipedia.org/wiki/Observer_pattern labes-ufpa, 2017 www.labes.ufpa.br Estilos Arquiteturais • Recado Final – Leitura adicional é necessária para observar exemplos de aplicações • Garlan e Shaw é uma ótima leitura – Arquiteturas híbridas • Invariavelmente um sistema adotada mais de um estilo arquitetural simultâneo 75labes-ufpa, 2017
Compartilhar