Padrões de Software Rossana Andrade

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements

Boas Práticas Adotadas em um Projeto de Design de Testes – Um relato de experiência
Java Básico Orientação a Objeto Marco Antonio Software Architect Fev/2008.
Engenharia de Software
Projeto conceitual Mostra ao cliente exatamente o que o sistema fará
Engenharia de Software
Engenharia de Software
Centrado na arquitetura
Design Patterns Builder Pattern
Projeto de Sistemas de Software
Cartões CRC (Class Responsibility Card)
CK 119: Engenharia de Software DC/CC/UFC © Rossana Andrade, Setembro CK119: Engenharia de Software Rossana Andrade Ph.D, SITE, University of Ottawa,
1 Introdução aos padrões de projeto (GoF) Conceitos preliminares –Mecanismos de herança –Princípio de Substituição de Liskov –Acoplamento concreto x Acoplamento.
Chain of Responsibility
Análise Estruturada O mais amplamente usado dos métodos de modelagem de requisitos Modelos que retratam fluxo e o conteúdo da informação (dados e controle)
Análise e Projeto de Sistemas
Padrões - introdução O que é um padrão?
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
A implementação de avaliação formativa na sala de aula
Padrões de Interação Homem- Máquina (HCI Patterns) Priscila de Castro Nicola Novembro 2004.
Fundamentos da Engenharia de Software
Arquitetura de software
Visão crítica sobre padrões: Over Engineering
Treinamento do Microsoft® Access® 2010
Análise e Projeto de Sistemas
Modelagem de Negócio no RUP
Projetos digitais colaborativos Empresa 2.0 Gestão do conhecimento funciona?
Rodrigo Cândido da Silva Instrutor VOffice / Globalcode
Padrões de Projeto These slides complement the E-book, Programming in the Large With Design Patterns available on both Kindle and Nook. Additional supporting.
Documentação de Software
Dicas para Apresentações
Design Pattern (Padrões de Projeto)
O Processo Unificado (UP)
Engenharia de Software
RUP - Cap. 4 – Processo Centrado na Arquitetura
Introdução Padrões de Projeto
Laboratório de Programação
RUP - Cap. 3 – Processo Dirigido por Caso de Uso
Padrões de Interação com o Usuário
April 05 Prof. Ismael H. F. Santos - 1 Módulo I Princípios e Padrões de Projeto de SW em Java Professores Eduardo Bezerra –
Requisitos de Software
Modelando Sistemas em UML
Fluxos secundários Só devem ser analisados e descritos após a descrição dos fluxos básicos. Fluxos alternativos situações especiais (desconto para um cliente)
Padrões de Design Toacy Cavalcante de Oliveira. 2 April 20, 2015 Problema.
April 05 Prof. Ismael H. F. Santos - 1 Modulo I Princípios e Padrões de Projeto de SW em Java Professores Eduardo Bezerra –
Engenharia de Software
CK119 – Engenharia de Software Copyright © Rossana AndradeSlide 1 Padrões de Software Rossana Andrade Departamento de Computação.
Padrões de Projeto de Software Orientado a Objetos
Padrões de projeto M.Sc. Sílvio Bacalá Jr..
1 Design Patterns Israel Rios. 2 Origens A idéia de padrões de projeto não teve origem na ciência da computação Christopher Alexander A Pattern Language:
Objetos Distribuídos Frameworks Orientados a Objetos.
Desenvolvimento Global de Software
CURSO DE ESPECIALIZAÇÃO EM TECNOLOGIA JAVA DESIGN PATTERNS PARTE 1: INTRODUÇÃO Prof. Cesar Augusto Tacla UTFPR/Campus.
1 - Introdução a Padrões de Projeto
Profa. Reane Franco Goulart. É uma representação de engenharia de algo que vai ser construído. Para a engenharia de software o projeto foca em quatro.
Módulo II Capítulo 1: Orientação a Objetos
Padrões de Projetos Orientados a Objetos I Wolley W. Silva.
PADROES DE PROJETO PROF. OSIEL MARLON. PADRÕES DE PROJETO INTRODUÇÃO Padrões de projeto têm emergido como uma das mais promissoras abordagens para a melhoria.
Engenharia de Requisitos Prof. Fábio Botelho, MSc Redes e Sistemas Distribuídos Recife, Agosto de 2012.
IF 718 Análise e Projeto de Sistemas Augusto Sampaio Vitor Braga (Estágio docência) Camila Sá (Monitora) Parte do material cedido pela Qualiti Software.
Padrões de Projeto. O que são?  Soluções provenientes de diversos projetos e utilizados por diversos programadores;  Documentados em catálogos como.
1 Especificação de Sistemas de Software e a UML. 2 Modelagem de sistema A modelagem de sistema auxilia o analista a entender a funcionalidade do sistema.
Padrões de Projeto de Criação Padrões de Projeto Orientados a Objetos Prof a. Danielle Martin Universidade de Mogi das Cruzes.
Jadson Xavier Muller Oliveira.  É difícil encontrar alguma definição consensual de padrão.  Definição aceitável: - São idéias que foram úteis em algum.
1 Padrões de Projeto de Software Orientado a Objetos Programação Orientada a Objetos Prof. Fabio Kon - IME/USP.
1 Introdução aos Padrões de Projetos Créditos: Prof. Fabio Kon - IME/USP Adaptações: Prof. Nécio de Lima Veras.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
Programação Orienta a Objetos (SI) Análise e Projetos de Sistemas (LCC) 1 - Introdução a Padrões de Projeto Eduardo de Lucena Falcão.
Introdução a Padrões de Projeto Padrões de Projeto Orientado a Objetos Profa. Danielle Martin Universidade de Mogi das Cruzes.
Padrões de Projeto.
Transcrição da apresentação:

