Padrões de Software - disciplinas.lia.ufc.br · do estado de ficar timidamente para trás e...

19
CK119 – Engenharia de Software Copyright © 2002-2008 Rossana M. C. Andrade Slide 1 Padrões de Software Rossana M. C. Andrade [email protected] Departamento de Computação Universidade Federal do Ceará CK119 – Engenharia de Software Copyright © 2002-2007 Rossana Andrade Slide 2 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 CK119 – Engenharia de Software Copyright © 2002-2007 Rossana Andrade Slide 3 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 CK119 – Engenharia de Software Copyright © 2002-2007 Rossana Andrade Slide 4 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

Transcript of Padrões de Software - disciplinas.lia.ufc.br · do estado de ficar timidamente para trás e...

CK119 – Engenharia de Software

Copyright © 2002-2008 Rossana M. C. Andrade Slide 1

Padrões de Software

Rossana M. C. [email protected]

Departamento de ComputaçãoUniversidade Federal do Ceará

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 2

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 3

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 4

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 5

O que é um Padrão (Cont.)

� Aplicação– Arquitetura– Ciência da Computação

• Engenharia de software

– Engenharia Mecânica– Telecomunicações– ...

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 6

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 7

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 8

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 9

Diferentes Definições (Cont.)

� “Um padrão é uma solução provada para um problema em um contexto, ” Comunidade de Software

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 10

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)

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 11

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 12

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 13

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 14

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)

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 15

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 16

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 17

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 18

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 19

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 20

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 21

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 22

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 23

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 24

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.

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 25

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 26

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 27

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

Solução

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 28

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 29

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 30

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 31

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)

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 32

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 33

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)

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 34

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 35

Um Exemplo de um bom Padrão (Cont.)

Diagrama UML para uma aplicação de FTP

Sketch

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 36

Um Exemplo de um bom Padrão (Cont.)

Diagrama FTP com a aplicação do HOPP

Sketch

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 37

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 38

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 39

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 40

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 41

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 42

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”

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 43

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 44

Um Exemplo de uma Linguagem de Padrões

Half-Hidden Garden

Garden growing wild Courtyards which live

Entrance TransitionTree Places

Terraced Slope

Fruit Tree

Building Edge

Private Terrace on

the Street

By C. Alexander

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 45

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)

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade

Conferências PLoP www.hillside.net

EuroPLoP™ 2002EuroPLoP™ 2002

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 47

Próximos slides

� Mais exemplos de linguagens de Padrões

� Classificação dos Padrões de Software� Workshop de Escritores

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 48

Mais Exemplos de Linguagens de Padrões

� Generative Pattern Language for

Distributed Processing

– Estratégias para decompor sistemas de software complexos através de nós de processamento

By DeBruler

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 49

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 50

Mais exemplos de Linguagens de Padrões (Cont.)

Inter-systemHandoff

Execution HandoffFailureActions

Radio Resource

Management

AnchorMobile

Switching Center

ReleasingResources

HandoffDecision

Authentication

LocationRegistration

Mobility Management

Home andVisitor

Databases

TemporaryIdentification

Ciphering

SecurityDatabase

Paging

Outgoing Call Incoming CallRoamingBy R. Andrade

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 51

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� Outros tipos: padrões de processo, padrões de

testes, anti-padrões

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 52

Classificação dos Padrões de Software (Cont.)

Requisitos Análise Projeto Implementação

Padrões de Requisitos

Padrões de Análise

Padrões de Projeto

Meta-Padrões

Padrões Arquiteturais

Idiomas

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 53

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 54

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 55

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 56

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 57

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.

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 58

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 59

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 60

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)

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 61

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 62

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)

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 63

GoF Design PatternsCreational 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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 64

Core J2EE Pattern Catalog

Presentation Tier

Intercepting Filter

Front Controller

View Helper

Composite View

Service to Worker

Dispatcher View

Integration Tier

Data Access Object

Service Activator

Business Tier

Business Delegate

Service Locator

Session facade

Transfer Object

Transfer Object Assembler

Value List Handler

Composite Entity

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 65

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 66

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 67

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 68

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.

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 69

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.

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 70

Maiores Informações� Página de Padrões do Grupo Hillside

– http://hillside.net– Apontadores para listas, livros, arquivos ftp, padrões on-

line, conferências, entre outros

� Listas– [email protected][email protected][email protected]

� Repositório de Padrões Portland– http://c2.com/ppr/index.html

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 71

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 72

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

CK119 – Engenharia de Software

Copyright © 2002-2007 Rossana Andrade Slide 73

Por enquanto é só, Pessoal!