27
Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio Pedro N.º 3805 Francisco Rocha N.º 3747 Docente Responsável: Dra. Isabel Brito

Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Embed Size (px)

Citation preview

Page 1: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Instituto Politécnico de BejaEscola Superior de Tecnologia e Gestão

Engenharia Informática – Engenharia de Software

Design Patterns

Cláudio Pedro N.º 3805

Francisco Rocha N.º 3747

Docente Responsável: Dra. Isabel Brito

Page 2: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 2

Histórico

A ideia de armazenar informação sobre patterns, observados num contexto, pode ser atribuída ao arquitecto Christopher Alexander e foi elaborada no contexto de arquitectura

“Um pattern descreve um problema que se repete várias vezes num determinado meio, e em seguida descreve o núcleo da sua solução, de modo que esta solução possa ser usada milhares e milhares de vezes.” (Alexander, 1978)

Page 3: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 3

Histórico (Cont.)

Em 1995, 4 autores – Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides – conhecidos como “The Gang of Four”, publicaram o primeiro catálogo de Design Patterns para programas orientados a objetos, com o título: Design Patterns: Elements of Reusable Object-Oriented Software

Page 4: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 4

Em que consistem?

Documentação de soluções genéricas e reutilizáveis, aplicáveis em problemas recorrentes

Descrição de soluções que funcionaram e se tornaram receitas para situações similares

Conjunto de classes e objectos relacionados que representam uma solução para um problema abstracto, e que serão particularizados em cada situação concreta

Page 5: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 5

Objectivos

Fornecer uma solução provada para problemas relacionados com o desenvolvimento de software Isolar a variabilidade que pode existir nos

requisitos do sistemaTornar o sistema mais fácil de entender e

manter

Page 6: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 6

Objectivos (Cont.)

Tornar a comunicação entre os designers de software mais eficientePermitir que os designers de software

visualizem imediatamente o projecto de alto nível nas suas mentes, quando eles sabem o nome do pattern utilizado para determinado problema

Aumentar a produtividade na fase de design e a qualidade do software produzido

Page 7: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 7

Características

Descrição

Classificação

Page 8: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 8

Características - Descrição

Nome e Classificação Identifica o pattern

PropósitoTipo de problema que o pattern trata

Outros nomesConjunto de outros nomes para o pattern

MotivaçãoUm cenário que ilustra o problema e como

o pattern o resolve

Page 9: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 9

Características - Descrição (Cont.)

AplicaçãoSituações em que este pattern pode ser

aplicadoEstrutura

Representação gráfica das classes do pattern

ParticipantesClasses que participam no pattern e

respectivas responsabilidades

Page 10: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 10

Características - Descrição (Cont.)

Colaborações Como os participantes interagem para cumprir as

suas responsabilidades

Consequências Resultados e efeitos causados pelo uso do pattern

Implementação Dicas e técnicas que o designer deve saber, e

possíveis armadilhas para as quais deve estar preparado

Page 11: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 11

Características - Descrição (Cont.)

Exemplo de códigoFragmentos de código que ilustram como o

pattern deve ser implementadoUsos conhecidos

Exemplos de utilização do pattern em sistemas já implementados

Patterns relacionadosPatterns fortemente relacionados com o

pattern em questão e príncipais diferenças

Page 12: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 12

Características – Classificação

Quanto ao seu propósito:Criacão

Descreve a melhor maneira de criar um objectoEstrutural

Diz respeito à composição de objectos e classesComportamental

Caracteriza o modo como classes e objectos interagem e compartilham responsabilidades

Page 13: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 13

Características – Classificação (Cont.)

Quanto ao escopo: Classes

Tratam do relacionamento entre classes e subclasses

Objectos Tratam relacionamentos entre objectos que podem ser

alterados em tempo de execução

Exemplo Um pattern estrutural de classes utiliza herança para

compor as classes, enquanto que um pattern estrutural de objectos descreve como estes devem ser agrupados

Page 14: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 14

Características – Classificação (Cont.)

Fig. 1 – “Os 23 design patterns clássicos organizados segundo a sua classificação”

Page 15: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 15