Padrões de Software Rossana Andrade rossana@lia.ufc.br Departamento de Computação Universidade Federal do Ceará Copyright © 2002-2003 Rossana Andrade

Objetivos Gerais Oferecer uma visão geral sobre os conceitos de padrões de software Explicar a terminologia Estimular a escrita de padrões 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-2003 Rossana Andrade

Parte I - Padrões de Software 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-2003 Rossana Andrade

O que são Padrões O que é? Como? 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-2003 Rossana Andrade

O que é um Padrão (Cont.) Aplicação Arquitetura Ciência da Computação Engenharia de software Engenharia Mecânica Telecomunicações ... Copyright © 2002-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

Diferentes Definições (Cont.) “Um padrão é uma solução provada para um problema em um contexto, ” Comunidade de Software Copyright © 2002-2003 Rossana Andrade

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-2003 Rossana Andrade

Um Pouco da História Peter Coad The Hillside Group 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-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

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 procurador-por-solução observa Um entendimento do problema vem da análise das forças Copyright © 2002-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

Hands in View (Cont.) Problema Forças 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-2003 Rossana Andrade

Hands in View (Cont.) Solução Contexto resultante 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-2003 Rossana Andrade

Hands in View (Cont.) Motivação Autor Origem 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-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

Formato da Gang of Four – GoF (Cont.) Estrutura Participantes Colaborações Conseqüências forças Implementação Código Exemplo Usos Conhecidos Padrões relacionados Solução Estrutura, participantes e colaborações: solução Implementação e código exemplo: solução Exemplos: composite, strategy, decorators and prototype Solução Copyright © 2002-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

Parte II: Como Escrever um Padrão O Processo de Escrita Padrões Padrões trabalhando em Conjunto O que são Linguagens de Padrões Exemplos de Linguagens de Padrões Artigo do Gerard Meszaros e do Jim Doble “A Pattern Language for Pattern Writing” Copyright © 2002-2003 Rossana Andrade

Próximos Slides O Processo de Escrita de Padrões Características de um bom Padrão Um Exemplo de um bom Padrão Padrões bem Escritos O que não é um Padrão Exemplo Dicas Padrões trabalhando em conjunto O que são Linguagem de Padrões Um exemplo Guia para Escrita de Padrões Sete Hábitos para Escritores Efetivos de Padrões Mais Dicas para Escrever Padrões Copyright © 2002-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

