CK119 – Engenharia de Software Padrões de Software Rossana Andrade [email protected] Departamento de Computação Universidade Federal do Ceará Copyright © 2002-2007 Rossana Andrade Slide 1 CK119 – Engenharia de Software Objetivos Gerais Oferecer uma visão geral sobre os conceitos de padrões de software Explicar a terminologia Apresentar exemplos de padrões de software Apresentar exemplos de classificação de padrões e de reuso de padrões Não pretende exaurir o assunto Copyright © 2002-2007 Rossana Andrade Slide 2 CK119 – Engenharia de Software Conteúdo O que são Padrões – Diferentes Definições – Um pouco da história Escrevendo Padrões – – – – Componentes de um Padrão Um Exemplo Padrões como uma Peça ou Estória Diferentes Formatos • GoF • Alexander • Coplien Copyright © 2002-2007 Rossana Andrade Slide 3 CK119 – Engenharia de Software O que são Padrões O que é? – Nova categoria de conhecimento • Conhecimento não é novo, mas falar sobre ele é • Objetivo: conhecer o que você já conhece Como? – Partindo de problemas e soluções recorrentes em diferentes áreas do conhecimento Copyright © 2002-2007 Rossana Andrade Slide 4 CK119 – Engenharia de Software O que é um Padrão (Cont.) Aplicação – Arquitetura – Ciência da Computação • Engenharia de software – Engenharia Mecânica – Telecomunicações – ... Copyright © 2002-2007 Rossana Andrade Slide 5 CK119 – Engenharia de Software O que é um Padrão (Cont.) Por que padrões de software? – engenheiros de software não iniciam o seu projeto do nada – ao contrário, nós reutilizamos “idéias”que já vimos antes – as mesmas técnicas são utilizadas repetitivamente – a indústria de software necessita documentar o que nós fazemos Copyright © 2002-2007 Rossana Andrade Slide 6 CK119 – Engenharia de Software Diferentes Definições “Um padrão é uma entidade que descreve um problema que ocorre repetidamente em um ambiente e então descreve a essência da solução para este problema, de tal forma que você use esta solução milhões de vezes, sem nunca utilizá-la do mesmo modo,” Christopher Alexander Copyright © 2002-2007 Rossana Andrade Slide 7 CK119 – Engenharia de Software Diferentes Definições (Cont.) “Um padrão é um pedaço de literatura que descreve um problema de projeto e uma solução geral para o problema num contexto particular, ” James Coplien Copyright © 2002-2007 Rossana Andrade Slide 8 CK119 – Engenharia de Software Diferentes Definições (Cont.) “Um padrão é uma solução provada para um problema em um contexto, ” Comunidade de Software Copyright © 2002-2007 Rossana Andrade Slide 9 CK119 – Engenharia de Software Um Pouco da História Object-Oriented (OO) – Metade do anos 80 Padrões de software emergiram de objetos Ward Cunningham and Kent Beck – 1987: linguagem de padrões para interface de usuário James Coplien – 1988: idioms Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides – 1990 1995: Padrões de projeto (Design Patterns) Copyright © 2002-2007 Rossana Andrade Slide 10 CK119 – Engenharia de Software Um Pouco da História Peter Coad – Desde 1991 explora padrões The Hillside Group – 1993: tentativa de montar as primeiras bases para padrões de software – Idéias de Alexander integradas aos padrões de projeto da GoF 1994: The first Pattern Languages of Programming (PLoP) conference OOPSLA’94: livro da GoF é lançado – Padrões de projeto: foco em OO Copyright © 2002-2007 Rossana Andrade Slide 11 CK119 – Engenharia de Software Escrevendo Padrões Escritos na forma literária Não apenas documentação Diferentes formatos – GoF, Alexandrian, Coplien, Cockburn, Portland Componentes essenciais – nome, contexto, problema, solução e usos conhecidos Outros componentes importantes – forças, contexto resultante, padrões relacionados, autor e data Copyright © 2002-2007 Rossana Andrade Slide 12 CK119 – Engenharia de Software Componentes Essenciais de um Padrão Nome – Uma palavra ou uma frase curta – É a primeira coisa que o projetista encontra quando procura uma solução – Nomes de padrões devem se tornar parte do vocabulário do domínio – Iniciantes procuram nomes que descrevem o problema ou sua solução – Os nomes do padrões da GoF são analogias • Bridge, facade, mediator, entre outros Copyright © 2002-2007 Rossana Andrade Slide 13 CK119 – Engenharia de Software Componentes Essenciais de um Padrão (Cont.) Contexto – Quando considerar o padrão – Ajuda a ter uma visão abrangente de onde o problema surge expressando o seu início, a sua essência e o seu corpo – É difícil escrever um bom contexto – Inclui um histórico dos padrões que têm sido aplicados antes • aplicável às linguagens de padrões) Copyright © 2002-2007 Rossana Andrade Slide 14 CK119 – Engenharia de Software Componentes Essenciais de um Padrão (Cont.) Problema – Quando utilizar o padrão – Problema a ser resolvido descrito claramente – Expresso por uma simples pergunta ou por uma formulação resumida do problema – Geralmente a primeira coisa que um procuradorpor-solução observa – Um entendimento do problema vem da análise das forças Copyright © 2002-2007 Rossana Andrade Slide 15 CK119 – Engenharia de Software Componentes Essenciais de um Padrão (Cont.) Solução – O que fazer para resolver o problema • Deve descrever claramente o que é necessário para resolver o problema – Três tipos • Uma solução que pode ser usada para todas as ocorrências do problema • Uma solução que pode ser melhorada • E uma solução que vai ser refinada nos níveis de projeto e implementação de diferentes formas Copyright © 2002-2007 Rossana Andrade Slide 16 CK119 – Engenharia de Software Componentes Essenciais de um Padrão (Cont.) Usos Conhecidos – Exemplos de aplicações do padrão em sistemas reais – Pelo menos 3 usos conhecidos • Regra de 3 Copyright © 2002-2007 Rossana Andrade Slide 17 CK119 – Engenharia de Software Outros Componentes Importantes de um Padrão Forças – O padrão é um balanço de forças/conseqüências – Considerações positivas ou negativas a serem avaliadas a fim de • mostrar que a solução apresentada é a melhor • mostrar por que a solução mais óbvia é errada • mostrar porque o problema é difícil de se resolver Copyright © 2002-2007 Rossana Andrade Slide 18 CK119 – Engenharia de Software Outros Componentes Importantes de um Padrão (Cont.) Contexto Resultante – É a conclusão do padrão – O estado ou a configuração do sistema depois da aplicação do padrão, incluindo as consequências (boas e ruins) – O contexto resultante de um padrão é a entrada para os padrões seguintes • Aplicável para linguagens de padrões Copyright © 2002-2007 Rossana Andrade Slide 19 CK119 – Engenharia de Software Outros Componentes Importantes de um Padrão (Cont.) Padrões Relacionados – Como o padrão está relacionado com outros padrões que se referem ao mesmo problema – Com que outros padrões este pode ser usado Copyright © 2002-2007 Rossana Andrade Slide 20 CK119 – Engenharia de Software Um exemplo Hands in View Contexto – Para explorar uma montanha inteira, um esquiador deve estar confortável e adaptável a qualquer terreno e a uma rápida mudança de terreno – Para aproveitar melhor este padrão, o esquiador deve estar esquiando em um nível onde curvas em paralelo possam ser ligadas consistentemente Copyright © 2002-2007 Rossana Andrade Slide 21 CK119 – Engenharia de Software Hands in View (Cont.) Problema – O esquiador falha ao tentar a descida na montanha em declínios profundos e irregulares, resultando em escorregões, quedas de costas e “yard sales” Forças – – – – – Medo de cair é a resposta mais básica de todas Confiança no equipamento é essencial Movimento contínuo é essencial Fatiga pode ser um fator em descidas longas Descida de compromisso com os esquis é essencial para que os esquis funcionem como projetados Copyright © 2002-2007 Rossana Andrade Slide 22 CK119 – Engenharia de Software Hands in View (Cont.) Solução – Concentre-se em manter as mãos no campo de visão – Traga-as para dentro do seu campo de visão imediatamente depois de cada bastão tocar o chão e de cada curva Contexto resultante – Ao colocar as mãos à vista, o alinhamento do corpo muda do estado de ficar timidamente para trás e permite que as extremidades do esqui deslizem debaixo do esquiador – Portanto, o ato de colocar as mãos à vista puxa o corpo para a frente e, conseqüentemente, para baixo da montanha, trazendo o peso do esquiador sobre o esqui montanha abaixo e forçando a extremidade a morder e girar Copyright © 2002-2007 Rossana Andrade Slide 23 CK119 – Engenharia de Software Hands in View (Cont.) Motivação – A tendência natural de todo ser humano normal é manter a coluna reta ou em caso de queda eminente, inclinar-se para trás – Isto provoca quedas e curvas indesejadas quando esquiando – As conseqüências podem ser claramente entendidas, mas o medo previne que você se incline para frente. – Entretanto, deixando as suas mãos no campo de visão, os esquis devem deslizar mais facilmente sem que você tenha que confrontar o medo diretamente Autor – Don Olson 95/07/07 Origem – Instrutor de esqui anônimo em algum lugar de Utah. Copyright © 2002-2007 Rossana Andrade Slide 24 CK119 – Engenharia de Software Padrões como uma peça ou estória Analogia de Robert Hanmer – – – – – Contexto: o cenário Problema: o tema Forças: desenvolvendo o conflito Solução: catarse, a moral da peça Contexto Resultante: “eles viveram felizes para sempre” ou deixando espaço para a seqüência – Motivação: a discussão no bar ou no café depois da peça Copyright © 2002-2007 Rossana Andrade Slide 25 CK119 – Engenharia de Software Formato da Gang of Four - GoF Nome do Padrão e Classificação – Analogias – Padrões de criação, de estrutura e de comportamento Intenção – Breve descrição do problema e da solução Também Conhecido Como Motivação – Exemplo de protótipo Aplicabilidade – Problema, forças e contexto Copyright © 2002-2007 Rossana Andrade Slide 26 CK119 – Engenharia de Software Formato da Gang of Four – GoF (Cont.) Estrutura Participantes Colaborações Conseqüências Solução – forças Implementação Solução Código Exemplo Usos Conhecidos Padrões relacionados Copyright © 2002-2007 Rossana Andrade Slide 27 CK119 – Engenharia de Software Formato Alexandrian As seções não são fortemente delimitadas – Podemos identificar determinados componentes em todos os padrões Uma figura no início Um parágrafo introdutório – contexto Copyright © 2002-2007 Rossana Andrade Slide 28 CK119 – Engenharia de Software Formato Alexandrian (Cont.) 3 diamantes no início e no fim da explicação do problema e da solução – a palavra “therefore:”, imediatamente depois a solução – Uma sentença clara do problema, uma discussão de forças, a solução e a motivação – Um diagrama mostrando a solução No final, um parágrafo relacionando o padrão dentro da linguagem Copyright © 2002-2007 Rossana Andrade Slide 29 CK119 – Engenharia de Software Formato do Coplien Nome Contexto Problema Forças Solução Sketch – Desenhos ou Diagramas Contexto Resultante Rationale – Mostra por que o padrão é útil – Mostra a importância dos princípios atrás dos padrões Copyright © 2002-2007 Rossana Andrade Slide 30 CK119 – Engenharia de Software Características de um bom padrão Deve ser uma solução para um problema em um contexto Você deve ser capaz de dizer ao solucionador do problema o que fazer e como resolver o problema Deve ser maduro, uma solução provada (regra de três) A solução deve ser construída dentro da ótica do solucionador do problema e pode ser implementada milhões de vezes sem se repetir Deve ser capaz de se reproduzir (padrões que constroem) Copyright © 2002-2007 Rossana Andrade Slide 31 CK119 – Engenharia de Software Um Exemplo de um bom Padrão Nome: Half-Object + Protocol (HOPP) Problema: Às vezes um objeto deve aparecer em mais de um espaço de endereçamento. Como nós podemos fazer a diferença entre um espaço e múltiplos espaços de endereçamento de forma transparente? Forças: Complexidade, Distribuição, Disponibilidade de Informação, Custo e Performance Copyright © 2002-2007 Rossana Andrade Slide 32 CK119 – Engenharia de Software Um Exemplo de um bom Padrão (Cont.) Solução – Divida o objeto em dois objetos-metade, um em cada espaço de endereçamento, com um protocolo entre eles – Em cada espaço de endereçamento, implemente a funcionalidade para interagir eficientemente com os outros objetos naquele espaço de endereçamento (isto pode resultar em funcionalidade duplicada, ou seja, funções implementadas em ambos espaços de endereçamento) Copyright © 2002-2007 Rossana Andrade Slide 33 CK119 – Engenharia de Software Um Exemplo de um bom Padrão (Cont.) Solução (Cont.) – Defina o protocolo entre os dois objetosmetade de tal forma que ele coordene as atividades dos dois objetos-metade e carregue a informação essencial que necessita ser passada entre os espaços de endereçamento Copyright © 2002-2007 Rossana Andrade Slide 34 CK119 – Engenharia de Software Um Exemplo de um bom Padrão (Cont.) Sketch Diagrama UML para uma aplicação de FTP Copyright © 2002-2007 Rossana Andrade Slide 35 CK119 – Engenharia de Software Um Exemplo de um bom Padrão (Cont.) Sketch Diagrama FTP com a aplicação do HOPP Copyright © 2002-2007 Rossana Andrade Slide 36 CK119 – Engenharia de Software Um Exemplo de um bom Padrão (Cont.) Usos Conhecidos – Sistemas de Telefonia: half-call – IBM’s VisualAge Ultra Light Client • http://www.software.ibm.com/ad/smalltalk/about/ulcfact.html Padrões Relacionados – padrões para o projeto de protocolos • Message as Object, Message Parameter as Object • Mecanismos para tratar a criação e recepção da mensagem – Information collection e Formatting – Parsing e Handling Copyright © 2002-2007 Rossana Andrade Slide 37 CK119 – Engenharia de Software O que não é um padrão: Exemplo Contexto – Um grande sistema OO em um computador com memória virtual Problema – Como você aloca objetos na memória? Solução – Execute alguns problemas típicos e descubra quais objetos comunicam-se freqüentemente em um determinado tempo local e coloque-os na mesma página Copyright © 2002-2007 Rossana Andrade Slide 38 CK119 – Engenharia de Software O que não é um Padrão: Dicas Um regra simples Uma receita Um algoritmo Uma estrutura de dados Uma solução isolada para um problema em um contexto Copyright © 2002-2007 Rossana Andrade Slide 39 CK119 – Engenharia de Software Próximos Slides Padrões trabalhando em Conjunto – O que são Linguagens de Padrões – Exemplos de Linguagens de Padrões • Linguagem de Padrões by C. Alexander Guia para a escrita de padrões – Exemplo deLinguagem de Padrões • Linguagem de Padrões para Escrita de Padrões por Gerard Meszaros e Jim Doble Copyright © 2002-2007 Rossana Andrade Slide 40 CK119 – Engenharia de Software Padrões Trabalhando em Conjunto Padrões freqüentemente compartilham o mesmo contexto Problemas produzidos por um padrão são algumas vezes resolvidos por outros Um projeto complexo consiste de muitos padrões – Catálogo de padrões – Linguagens de Padrões Copyright © 2002-2007 Rossana Andrade Slide 41 CK119 – Engenharia de Software O que são Linguagens de Padrões “Uma coleção de padrões que trabalham juntos para resolver problemas num domínio específico”, Linda Rising “Uma linguagem de padrões é uma coleção de padrões que ampliam-se para gerar um sistema” Copyright © 2002-2007 Rossana Andrade Slide 42 CK119 – Engenharia de Software O que são Linguagens de Padrões? (Cont.) Cada padrão é uma seqüência dentro da linguagem de padrões O formato dos padrões formam um grafo Cada padrão produz um contexto para aqueles que o seguem Cada padrão deve construir sobre o contexto daqueles que vêm antes dele Existem muitos caminhos válidos dentro de uma linguagem de padrões Copyright © 2002-2007 Rossana Andrade Slide 43 CK119 – Engenharia de Software Um Exemplo de uma Linguagem de Padrões By C. Alexander Half-Hidden Garden Courtyards which live Garden growing wild Tree Places Entrance Transition Terraced Slope Fruit Tree Private Terrace on the Street Building Edge Copyright © 2002-2007 Rossana Andrade Slide 44 CK119 – Engenharia de Software Meios de Publicação Padrões necessitam de um meio nãolinear Publicação Web é o meio preferido Pode virar uma publicação linear se for bem indexada e com referência cruzada Cultura WikiWiki (http://c2.com/cgi/wiki) Copyright © 2002-2007 Rossana Andrade Slide 45 CK119 – Engenharia de Software Conferências PLoP www.hillside.net EuroPLoP™ 2002 Copyright © 2002-2007 Rossana Andrade CK119 – Engenharia de Software Próximos slides: Exemplos de Padrões Exemplos de Padrões Mais exemplos de linguagens de Padrões Classificação dos Padrões de Software Workshop de Escritores Copyright © 2002-2007 Rossana Andrade Slide 47 CK119 – Engenharia de Software Exemplos de Padrões Web Handlers Padrões de Interface Gráfica Copyright © 2002-2007 Rossana Andrade Slide 48 CK119 – Engenharia de Software Mais Exemplos de Linguagens de Padrões By DeBruler Generative Pattern Language for Distributed Processing – Estratégias para decompor sistemas de software complexos através de nós de processamento Copyright © 2002-2007 Rossana Andrade Slide 49 CK119 – Engenharia de Software Mais exemplos de Linguagens de Padrões (Cont.) Padrões – – – – – – – – – Define The Data Structure Identify The Nouns Factor Out Common Attributes Normalize the Roles Identify Problem Domain Relationships Introduce Virtual Attributes Animate the Data Time Thread Analysis Determine The Actors Copyright © 2002-2007 Rossana Andrade Slide 50 CK119 – Engenharia de Software Mais exemplos de Linguagens de Padrões (Cont.) By R. Andrade Roaming Outgoing Call Incoming Call Mobility Management Temporary Paging Identification Authentication Ciphering Location Registration Security Database Home and Visitor Databases Copyright © 2002-2007 Rossana Andrade Radio Resource Management Handoff Decision Inter-system Handoff Execution Handoff Failure Actions Releasing Resources Anchor Mobile Switching Center Slide 51 CK119 – Engenharia de Software Classificação dos Padrões de Software Padrões de Requisitos Padrões de Análise Padrões de Projeto – Meta-Patterns – Padrões Arquiteturais Idiomas Copyright © 2002-2007 Rossana Andrade Slide 52 CK119 – Engenharia de Software Classificação dos Padrões de Software (Cont.) Padrões Arquiteturais Padrões de Requisitos Padrões de Análise Meta-Padrões Idiomas Padrões de Projeto Requisitos Análise Copyright © 2002-2007 Rossana Andrade Projeto Implementação Slide 53 CK119 – Engenharia de Software Padrões de Requisitos Documentam as necessidades do usuário e o comportamento genérico do sistema em um alto nível de abstração Ações que os desenvolvedores de software podem tomar para melhorar os requisitos não-funcionais Mostram os relacionamentos entre o usuário ou o operador e o sistema Copyright © 2002-2007 Rossana Andrade Slide 54 CK119 – Engenharia de Software Padrões de Requisitos (Cont.) Fault-tolerant telecommunication patterns – Visa a manutenção dos sistemas de comutação – Medidas apropriadas para serem tomadas no estágio de desenvolvimento de requisitos • Padrões relacionados a confiabilidade (mensagens do sistema e falhas do sistema) – Five minutes of no escalation messages • Padrões relacionados aos fatores humanos Copyright © 2002-2007 Rossana Andrade Slide 55 CK119 – Engenharia de Software Padrões de Análise Inicialmente apresentados como complementos aos padrões de projeto Um passo antes do projeto – Modelo de análise que focaliza nas estruturas conceituais Padrões de análise do Martin Fowler – Domínio de conhecimento de software de negócios – Party, quantity, subtype state machines, entre outros Copyright © 2002-2007 Rossana Andrade Slide 56 CK119 – Engenharia de Software Padrões de Análise (Cont.) Party Problema: pessoas e organizações têm responsabilidades semelhantes Solução: Crie um tipo party como um supertype de uma pessoa ou organização Copyright © 2002-2007 Rossana Andrade Slide 57 CK119 – Engenharia de Software Padrões de Projeto Estrutura repetida de elementos de projeto “Um esquema para o refinamento de subsistemas ou de componentes de sistemas ou as relações entre eles.” “...resolvem um problema geral de projeto num contexto particular.”, GoF Padrões de projeto que incluem detalhes de código de baixo nível Aplicados a diferentes tipos de problemas Padrões Arquiteturais e Meta-Padrões podem ser considerados Padrões de Projeto. Copyright © 2002-2007 Rossana Andrade Slide 58 CK119 – Engenharia de Software Idiomas Relacionados com a implementação de características de projeto específicas Padrão de baixo nível específico para uma linguagem de programação – Idiomas em C++ • C++ Programming Styles and Idioms, James Coplien, 1991 Copyright © 2002-2007 Rossana Andrade Slide 59 CK119 – Engenharia de Software Idiomas (Cont.) Nome: Counted Body Contexto: A interface de uma classe é separada de sua implementação (respectivamente, classes handle e body) Problema: atribuição em C++ é definida recursivamente como membro-por-membro com cópia quando a recursão termina Solução: Um contador de referência é adicionado à classe body para facilitar o gerenciamento de memória Autor e data: James Coplien, 1994 Copyright © 2002-2007 Rossana Andrade Slide 60 CK119 – Engenharia de Software Parte IV: Reuso de Padrões A Comunidade de Padrões Ética de Padrões Reuso Meios de Publicação Workshop de Escritores Referências Em resumo ... (Conclusões) Copyright © 2002-2007 Rossana Andrade Slide 61 CK119 – Engenharia de Software Reuso Conheça os padrões estão disponíveis – Catálogo de padrões de 2000 – Escolha aquele que satisfaz as suas necessidades • Um padrão é difícil de entender se você não necessita dele • Apenas tenha uma visão geral Utilize o vocabulário dos padrões em revisões e sessões de projeto Copyright © 2002-2007 Rossana Andrade Slide 62 CK119 – Engenharia de Software Reuso (Cont.) GoF – Bastante utilizado entre a comunidade de software Core J2EE Pattern Catalog – http://java.sun.com/blueprints/corej2eepatterns/ Padrões Arquiteturais – Frank Bushmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal (Gang of Five) Copyright © 2002-2007 Rossana Andrade Slide 63 CK119 – Engenharia de Software GoF Design Patterns Behavioral Patterns Creational patterns Chain of Responsibility Abstract factory Builder Command Factory method Prototype Singleton Interpreter Structural patterns Iterator Adapter Mediator Bridge Memento Composite Observer Decorator State Facade Strategy Flyweight Template Method Proxy Visitor Copyright © 2002-2007 Rossana Andrade Slide 64 CK119 – Engenharia de Software Core J2EE Pattern Catalog Integration Tier Presentation Tier Data Access Object Intercepting Filter Front Controller View Helper Composite View Service to Worker Dispatcher View Service Activator Business Tier Business Delegate Service Locator Session facade Transfer Object Transfer Object Assembler Value List Handler Composite Entity Copyright © 2002-2007 Rossana Andrade Slide 65 CK119 – Engenharia de Software Architectural Patterns From Mud to Structure Adaptable Systems Layers Reflection Pipes and Filters Microkernel Blackboard Interactive Systems Distributed Systems Broker Pipes and Filters Microkernel Model-ViewController PresentationAbstractionControl Copyright © 2002-2007 Rossana Andrade Slide 66 CK119 – Engenharia de Software Aplicando Padrões Empresas – IBM, John Vlissides e Erich Gamma • Design Patterns – Lucent, Jim Coplien e Linda Rising • Organizational Patterns – Nortel, Greg Utas • Sistemas de Telefonia – Carleton University • Teaching Patterns Copyright © 2002-2007 Rossana Andrade Slide 67 CK119 – Engenharia de Software Mais sobre Reuso de Padrões SugarloafPLoP’2002 – Airline Computer Reservation Systems – Engenharia Reversa de Demeyer – Uma ferramenta para Reuso: AGAP – Análise do Reuso de Padrões Captura de Padrões Copyright © 2002-2007 Rossana Andrade Slide 68 CK119 – Engenharia de Software Referências [1] Andrade, R.M.C, “Capture, Reuse, and Validation of Requirements and Analysis Patterns for Mobile Systems”, Ph.D. Thesis, University of Ottawa, Ottawa, 2001. [2] Alexander, C., Ishikawa, S., Silverstein, M., Jacobson, M., FiksdahlKing, I., and Angel, S., A Pattern Language: Towns, Buildings, Construction, Oxford University Press, New York, NY, 1977. [3] Buschmann, F., Meunier, R., Rohnert, H., Sommerlad, P., Stal, M., Pattern-Oriented Software Architecture, John Wiley and Sons, New York, NY, 1996. [4] Coplien, J. O., Software Patterns, SIGS books and Multimedia, June 1996. [5] Fowler, M., Analysis Patterns: Reusable Object Models, AddisonWesley, Reading, MA, 1997. Copyright © 2002-2007 Rossana Andrade Slide 69 CK119 – Engenharia de Software Referências (Cont.) [6] Gamma E., Helm R., Johnson R., Vlissides J., “Design Patterns: Element of Reusable Object-Oriented Software”, 1995. [7] Pattern Languages of Program Design I, II, III & IV; Patterns from the PLoP Conference at Allerton Park in Illinois, US and EuroPLoP in Europe; Addison-Wesley, 1994-95-96-98. [8] Rising, Linda, “Patterns: A Way to Reuse Expertise,” IEEE Communications Magazine, Vol. 37, No. 4, April 1999. [9] Rising, Linda, The Pattern Almanac 2000, Software Pattern Series, Addison-Wesley, 2000. ISBN 0-201-61567-3. [10] Schmidt, D., “Tutorial about Design Patterns,” Available at http://www.cs.wustl.edu/~schmidt/patterns.html [11] Yoder, Joseph, Tutorial “Software Patterns”, SugarloafPLoP’2002, Itaipava, Rio de Janeiro, RJ. Copyright © 2002-2007 Rossana Andrade Slide 70 CK119 – Engenharia de Software Maiores Informações Página de Padrões do Grupo Hillside – http://hillside.net – Apontadores para listas, livros, arquivos ftp, padrões online, conferências, entre outros Listas – [email protected] – [email protected] – [email protected] Repositório de Padrões Portland – http://c2.com/ppr/index.html Copyright © 2002-2007 Rossana Andrade Slide 71 CK119 – Engenharia de Software Em resumo ... Arquitetos experientes não têm consciência que utilizam padrões – Bons para compartilhar informação e capturar conhecimento Padrões funcionam como uma porta para troca de experiências – Pode ajudar novos desenvolvedores a aprenderem com os mais experientes Vocabulário Comum Padrões dão uma competência arquitetural de organização Copyright © 2002-2007 Rossana Andrade Slide 72 CK119 – Engenharia de Software Em resumo ... (Cont.) Você deve escrever padrões para – Aprender mais sobre padrões – Compartilhar conhecimento • Provavelmente você usa alguma coisa que não foi documentada ainda – Tarefa difícil e nem todos tem tempo ou vontade Você deve reutilizar padrões – Em busca de uma melhoria no desenvolvimento de software Copyright © 2002-2007 Rossana Andrade Slide 73 CK119 – Engenharia de Software Por enquanto é só, Pessoal! Copyright © 2002-2007 Rossana Andrade Slide 74