Design Patterns & Reutilização

Em que consiste a reutilização? “Utilização de produtos de software,

construídos ao longo do processo de desenvolvimento, numa situação diferente daquela para a qual foram originalmente produzidos.” (Freeman, 1980)

Objectivo da reutilizaçãoAumentar a qualidade e produtividade no

desenvolvimento de software

Page 16: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 16

Design Patterns & Reutilização (Cont.)

Reutilização foi provavelmente a grande motivação para o desenvolvimento de design patterns

É fulcral compreender os aspectos fundamentais que possibilitam a reutilização, para depois se poder propor um pattern específico de reutilização

Page 17: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 17

Design Patterns & Framework

Em que consiste um framework?Técnica de reutilização orientada a objectos

que compreende tanto design como código, com uma representação física em termos de classes, métodos e objectos

Objectivo de um frameworkDiminuir a quantidade de código necessária

para implementar aplicações similares

Page 18: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 18

Design Patterns & Framework (Cont.)

Design Patterns são soluções mais abstractas e genéricas do que as frameworks, que sendo mais específicas se relacionam sempre com apenas um domínio de aplicação

Design Patterns permitem a reutilização da arquitectura

Frameworks permitem a reutilização do código

Page 19: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 19

Design Patterns & Framework (Cont.)

Design Patterns possuem menores arquitecturas

Um framework pode conter em si vários patterns

Design Patterns descrevem como fazer um design, enquanto que um framework é o próprio design

Page 20: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 20

Exemplo

Desenvolvimento de um framework para cálculo de impostosExiste a necessidade de criar uma única

instância da classe Emissor, pois uma vez instanciada, poderá ser usada pelo resto da aplicação.

Deverá então ser utilizado o pattern Singleton na implementação do framework

Page 21: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 21

Exemplo (Cont.)

Nome e Classificação: Singleton Pattern de criação

Propósito: Garantir que uma classe só tenha uma única

instância e prever um ponto de acesso global a essa instância

Motivação Garantir que apenas um objecto exista,

independentemente do número de requisições que receber para criá-lo

Page 22: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 22

Exemplo (Cont.)

Estrutura:

Page 23: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 23

Exemplo (Cont.)

Consequências: Acesso controlado à instância única Espaço de nomes reduzido Permite refinamento de operações e representação Permite um número variável de instancias Mais flexível do que operações de classes

Implementação: Garantir a existência de uma única instância Criando subclasses da classe Singleton

Page 24: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 24

Exemplo (Cont.)

Fig. 2 – “Diagrama de classes da classe Emissor implementando o pattern Singleton”

Page 25: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 25

Relação com Engenharia de Software

Engenharia de Software estabelece e usa sólidos princípios de engenharia para que se possa obter economicamente um software que seja confiável e eficaz

Design Patterns são então uma ferramenta documental para a resolução de problemas durante a fase de design do software, compreendida na Engenharia de Software

Page 26: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns 26

Referências Bibliográficas

Formato convencional Gamma, Helm, Johnson, Vlissides – Design Patterns: Elements of

Reusable Object-Oriented Software, Addison-Wesley Publishing Company, 1995

Buschmann, Meunier, Rohnert, Sommerlad, Stal – Pattern-Oriented Software Architecture: A System of Patterns, J. Wiley and Sons Ltd., 1996

Formato digital http://www2.fundao.pro.br/articles.asp?cod=144 http://www.inf.furb.br/seminco/2004/artigos/105-vf.pdf http://www.ctp.di.fct.unl.pt/mei/dsoo/TEXTOS/Aula10.pdf http://www.inf.ucp.br/profs/tavares/2002_01/aulaDP-1.ppt http://www.inf.ucp.br/profs/tavares/2002_01/aulaFramework.ppt http://www.lia.ufc.br/~eti/menu/modulos/Pattern/aulaDesignPatternsI4pp.pdf http://www.psphome.hpg.ig.com.br/downloads/ENG_SOFTWARE_(Slides).ppt

Page 27: Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão Engenharia Informática – Engenharia de Software Design Patterns Cláudio PedroN.º 3805

Design Patterns

FIM