Um Exemplo de um bom Padrão (Cont.) Solução (Cont.) Defina o protocolo entre os dois objetos-metade 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 Ex. de uso deste padrão: FTP Autor: Gerard Meszaros The two half-objects (client and server) will communicate using a private protocol that is unknown to the rest of the application. Divide an object which needs to be accessed from more than one address space into two interdependent half-objects (one in each address space) with a protocol between them. In each address space, implement whatever functionality is required to interact efficiently with the other objects in that address space. (This may result in duplicated functionality, i.e., implemented in both address spaces.) Define the protocol between the two half-objects so that it co-ordinates the activities of the two half-objects and carries the essential information that needs to be passed between the address spaces. Copyright © 2002-2003 Rossana Andrade

Um Exemplo de um bom Padrão (Cont.) Sketch Diagrama UML para uma aplicação de FTP Copyright © 2002-2003 Rossana Andrade

Um Exemplo de um bom Padrão (Cont.) Sketch To change this to a client/server system, the FTP object needs to be split in two: one half in the client address space, the other half in the server address space. The two half-objects will communicate using a private protocol that is unknown to the rest of the application. The private protocol will here be "message passing using sockets". Other implementations may use CORBA, RMI, JXTA, etc. This allows the implementation of the HOPP objects to be changed without affecting the rest of the application Diagrama FTP com a aplicação do HOPP Copyright © 2002-2003 Rossana Andrade

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-2003 Rossana Andrade

Padrões bem Escritos Pequenos Contam uma história Um processo e uma coisa Levam em consideração a estética Têm um elemento humano explícito Uma sentença em uma linguagem de padrões Copyright © 2002-2003 Rossana Andrade

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-2003 Rossana Andrade

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 Não caem em causa e efeito Copyright © 2002-2003 Rossana Andrade

Grande Círculo Copyright © 2002-2003 Rossana Andrade

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-2003 Rossana Andrade

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 Alguns padrões são alternativos, alguns têm contexto semelhante Um padrão leva a outro Você pode documentar um sistema pela seqüência de padrões de projeto, representando a seqüência de decisões que você toma. Copyright © 2002-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

Guia para Escrita de Padrões Decisão De colocar no papel um problema recorrente e sua respectiva solução em um determinado domínio Captura Do problema e da solução dentro do domínio Busca Entre padrões existentes para determinar se o padrão é novo ou pode ser uma melhoria de um padrão existente Escrita De um novo padrão ou re-escrita de um padrão já existente Copyright © 2002-2003 Rossana Andrade

Guia para Escrita de Padrões (Cont.) Sete Hábitos para Escritores Efetivos de Padrões Hábito 1: Deixe um tempo para refletir Hábito 2: Escolha uma estrutura/formato Hábito 3: Seja concreto desde cedo Hábito 4: Tente escrever padrões distintos e complementares Hábito 5: Apresente os padrões efetivamente Hábito 6: Prossiga em uma iteração incansável Hábito 7: Colecione e Incorpore Feedback Copyright © 2002-2003 Rossana Andrade

Decisão e Captura Alternativa 1: Hábitos 1 e 3 Como específicos problemas foram resolvidos durante a construção de um sistema O projetista deve gravar essas experiências e o modo como as resolveu O projetista deve investigar como outros sistemas semelhantes foram construídos por outros projetistas O projetista deve tentar encontrar pelo menos 2 exemplos dos mesmos problemas e soluções antes de tentar escrever o padrão Copyright © 2002-2003 Rossana Andrade

Decisão e Captura (Cont.) Alternativa 2 Investigação de problemas de projeto em sistemas de um domínio específico que não foram desenvolvidos pelo escritor de padrões Procedimento de captura Regra de 3 dos usos conhecidos Copyright © 2002-2003 Rossana Andrade

Busca Exaustiva em uma grande quantidade de padrões já disponíveis eletronicamente e/ou em livros The Pattern Almanac 2000 Padrões relacionados se o padrão é novo Modificação em padrão existente Antes o escritor de padrões deve saber a razão para reescrevê-lo e o que deve ser alterado Copyright © 2002-2003 Rossana Andrade

Escrita e Reescrita de padrões Uma linguagem de padrões para a escrita de padrões Estabelecendo o Contexto Estrutura do Padrão Legibilidade Estrutura da Linguagem de Padrão Copyright © 2002-2003 Rossana Andrade

Uma Linguagem de Padrões para Escrever Padrões Copyright © 2002-2003 Rossana Andrade

