Baixe o app para aproveitar ainda mais
Prévia do material em texto
16/03/2012 1 2 Capa de livro clássico na área de Arquitetura de software 16/03/2012 2 3 4 16/03/2012 3 � Projeto de arquitetura: ◦ Processo para identificar os subsistemas que compõem um sistema e a estrutura para controlar a comunicação entre os subsistema • A saída desse processo é uma descrição da arquitetura do software 5 • Fase inicial do processo de concepção do sistema. • Representa a ligação entre a especificação e a codificação. • Muitas vezes realizadas em paralelo com algumas atividades de especificação. • Trata-se de identificar os principais componentes do sistema e suas comunicações. 6 16/03/2012 4 7 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 16/03/2012 5 9 ContractValidationInter... isValid() DateContractValidation beginDate : String endDate : String DateContractValidation() isValid() ConditionContractValidation condition : String ConditionContractValidation() isValid() This interface defines a validation operation to one contract. The first operation after access the contract would be look if it's still valid or not. Different implementation classes should provide different kind of contracts goals : date, condition, goal reached, etc.... Here the relationship between contract and Software Development Organizations is defined. For a contract, one organization can be the supplier or can be ... With Organization Metrics and Reputation Information (inside package reputation) a customer can classify and sele ct the bes t Organization to develop one sys tem or task. The ope ration to choose the best Organization is supposed to be a high time consuming task and thi s information can be used to accelerate thi s process ... OrganizationMetric OrganizationMetric() Condition startValidDate : Date endValidDate : Date validPeriod : Period Condition() Right type : String Right() Organization Organization() 0..n 0..n +theOrganizationMetric 0..n +theOrganization0..n OrganizationManager d igitalUUID : String 0..n 1..n +theOrganization 0..n 1..n theOrganizationMan... Rule ruleID : String ruleDescription : String type : int validPeriod : Period Rule() 1..n 1 +isConditionOf 1..n+hasCondition 1 1 0..n +theRigh t 1 0..n ContractMetric ContractMetric() PeerHost hostName : String hostAddress : String hostDescription : String peerState : String PeerHost() 1..n 1 +thePeerHos t 1..n +theOrganization1 Contract validationKey : String definitionPeriod : Period contractState : String contractValidationInterface : ContractValidationInterface Contract() 0..n 1..n 0..n +customers1..n isCustomerInCont... 1..n 0..n +suppliers 1..n +isSupplierInContract 0..n 1..n 0..n +theOrganizationManager 1..n +theContract 0..n 0..n1..n +isPartOf 0..n +containsRule 1..n0..n0..n +theContract 0..n+theContractMetric0..n 0..n 0..n +isInvolved 0..n +contaisPeerHost 0..n FieldCondition atributeName name allow : boolean FieldCondition() ClassCondition className packageName ClassCondition() 0..11 +theFieldCondition 0..11 ObjectCondition objectOid objectID ObjectCondition() Validation key is generated after contract definition. All messages received trying to access data based on contract definition need to be validated with this key. Only hosts that know contract content must know this private key. With this caution the system try to avoid "fake peers" on network. de onde tu tiraste os requis ito s para esta histór ia aqui? O Arna ldo es tá de acordo? ADAILTON: Es ta definição inicia l foi baseada na idéia de Metric, que já existe no modelo do WebAPSEE. Esta questão de cus tos re lacionados com a escolha da melhor parceira é tratada no texto do prof Arnaldo. O amadu recimento desta idéia surgiu com a conce ituacao dos "repu tation systems", que proveêm estruturas de dados para análise de dados entre hosts, m uito usado hoje para redes p2p na verificação de hosts "sad ios" e hosts que enviam virus e arquivos errados. Melhor de finição destes dados deve cons tar no pacote reputat ion (logo acima deste pacote atual). [PS: o pacote reputation nao esta totalmen te definido, pois estou avaliando as inform acoes dados pelo Mr Kinateder , pesquisador ... Period beginDa te : Date endDate : Date validationCondition Defines a time pe riod 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, because condition has changed to f... isValid()==true, because condition has changed to ... supplier defines that all activitities are concl... 16/03/2012 6 � A arquitetura de software, programa ou sistema computacional é a estrutura 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 � A arquitetura não é software funcional � 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 12 16/03/2012 7 � Facilitador da comunicação entre os envolvidos com um sistema � Destaca decisões iniciais de projeto que impactam profundamente em todas as outras fases do projeto � Modelo relativamente pequeno, intelectualmente inteligível de como o sistema é estruturado e como seus componentes trabalham em conjunto 13 � O O O O projetoprojetoprojetoprojeto nãonãonãonão podepodepodepode ser “ser “ser “ser “bitoladobitoladobitoladobitolado”””” ◦ Um bom projetista deve considerar abordagens alternativas, julgando cada uma com base nos requisitos � O O O O projetoprojetoprojetoprojeto devedevedevedeve estarestarestarestar relacionadorelacionadorelacionadorelacionado aoaoaoao modelomodelomodelomodelo de de de de análiseanáliseanáliseanálise ◦ Como um único elemento do projeto pode estar relacionado com vários requisitos, é necessários ter recursos para estabelecer como os requisitos serão satisfeitos pelo projeto � O O O O projetoprojetoprojetoprojeto nãonãonãonão devedevedevedeve reinventarreinventarreinventarreinventar a a a a rodarodarodaroda ◦ Sistemas são construídos usando um conjunto de padrões de projeto, muitos dos quais estão descritos amplamente na literatura 14 16/03/2012 8 � O O O O projeto deve “minimizar a distância intelectual” projeto deve “minimizar a distância intelectual” projeto deve “minimizar a distância intelectual” projeto deve “minimizar a distância intelectual”entre entre entre entre o software e o o software e o o software e o o software e o problemaproblemaproblemaproblema � O O O O projeto deve exibir uniformidade e projeto deve exibir uniformidade e projeto deve exibir uniformidade e projeto deve exibir uniformidade e integraçãointegraçãointegraçãointegração ◦ Em um projeto uniforme parece que uma única pessoa desenvolveu ele todo. ◦ Regras de estilo e formato além de interfaces devem ser definidas para uma equipe de projeto antes que o trabalho inicie. � O projeto deve ser estruturado para acomodar O projeto deve ser estruturado para acomodar O projeto deve ser estruturado para acomodar O projeto deve ser estruturado para acomodar modificaçãomodificaçãomodificaçãomodificação 15 � Projeto Projeto Projeto Projeto não é codificação. Codificação não é não é codificação. Codificação não é não é codificação. Codificação não é não é codificação. Codificação não é projeto projeto projeto 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 � O O O O projetoprojetoprojetoprojeto devedevedevedeve ser ser ser ser avaliadoavaliadoavaliadoavaliado quantoquantoquantoquanto à à à à qualidadequalidadequalidadequalidade, à , à , à , à medidamedidamedidamedida quequequeque é é é é criadocriadocriadocriado, , , , nãonãonãonão depoisdepoisdepoisdepois de ser de ser de ser de ser criadocriadocriadocriado ◦ Uma variedade de conceitos e medidas de projeto está disponível para auxiliar o projetista na avaliação de qualidade. � O projeto deve ser revisto para minimizar erros O projeto deve ser revisto para minimizar erros O projeto deve ser revisto para minimizar erros O projeto deve ser revisto para minimizar erros conceituais (semânticos)conceituais (semânticos)conceituais (semânticos)conceituais (semânticos) ◦ A equipe de projeto deve garantir que os principais elementos conceituais (omissões, ambigüidade e inconsistência) tenham sido tratados 16 16/03/2012 9 � Deve-se considerar de maneira detalhada o atendimento aos requisitos não-funcionais ◦ Segurança ◦ Escalabilidade ◦ Eficiência ◦ Plataforma operacional ◦ Disponibilidade: 24 x 7 ◦ ... 17 16/03/2012 10 � AbstraçãoAbstraçãoAbstraçãoAbstração – Diferentes visoesdados (procedimento e controle) � RefinamentoRefinamentoRefinamentoRefinamento - elaboração dos detalhes de todas as abstrações � ModularidadeModularidadeModularidadeModularidade - criação de módulos ou pacotes para dados e funções � ProcedimentoProcedimentoProcedimentoProcedimento - os algoritmos que fornecem as funções desejadas � OcultamentoOcultamentoOcultamentoOcultamento dadadada InformaçãoInformaçãoInformaçãoInformação - interfaces definidas 19 � Abstração ◦ De dados 20 porta Definido como uma estrutura de dados fabricante modelo tipo material peso mecanismo de abertura preço 16/03/2012 11 � Abstração ◦ Procedimental 21 abrir Definido tendo o “conhecimento” do do objeto que está associado com Abrir Detalhamento algorítmico � Modularidade ◦ Facilidade para construir, facilidade para modificar, facilidade para conserto, ... 22 A pa rt e de im ag e m co m id en tifi ca çã o de rel aç ão rI d3 nã o foi en co nt ra da A parte de imagem com identificação de relação rId4 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId5 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId6 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId7 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId8 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId9 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId10 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId11 não foi encontrada no arquivo. A part e d A part e d… A parte de image m c A parte de image m co A parte de imagem com identificação de relação … A parte de imagem com identificação de relaçã… A parte de imagem com identificação de relação rId18 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId19 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId20 não foi encontrada no arquivo. A parte de imagem com identificação de relação rId21 não foi encontrada no arquivo. 16/03/2012 12 � Modularidade 23 MODULE What's inside?? How big is it?? Qual o tamanho “correto” dos módulos?Qual o tamanho “correto” dos módulos? � Modulo deve ser Independente ◦ 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 Análise Estruturada, são também aplicáveis em métodos OO 24 16/03/2012 13 � Ocultamento da Informação ◦ Information Hiding, Parnas 1972 25 módulomódulo interfaceinterface ””segredosegredo"" • • algoritmoalgoritmo • • estruturaestrutura de dadosde dados • • detalhedetalhe dada interface interface externaexterna • • políticapolítica de de alocaçãoalocação de de recursorecurso OutrosOutros MódulosMódulos � 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 � Atributo de projeto de alta qualidade ◦ Resulta em qualidade de software 26 16/03/2012 14 � Introdução � 1 - Arquitetura e Projeto de Software � 2222---- Estilos ArquiteturaisEstilos ArquiteturaisEstilos ArquiteturaisEstilos Arquiteturais � 3 - Padrões de Projeto � 4 - Estilo em Camadas e MVC – detalhamento � Exercícios e trabalhos práticos 27 28 Arquitetura = Componentes + Conectores 16/03/2012 15 � Arquitetura é composta de: ◦ Subsistemas ou componentes � Responsáveis pelo comportamento do sistema ◦ Conexões entre componentes � Possibilitando vários tipos de interação e compartilhamento de informação entre esses componentes 29 � Cada estilo descreve uma categoria de sistemas que engloba: ◦ Um conjunto de componentescomponentescomponentescomponentes (banco de dados, módulos de interface, módulos funcionais) que realiza uma função requerida pelo sistema ◦ Um conjunto de conectoresconectoresconectoresconectores que fornecem “comunicação, coordenação e cooperação” entre os componentes ◦ RestriçõesRestriçõesRestriçõesRestrições que definem como os componentes podem ser integrados para compor um sistema ◦ Modelos Modelos Modelos Modelos semânticossemânticossemânticossemânticos que permitem ao projetista entender as propriedades gerais do sistema pela análise das propriedades conhecidas de suas partes 30 16/03/2012 16 � PipesPipesPipesPipes & & & & FiltersFiltersFiltersFilters (Dutos e Filtros)(Dutos e Filtros)(Dutos e Filtros)(Dutos e Filtros) � Cliente Servidor � Camadas � Centrada em Dados � Invocação implícita 31 � Centradas em Fluxo de dados ou Pipes and Filters 32 Exemplo: sistemas workflow Considera uma rede pela qual flui dados de uma extremidade (origem) à outra (destino) 16/03/2012 17 � Centradas em Fluxo de dados ou Pipes and Filters: Aplicação em compiladores 33 Análise Léxica Análise Sintática Otimização Análise Semântica Geração de código Exemplo 2 Exemplo2 Exemplo 2 Exemplo 2 Código intermediário para atender portabilidade entre plataformasCódigo intermediário para atender portabilidade entre plataformasCódigo intermediário para atender portabilidade entre plataformasCódigo intermediário para atender portabilidade entre plataformas Exemplo 1Exemplo 1Exemplo 1Exemplo 1 Análise Léxica Análise Sintá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álise Sintá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 � Pipes & Filters � Cliente ServidorCliente ServidorCliente ServidorCliente Servidor � Camadas � Centrada em Dados � Invocação implícita 34 16/03/2012 18 • Modelo de sistema distribuído em que apresenta como os dados e processamento são distribuídos através de uma série de componentes • Pode ser implementado em um único computador ou em vários. • Exemplo: • Um conjunto de servidores autônomos que prestam serviços específicos, tais como impressão, gerenciamento de dados, etc e um conjunto de clientes que solicitam estes serviços. • Rede que permite aos clientes acessar os servidores. 35 � Chamada e Retorno ◦ Estrutura relativamente fácil de ampliar e mudar ◦ Subestilos: � Programa Principal/Subprograma � Chamada de Procedimentos Remotos 36 16/03/2012 19 37 � Pipes & Filters � Cliente Servidor � CamadasCamadasCamadasCamadas � Centrada em Dados � Invocação implícita 38 16/03/2012 20 � Camadas 39 � Inspirado em Sistemas Operacionais �Utilizado hoje para segmentar IU, Lógica da aplicação, e BD (normalmente) � Camadas 40 http://www.ime.usp.br/~andrers/aulas/bd2005- 1/img/arquitetura_n_camadas.jpg 16/03/2012 21 41 � 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, lógica de negócio, 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 42 16/03/2012 22 � Camadas ◦ Protocolos de redes de computadores 43 física enlace rede transporte sessão apresentação aplicação � Camadas ◦ Desenho de aplicação “aberta” 44fí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 16/03/2012 23 � Pipes & Filters � Cliente Servidor � Camadas � Centrada em DadosCentrada em DadosCentrada em DadosCentrada em Dados � Invocação implícita 45 � Centradas em Dados ◦ Repositório ◦ Usado quando um sistema é descrito como um armazém centralizado de dados que se comunica com um número de clientes 46 16/03/2012 24 • Subsistemas devem trocar dados. O que pode ser feito de duas maneiras: • Dados compartilhados são guardados em um banco de dados central ou repositório e podem ser acessados por todos os subsistemas; • Cada subsistema mantém seu próprio banco de dados e transmite dados explicitamente para outros subsistemas. • Quando grandes quantidades de dados devem ser compartilhadas, é mais comum o uso do modelo de repositório compartilhado pois esse é um eficiente mecanismo de compartilhamento de dados. 47 � 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 48 Repositório de dados Software do cliente Software do cliente Software do cliente Software do cliente Software do cliente 16/03/2012 25 49 � Centradas em Dados ◦ Baseada em SGBDs “ricos” � Pode ser visto como um repositório passivo ou blackboard ativo � O próprio banco pode ser usado para notificar clientes � O banco fornece recursos de programação, ferramentas para geração de telas e relatórios, tipos de dados customizáveis, etc � Por exemplo: Oracle, DB2 ◦ Vantagem: � simplifica o desenvolvimento de ferramentas diversas, independentes ◦ Desvantagem: � Dependência de um produto/tecnologia/fornecedor. 50 16/03/2012 26 � Pipes & Filters � Chamada e Retorno � Orientadas a Objeto � Camadas � Centrada em Dados � Invocação implícitaInvocação implícitaInvocação implícitaInvocação implícita 51 � Invocação Implícita (baseada em eventos) ◦ Objetivo principal: baixo acoplamento ◦ Funcionamento: � Componentes são registrados com o interesse em responder a tipos de eventos � Quando um determinado componente deseja invocar um procedimento este não o faz diretamente. Ele anuncia um evento � Quando um evento é anunciado, o sistema por si só invoca os procedimentos registrados para atender ao evento � Portanto, um evento implicitamente causa a invocação de procedimentos em diversos outros módulos 52 16/03/2012 27 � 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 redefinidos em tempo de execução. 53 � 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 54 16/03/2012 28 � Introdução � 1 - Arquitetura e Projeto de Software � 2- Estilos Arquiteturais � 3 3 3 3 ---- Padrões de ProjetoPadrões de ProjetoPadrões de ProjetoPadrões de Projeto � 4 - Estilo em Camadas e MVC – detalhamento � Exercícios e trabalhos práticos 55 � Motivação ◦ Projetar software orientado a objetos não é uma tarefa fácil ◦ Projeto de software reutilizávelreutilizávelreutilizávelreutilizável é difícil � encontrar objetos pertinentes � desenvolve-los em classes no nível correto de granularidade � definir as interfaces das classes e hierarquias de herança � estabelecer relações-chave entre eles 56 16/03/2012 29 � Motivação ◦ Projetistas experimentes possuem maior facilidade em construir projetos orientados a objetos � Razão: a experiência com projetos anteriores leva a um contínuo aperfeiçoamento a partir da reutilização de projetos bem sucedidos � Quando uma boa solução é encontrada, esta é utilizada repetidamente � Padrões de classes e de comunicação entre objetos que reaparecem freqüentemente 57 � Motivação ◦ Padrões existem em diferentes áreas � Literatura � Arquitetura de prédios 58 16/03/2012 30 � Consideração ◦ Apesar de todos os avanços na tecnologia de software um problema básico existe: � a a a a comunicaçãocomunicaçãocomunicaçãocomunicação entre entre entre entre pessoaspessoaspessoaspessoas, das , das , das , das melhoresmelhoresmelhoresmelhores práticaspráticaspráticaspráticas e ee e soluçõessoluçõessoluçõessoluções emememem EngenhariaEngenhariaEngenhariaEngenharia de Softwarede Softwarede Softwarede Software 59 © Copyright Clenio F. Salviano 1997 � Conhecimento de Pessoas Experientes ◦ É intangível e muita valioso � Principais Fatores para: [Capers Jones 96] � Sucesso: Gerentes e Técnicos Experientes � Fracasso: Gerentes e Técnicos Inexperientes ◦ Experiência é adquirida lentamente, como resultado de trabalho e persistência ◦ Como este conhecimento é organizado? � CapturarCapturarCapturarCapturar, , , , comunicarcomunicarcomunicarcomunicar e e e e assimilarassimilarassimilarassimilar elementoselementoselementoselementos destedestedestedeste conhecimentoconhecimentoconhecimentoconhecimento é é é é difícildifícildifícildifícil 60 © Copyright Clenio F. Salviano 1997 16/03/2012 31 � A adoção de padrões pode ◦ tornar mais fácil reutilizar projetos e arquiteturas bem-sucedidas ◦ ajudar na escolha de alternativas de projeto que tornam um sistema mais reutilizável 61 � Os anti-padrões podem ser de dois tipos: ◦ Aqueles que descrevem uma solução ruim para um problema que resultou em uma situação ruim. ◦ Aqueles que descrevem como evitar uma situação ruim e como proceder para, a partir dela, atingir uma boa solução. 62 16/03/2012 32 � O que é um padrão de projeto (design pattern)? ◦ Um padrão de projeto sistematicamente nomeianomeianomeianomeia, explicaexplicaexplicaexplica e avaliaavaliaavaliaavalia um projeto importante e recorrente em sistemas orientados a objetos ◦ Descrição de “moldes” para a(s) (microa(s) (microa(s) (microa(s) (micro----) arquitetura(s) ) arquitetura(s) ) arquitetura(s) ) arquitetura(s) de softwarede softwarede softwarede software ◦ Captura a experiência de projeto para serem usadas efetivamente ◦ Documentação em forma de catálogo ◦ Um padrão de projeto encapsula uma técnica testada técnica testada técnica testada técnica testada e aprovadae aprovadae aprovadae aprovada 63 � Projeto de Software ◦ Compromisso com a implementação ◦ Reutilização ◦ Eficiência ◦ Influênciado pelos elementos do ambiente de implementação � Linguagens de programação � Sistemas de Banco de Dados 64 16/03/2012 33 � Histórico ◦ Christopher Alexander � “cada padrão descreve um problema no nosso ambiente e o núcleo da sua solução, de tal forma que você possa usar esta solução mais de um milhão de vezes, sem nunca fazê-lo da mesma maneira” (1977) � Arquitetura de construções e cidades ◦ The Gang of Four (GoF) � Microarquiteturas de software � Gamma (ex-Taligent, autor de ET++) � Helm (IBM T.J. Watson R.C.) � Jonhson (Smalltalk, University of Illinois) � Vlissides (IBM T.J. Watson R.C.) � http://hillside.net/patterns/DPBook/GOF.html 65 66 http://hillside.net/patterns/DPBook/DPBook.html 16/03/2012 34 � Contexto, ProblemaContexto, ProblemaContexto, ProblemaContexto, Problema, Forças e Solução ◦ Contexto: Você tem bastante experiência prática na sua área. ◦ Você tem notado que utiliza certas soluções para problemas que ocorrem comumente. ◦ Você gostaria de compartilhar sua experiência com outros ◦ Problema: Como compartilhar esta solução de problemas recorrentes com outros para que ela possa ser reutilizada? 67 � Contexto, Problema, ForçasForçasForçasForças e Solução ◦ Forças: � Manter a solução com você não requer esforço � Compartilhar verbalmente ajuda somente alguns � Escrever a solução é difícil e requer refexão � Transformá-la de específica em geral é difícil � As pessoas não devem utilizá-la se não entenderem as razões sobre porque utilizá-la � Escrever as soluções talvez atrapalhe seu negócio 68 16/03/2012 35 � Contexto, Problema, Forças e SoluçãoSoluçãoSoluçãoSolução ◦ Solução: � Escreva a solução na forma de um pattern. � Capture ambos o problema e a solução, e também as razões porque (e onde) a solução é aplicável. � Apresente os Elementos Obrigatórios para garantir que as informações necessárias estão comunicadas de forma clara. � Distribua o pattern para grandes audiências, que não comprometa seu negócio. Às vezes é melhor publicar o pattern apenas internamente. 69 � Onde encontrar patterns? ◦ Livro GoF: 23 padrões � http://www.hillside.net/patterns/ ◦ Padrões para Java � http://java.sun.com/blueprints/patterns/index.html ◦ Padrões para Delphi: � http://www.obsof.com/delphi_tips/pattern.html ◦ ... 70 16/03/2012 36 � Elementos essenciais na definição de um padrão ◦ Nome ◦ Problema ◦ Solução ◦ Conseqüências 71 � Elementos essenciais na definição de um padrão ◦ Nome � Referência para descrição de um problema de projeto, suas soluções e conseqüências em uma ou duas palavras 72 16/03/2012 37 � Elementos essenciais na definição de um padrão ◦ Problema � Descreve quando aplicar um problema � Explica o problema e seu contexto � Estruturas de classe � Lista de condições que devem ser satisfeitas para que faça sentido aplicar o padrão 73 � Elementos essenciais na definição de um padrão ◦ Solução � Descreve os elementos que compõem o projeto, seus relacionamentos, suas responsabilidades e colaborações � Arranjo geral de elementos que resolvem um problema � Uso de UML para descrição de soluções 74 16/03/2012 38 � Elementos essenciais na definição de um padrão ◦ Conseqüências � Análise crítica do padrão fornecido, incluindo vantagens, desvantagens e limitações � Elementos que influenciam decisivamente na escolha de um padrão como solução para um problema 75 � Descrição completa de um padrão de projeto (Gamma et al) ◦ Nome e classificação do padrão ◦ Intenção e Objetivo ◦ Também conhecido como ◦ Motivação ◦ Aplicabilidade ◦ Estrutura (UML) ◦ Participantes ◦ Colaborações ◦ Conseqüências ◦ Implementação ◦ Exemplo de código ◦ Usos conhecidos ◦ Padrões relacionados 76 16/03/2012 39 � Organização do Catálogo de Gamma et al ◦ 23 padrões de projeto são propostos ◦ Padrões orientados para SmallTalk e C++ ◦ Para permitir a reutilização é fundamental que o projetista consiga localizar facilmente o padrão que seja útil ◦ Padrões de projeto variam quanto � Granularidade � Classe � Objeto � Propósito � De criação � Estrutural � Comportamental 77 78 16/03/2012 40 � Os padrões de criaçãopadrões de criaçãopadrões de criaçãopadrões de criação abstraem o processo de instanciação. � Eles ajudam a tornar um sistema independente de como seus objetos são criados, compostos e representados. � Os padrões de criação se tornam mais importantes à medida que os sistemas evoluem no sentido de depender mais da composição de objetos do que da herança de classes 79 � SingletonSingletonSingletonSingleton ◦ Classificação:Classificação:Classificação:Classificação: � Granularidade: de classe � Propósito: de criação ◦ IntençãoIntençãoIntençãoIntenção � Garantir que uma classe tenha somente uma instância e fornecer um ponto global de acesso para a mesma 80 16/03/2012 41 � SingletonSingletonSingletonSingleton ◦ MotivaçãoMotivaçãoMotivaçãoMotivação � É importante para algumas classes ter uma, e apenas uma, instância. � Por exemplo, um sistema de contabilidade será dedicado a servir somente a uma companhia. � Como garantimos que uma classe tenha somente uma instância e que esta instância seja facilmente acessível? � Uma variável global torna um objeto acessível, mas não impede você de instanciar múltiplos objetos � Uma solução melhor seria tornar a própria classe responsável por manter o controle da sua única instância. 81 � SingletonSingletonSingletonSingleton ◦ AplicabilidadeAplicabilidadeAplicabilidadeAplicabilidade � Use o padrão Singleton quando� Deve haver apenas uma instância de uma classe, e essa instância deve dar acesso aos clientes através de um ponto bem conhecido; � Quando a única instância tiver de ser extensível através de subclasses, possibilitando aos clientes usarem uma instância estendida sem alterar o seu código 82 16/03/2012 42 � SingletonSingletonSingletonSingleton ◦ Estrutura 83 Singleton static Instance() singletonOperation() getSingletonData() static uniqueInstance singletonData return uniqueInstance � SingletonSingletonSingletonSingleton ◦ Participantes � Singleton define uma operação Instance que permite aos clientes acessarem sua única instância � O padrão pode ser responsável pela criação da sua própria instância única ◦ Colaborações � Os clientes acessam uma instância Singleton unicamente pela operação Instance do Singleton 84 16/03/2012 43 � SingletonSingletonSingletonSingleton ◦ Implementação � Garantindo uma única instância (cont.) � A implementação correspondente é a seguinte: � Os clientes acessam o singleton através da função Instance 85 Singleton* Singleton::_instance = 0; Singleton* Singleton::Instance() { if (_instance == 0) { _instance = new Singleton; } return _instance; } � SingletonSingletonSingletonSingleton ◦ Exemplo de código � Classe existente: MazeFactory � Classe responsável pela criação de labirintos (compostos por salas, paredes e portas) 86 Class MazeFactory { Public: static MazeFactory* Instance(); // código existente entra aqui Protected: MazeFactory(); Private: static MazeFactory* _instance; }; MazeFactory* MazeFactory::_instance = C MazeFactory* MazeFactory::Instance() { if (_instance == 0) { _instance = new MazeFactory; } return _instance; } 16/03/2012 44 � SingletonSingletonSingletonSingleton emememem ◦ Teste 87 � Padrões Estruturais ◦ Preocupam-se como serão criados os objetos para obtenção de estruturas maiores. ◦ Utilizam herança para compor interfaces ou implementações. ◦ Descrevem maneiras de compor objetos para obter novas funcionalidades. ◦ Define um estrutura para o compartilhamento de objetos. ◦ Exemplo � Façade (Fachada) � Adapter 88 16/03/2012 45 � A intenção do padrão façadefaçadefaçadefaçade é prover uma interface única para um conjunto de interfaces de um subsistema. � Torna a aplicação mais fácil já que toda a comunicação entre as classes ocorre a partir de uma única interface. 89 FaFaççadeadeFaFaççadeade � Quando utilizar o Façade? ◦ Quando se deseja construir um interface mais simples de acesso às classes; ◦ Para tornar o sistema mais reutilizável; ◦ Para encapsular o acesso aos dados de SGBD. 90 16/03/2012 46 � Considerações sobre implementaçãoConsiderações sobre implementaçãoConsiderações sobre implementaçãoConsiderações sobre implementação ◦ Redução do acoplamento do cliente-subsistema. ◦ Ocorre tornando o Façade uma classe abstrata com subclasses concretas. � Classe Classe Classe Classe de subsistemas: públicas ou de subsistemas: públicas ou de subsistemas: públicas ou de subsistemas: públicas ou privadas?privadas?privadas?privadas? ◦ A classe Façade deve ser pública. ◦ As classes envolvidas no processo podem ser privadas. 91 92 16/03/2012 47 package noticia; import java.sql.*; import java.util.Vector; public class Fachada { private String msg=null; private ResultSet rs=null; private CadUsuario cadusr; private CadNoticia cadnt; public Fachada() { } 93 Definição da estrutura da classe classe Façade, referenciando operações entre objetos. 94 16/03/2012 48 � Adapter ◦ Converte a interface de uma classe em outra interface que os clientes esperam. ◦ O padrão Adapter permite que classes que não poderiam trabalhar juntas devido a interfaces incompatíveis trabalhem juntas. ◦ É importante na migração de sistemas legados 95 � Adapter ◦ Estrutura 96 16/03/2012 49 � Padrões que definem a dinâmica do funcionamento � Envolvem troca de mensagens � Exemplos mostrados aqui: ◦ State ◦ Observer 97 � StateStateStateState ◦ ClassificaçãoClassificaçãoClassificaçãoClassificação � Comportamental de Objeto ◦ PropósitoPropósitoPropósitoPropósito � Permitir a um objeto alterar o seu comportamento quanto o seu estado interno mudar � O objeto irá aparentar mudar de classe ◦ TambémTambémTambémTambém conhecidoconhecidoconhecidoconhecido comocomocomocomo � Objects for States 98 16/03/2012 50 � State ◦ Objetivo: usar objetos para representar estados e polimorfismo para tornar transparente a execução de tarefas dependentes de estado. ◦ Simula a troca de classe de um objeto 99 � State: Estrutura 10 0 16/03/2012 51 � State: Participantes ◦ ContextContextContextContext � Define a interface de interesse para os clientes � Mantém uma instância de uma subclasse ConcreteState que define o estado corrente ◦ StateStateStateState � define uma interface para encapsular o comportamento associado com um estado particular do contexto ◦ ConcreteStateConcreteStateConcreteStateConcreteState � Implementa um comportamento associado a um estado do Context 10 1 10 2 16/03/2012 52 � Observer ◦ Também conhecido como Publish/Subscribe ◦ Usado para monitorar o estado de um objeto 10 3 10 4 16/03/2012 53 � Observer - Participantes ◦ Subject � Classe abstrata que provê uma interface para anexar e desanexar observadores (observers). Possui uma lista privada de observers. Contém estes métodos: � Attach – Adiciona um novo observer para a lista � Detach – Remove um observador existente � Notify – Notifica cada observer pela chamada a update() – quando ocorre alguma mudança 10 5 � Observer - Participantes ◦ ConcreteSubject � Esta classe provê o estado de interesse para os observadores. � Também envia a notificação a todos os observadores através da chamada da função Notify (em sua superclasse ou classe básica == classe Subject). � Contém a função � getState – retorna o estado do subject 10 6 16/03/2012 54 � Observer – Participantes ◦ Observer � Esta classe define uma interface de atualização para todos os observers para receberem notificações de atualização do Subject. � A classe Observer é abstrata � Contém a função: � Update – método abstrato para ser substituído por observers concretos. 10 7 � Observer - Participantes ◦ ConcreteObserver � Classe cujos objetos mantêm referência com ConcreteSubject para receber o estado de um Subject quando uma notificação é recebida. � Contém a função � Update – função que é herdada da superclasse. Quando chamada pelo Subject, o ConcreteObserver chama a função getState do Subject para atualizar a informação sobre o estado do Subject. 10 8 16/03/2012 55 � Introdução � 1 - Arquitetura e Projeto de Software � 2- Estilos Arquiteturais � 3 - Padrões de Projeto � 4 4 4 4 ---- Estilo em Camadas e MVC Estilo em Camadas e MVC Estilo em Camadas e MVC Estilo em Camadas e MVC –––– detalhamentodetalhamentodetalhamentodetalhamento � Exercícios e trabalhos práticos 10 9 � O uso de camadas é um padrão arquitetural que ajuda na tarefa de: ◦ Separar responsabilidades ◦ Promover baixo acoplamento ◦ Promover alta coesão © Carla A. Lima Reis e Rodrigo Quites Reis (LABES-UFPA) / 2010 11 0 16/03/2012 56 � Introdução ◦ Variação mais de arquitetura em camada conhecida: 3 camadas � Permite alterar as regras de negócio, o interface ou o acesso aos dados independentemente. 11 1 � É um padrão arquitetural que divide as aplicações em 3 camadas “independentes”. � Permite que um mesmo aplicativo possa ser visualizado atravésde várias interfaces. 16/03/2012 57 � Camadas do MVC: ◦ Camada de Apresentação (View) � Inclui os elementos de exibição no cliente: HTML, XML, Applets. � É usada para receber a entradas de dados e apresentar o resultado. ◦ Camada de Lógica da Aplicação (Model) � Modela os dados e o comportamento por trás do processo de negócio. � Se preocupa apenas com o armazenamento e geração dos dados. ◦ Camada de Controle � Interpreta as ações do usuário e as mapeia para chamadas do modelo. � É responsável pelo fluxo da aplicação. © Carla A. Lima Reis e Rodrigo Quites Reis (LABES-UFPA) / 2010 11 3 © Carla A. Lima Reis e Rodrigo Quites Reis (LABES-UFPA) / 2010 11 4 16/03/2012 58 � Sem o MVC ◦ Na primeira fase da evolução apenas eram produzidas páginas em HTML estático para mostrar informações estáticas. ◦ Na próxima fase evolutiva, foram usadas tecnologias de geração dinâmica de páginas como o CGI, Servlets e JSP. © Carla A. Lima Reis e Rodrigo Quites Reis (LABES-UFPA) / 2010 11 5 � .NET ◦ Microsoft UIP ◦ Maverick.NET � ActionScript ◦ ARP ◦ PureMVC � Java ◦ JavaServer Faces ◦ Spring Framework ◦ Struts � PHP ◦ Zend Framework ◦ Symfony Framework © Carla A. Lima Reis e Rodrigo Quites Reis (LABES-UFPA) / 2010 11 6 16/03/2012 59 1) O que é projeto de arquitetura? 2) O que é Arquitetura de Software? 3) Identifique e explique os estilos arquiteturais apresentados. 11 7 4) Identifique os tipos de padrões de projeto e cite exemplos e explique-os. 5) Explique o modelo MVC. 11 8
Compartilhar