Estalecendo o Contexto: Padrões Estrutura Hábito 2 Componentes essenciais e opcionais Descrição dos itens do template escolhido Forças Visíveis Nome Nome composto Metáfora significativa Nome evocativo Padrões relacionados Código exemplo Copyright © 2002-2003 Rossana Andrade

Estalecendo o Contexto: Padrões (Cont.) Legibilidade Tornando os padrões fáceis de entender Hábito 5 Apresentando o padrão efetivamente Hábito 6 Iteração “eterna” Hábito 7 Coleta e incorporação de feedback Copyright © 2002-2003 Rossana Andrade

Estrutura da Linguagem de Padrões Problemas comuns entre os padrões devem ser destacados Exemplos executáveis Resumo problema/solução Hábito 4 Padrões distintos e complementares Copyright © 2002-2003 Rossana Andrade

Mais Dicas para Escrever Padrões Adote um formato conhecido Procedimentos de escrita variam de acordo com o formato escolhido Inicie com os componentes essenciais, por exemplo: Forças Solução Conexões com outros padrões no contexto e no contexto resultante Considere sempre o seu leitor Copyright © 2002-2003 Rossana Andrade

Mais Dicas para Escrever Padrões (Cont.) Desenvolva seus próprios rituais e procedimentos Cite todas as fontes Dê créditos ao criador, aos editores, ao primeiro que escreveu alguma coisa a respeito Construa sobre outros padrões onde for possível e cite as fontes Copyright © 2002-2003 Rossana Andrade

Meios de Publicação Padrões necessitam de um meio não-linear 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-2003 Rossana Andrade

Conferências PLoP www.hillside.net                                                                  EuroPLoP™ 2002                                       Copyright © 2002-2003 Rossana Andrade

Workshop de Escritores Excelente modo de conseguir um feedback sobre um padrão Grupo deve ler o artigo antes Autor permanece em silêncio enquanto os outros discutem o padrão Grupo faz de conta que o autor não está lá Moderador assegura que a discussão é positiva Copyright © 2002-2003 Rossana Andrade

Workshop de Escritores (Cont.) Cada membro do grupo Diz o que gosta antes do que não gosta Discute tanto a forma quanto o conteúdo Seqüência Boas vindas ao autor Autor lê uma seleção Sumário Feedback positivo primeiro Sugestões para melhoria Fechamento positivo Autor pede esclarecimentos Agradecimentos ao autor Copyright © 2002-2003 Rossana Andrade

Exercício: escrita de um padrão Escrever um padrão Sugestões Organização de Conferências Processo de software Um arquiteto (engenheiro de software) também implementa Como criar clientes em um modelo cliente/servidor Organização e Processo Desenvolvimento de Site Web Segurança Copyright © 2002-2003 Rossana Andrade

Discussão Cada grupo tem que ter um nome Cada grupo elege um líder para explicar o padrão Outros grupos discutem o padrão Copyright © 2002-2003 Rossana Andrade

Parte III: Exemplos de Padrões Mais exemplos de linguagens de Padrões Classificação dos Padrões de Software Workshop de Escritores Copyright © 2002-2003 Rossana Andrade

Exemplos de Padrões Web Handlers Padrões de Interface Gráfica Copyright © 2002-2003 Rossana Andrade

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-2003 Rossana Andrade

Mais exemplos de Linguagens de Padrões (Cont.) 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-2003 Rossana Andrade

Mais exemplos de Linguagens de Padrões (Cont.) By R. Andrade Inter-system Handoff Execution Failure Actions Radio Resource Management Anchor Mobile Switching Center Releasing Resources Decision Authentication Location Registration Mobility Management Home and Visitor Databases Temporary Identification Ciphering Security Database Paging Outgoing Call Incoming Call Roaming This is a conventional way to represent the pattern language with all the patterns and relationships among them. The resulting context of the previous pattern in a sequence is the context of the previous one. Copyright © 2002-2003 Rossana Andrade

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-2003 Rossana Andrade

Classificação dos Padrões de Software (Cont.) Arquiteturais Padrões de Requisitos Padrões de Análise Meta-Padrões Idiomas Padrões de Projeto Requisitos Análise Projeto Implementação Copyright © 2002-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

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. Mencionar os diferentes projetos do IA, onde os padrões do GoF são utilizados Copyright © 2002-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

A Comunidade de Padrões Uma hierarquia de workshops de escritores Grupos de leitura local Grupo Hillside Livros com os artigos da conferência Conferências PLoP ao redor do mundo Copyright © 2002-2003 Rossana Andrade

Ética de Padrões Regra de Buschmann: nunca capture suas próprias idéias em um padrão Não pense que padrões resolvem tudo Tente sempre encorajar as pessoas a repassar os conhecimentos Sempre reconheça aqueles que criaram as técnicas ou que primeiro se empenharam a escrever sobre elas Não fique tão excitado! Padrões são apenas mais uma técnica para ajudá-lo no desenvolvimento de software Copyright © 2002-2003 Rossana Andrade

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-2003 Rossana Andrade

Reuso (Cont.) GoF Core J2EE Pattern Catalog Padrões Arquiteturais 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) 15 padrões divididos em 3 categorias: presentation tier (layer or level), business tier, integration tier em como utilizar a tecnologia Java ou melhor dizendo a plataforma da Java da Sun, J2EE Don't get me wrong: the JavaTM 2 Platform, Enterprise Edition (J2EE) is certainly an important platform, enabling teams to build some very powerful systems. However, reality is, there is still a wide semantic gap between the abstractions and services that J2EE provides and the final application that a team must build. Patterns such as specified in this book represent solutions that appear again and again in filling that gap. By applying these patterns, you thus carry out the primary means of reducing software risk: you write less software. Rather than discovering these solutions on your own, apply these patterns, which have already proven their utility in existing systems. Copyright © 2002-2003 Rossana Andrade

GoF Design Patterns Creational patterns Behavioral Patterns Abstract factory Builder Factory method Prototype Singleton Behavioral Patterns Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor Structural patterns Adapter Bridge Composite Decorator Facade Flyweight Proxy Book has 23 patterns, divided into three categories. Categories are arbitrary. They work well for our 23 patterns. Won’t work for others, but they make it easier to remember the patterns. Number says the day that we will discribe the patterns. So, we will look at all the patterns, some of them several times. If you want to study some patterns tonight, it would be best to look at the ones that will be used several times. Copyright © 2002-2003 Rossana Andrade

Core J2EE Pattern Catalog Integration Tier Data Access Object Service Activator Presentation Tier Intercepting Filter Front Controller View Helper Composite View Service to Worker Dispatcher View Business Tier Business Delegate Service Locator Session facade Transfer Object Transfer Object Assembler Value List Handler Composite Entity Book has 23 patterns, divided into three categories. Categories are arbitrary. They work well for our 23 patterns. Won’t work for others, but they make it easier to remember the patterns. Number says the day that we will discribe the patterns. So, we will look at all the patterns, some of them several times. If you want to study some patterns tonight, it would be best to look at the ones that will be used several times. Copyright © 2002-2003 Rossana Andrade

Architectural Patterns From Mud to Structure Layers Pipes and Filters Blackboard Adaptable Systems Reflection Microkernel Interactive Systems Model-View-Controller Presentation-Abstraction-Control Distributed Systems Broker Pipes and Filters Microkernel Book has 23 patterns, divided into three categories. Categories are arbitrary. They work well for our 23 patterns. Won’t work for others, but they make it easier to remember the patterns. Number says the day that we will discribe the patterns. So, we will look at all the patterns, some of them several times. If you want to study some patterns tonight, it would be best to look at the ones that will be used several times. Copyright © 2002-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

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., Fiksdahl-King, 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, Addison-Wesley, Reading, MA, 1997. Copyright © 2002-2003 Rossana Andrade

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-2003 Rossana Andrade

Maiores Informações Página de Padrões do Grupo Hillside Listas http://hillside.net Apontadores para listas, livros, arquivos ftp, padrões on-line, conferências, entre outros Listas Gang-of-4-patterns-request@cs.uiuc.edu Patterns-request@cs.uiuc.edu Patterns-discussion-request@cs.uiuc.edu Repositório de Padrões Portland http://c2.com/ppr/index.html Copyright © 2002-2003 Rossana Andrade

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-2003 Rossana Andrade

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-2003 Rossana Andrade

Por enquanto é só, Pessoal! Copyright © 2002-2003 Rossana Andrade