design pattern e a reusabilidade de software

33
Introdu¸c˜ ao Funcamenta¸c˜ aoTe´orica Design Patterns Aplica¸c˜ ao Pr´ atica Conclus˜ ao Referˆ encias Design Pattern e a Reusabilidade de Software Trabalho de Conclus˜ ao de Curso Klevison de Barros Matias Jos´ e Ten´orio C. Costa Ciˆ encia da Computa¸ ao Faculdade Alagoana de Administra¸ ao Setembro de 2009 1 / 27

Upload: phpal

Post on 18-Dec-2014

2.109 views

Category:

Technology


0 download

DESCRIPTION

A crescente necessidade do mercado de obter produtos e serviços cada vez mais competitivos, traz consigo a necessidade de se buscar excelência em um determinado produto final. Na área dos sistemas de software não é diferente. Quando conceitos como padronização e reusabilidade são encorajados visando a qualidade (na criação) e agilidade (na manuteção) de um determinado produto de software, é pretendível que seja dada uma amplitude maior em soluções técnicas baseadas no conceito de “boas práticas” de desenvolvimento. Padrões de projeto, ou design patterns, visam resolver soluções em contextos diferentes sem que essa solução precise ser reescrita para ser implementada. Quando design patterns são implementados, desenvolvedores mais experientes já implementaram, testaram e catalogaram uma determinada solução para que a mesma possa ser usada em contextos diferentes. Este trabalho apresenta o conceito de desing patterns e reusabilidade, bem como conceitos preliminares como orientação a objetos. Também será abordado um estudo de caso, onde foram implementados alguns padrões de projeto na linguagem PHP5.

TRANSCRIPT

Page 1: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Design Pattern e a Reusabilidade de Software

Trabalho de Conclusao de Curso

Klevison de Barros Matias Jose Tenorio C. Costa

Ciencia da Computacao

Faculdade Alagoana de Administracao

Setembro de 2009

1 / 27

Page 2: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Introducao aos Padroes de ProjetoContextoAdvento

Conteudo

1 IntroducaoIntroducao aos Padroes de ProjetoContextoAdvento

2 Funcamentacao TeoricaOrientacao a ObjetosReusabilidade de Software

3 Design PatternsIntroducaoConceitoMotivacao

4 Aplicacao PraticaPatterns

5 ConclusaoConclusoes Finais 2 / 27

Page 3: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Introducao aos Padroes de ProjetoContextoAdvento

Tema

O presente trabalho visa abordar os principais conceitos relativos areusabilidade e Padroes de Projeto de Software, os quais descrevempossıveis solucoes de problemas comuns encontrados em projetosorientados a objetos (Meyer, 1997).

3 / 27

Page 4: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Introducao aos Padroes de ProjetoContextoAdvento

Reusabilidade

A complexidade de desenvolvimento de software e cada vez maiscrescente e o processo de desenvolvimento e ainda muito baseadoem empirismo e sujeito a erros (Gerber, 1999). Para diminuir essacomplexidade, o conceito de padronizacao surgiu para atender areutilizacao (no que tange a produtividade).

4 / 27

Page 5: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Introducao aos Padroes de ProjetoContextoAdvento

Design Patterns

Ao se padronizar todo esse processo de desenvolvimento,permite-se que:

conceitos adotados e desenvolvidos por programadores maisexperientes sejam transmitidos de forma clara para osprogramadores novos no projeto ou inexperientes;

haja facilidade na comunicacao entre a equipe dedesenvolvimento.

5 / 27

Page 6: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Introducao aos Padroes de ProjetoContextoAdvento

Conceito de Patterns

Todo o conceito de Padroes de Projeto foi criado pelo engenheirocivil Cristopher Alexander. Em A Pattern Language: Towns,

Buildings, Constructions, Alexander afirmou

Um pattern descreve um problema que ocorre com

frequencia em nosso ambiente, e entao explica a essencia

da solucao para este problema, de forma que tal solucao

possa ser utilizada milhoes de outras vezes, sem ao

menos repeti-la uma unica vez.

6 / 27

Page 7: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Introducao aos Padroes de ProjetoContextoAdvento

Conceito de Patterns

Ao dizer isto Cristopher estava se referindo a padroes paraconstrucoes, como predios, pontes, dentre outros. Apesar disso,essas palavras podem ser perfeitamente utilizadas no contexto deengenharia de software (Oglio, 2007).

7 / 27

Page 8: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Orientacao a ObjetosReusabilidade de Software

Conteudo

1 IntroducaoIntroducao aos Padroes de ProjetoContextoAdvento

2 Funcamentacao TeoricaOrientacao a ObjetosReusabilidade de Software

3 Design PatternsIntroducaoConceitoMotivacao

4 Aplicacao PraticaPatterns

5 ConclusaoConclusoes Finais 8 / 27

Page 9: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Orientacao a ObjetosReusabilidade de Software

Entender sistemas orientado a objetos e a arte de combinar oconcreto (objetos e suas interacoes) com o abstrato (classes e seusrelacionamentos) (Lange & Nakamura, 1995).O concreto descreveo que o nos podemos ver de uma execucao do sistema e o abstratodescreve o que nos podemos esperar de um sistema.

9 / 27

Page 10: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Orientacao a ObjetosReusabilidade de Software

Introducao

Com a evolucao de conceitos como orientacao a objetos osprojetistas mais experientes perceberam que determinadassolucoes de projeto poderiam ser aplicadas em diferentescasos, logo, eles reusaram essas solucoes.

A reusabilidade nao e obtida pelo simples fato dedesenvolvermos softwares orientados a objetos.

Segundo Gamma et al. (1995) projetar software orientados aobjeto e difıcil, mas projetar software reutilizavel orientado aobjetos e ainda mais complicado.

10 / 27

Page 11: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Orientacao a ObjetosReusabilidade de Software

Objetivo

A reusabilidade pode ser considerada algo que ira prover“informacoes ou servicos” de programas que podem serusados em multiplas aplicacoes, tornando-se respostaimportante aos problemas de produtividade de software.

Padroes de projeto devem ajudar a melhorar a reusabilidade.

Aumentar a reusabilidade de software e considerada comopre-condicao tecnica crucial para melhorar a qualidade geraldo software e reduzir os custos de manutencao eproducao (Pree, 1995).

11 / 27

Page 12: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Orientacao a ObjetosReusabilidade de Software

Motivacao

A reutilizacao de software se torna uma barreira para muitosprogramadores, pois em muitos casos os benefıcios saopercebidos a longo prazo fazendo com que a equipe fiquedesmotivada em desenvolver solucoes reutilizaveis quando, emgeral, a linha de tempo para o desenvolvimento de umsoftware e curta. Existe tambem a barreira tecnica, poismuitos programadores podem nao entender o que reusar oucomo reusar.

Para se criar um projeto de software (padronizado) onde sejustifique o uso das melhores praticas faz-se necessario umconhecimento acurado de orientacao a objetos e design

patterns como tambem motivacao e visao, a longo prazo, daequipe.

12 / 27

Page 13: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

IntroducaoConceitoMotivacao

Conteudo

1 IntroducaoIntroducao aos Padroes de ProjetoContextoAdvento

2 Funcamentacao TeoricaOrientacao a ObjetosReusabilidade de Software

3 Design PatternsIntroducaoConceitoMotivacao

4 Aplicacao PraticaPatterns

5 ConclusaoConclusoes Finais 13 / 27

Page 14: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

IntroducaoConceitoMotivacao

Introducao

Design patterns vem ganhando grande aceitacao como umaferramenta para modelagem orientada a objetos (Agostini etal., 2007), pois existem problemas de software que, emboraestejam situados em contextos diferentes, podem sersolucionados de maneiras semelhantes.

Fazendo com que problemas antigos, que ja foram vivenciadospelos programadores mais experientes, serao catalogados epadronizados para evitar futuros problemas.

Para Agostini et al. (2007), os patterns sao estruturas classeque foram usadas por muitos anos e foram estabelecidos comosolucoes eficientes para muitos problemas.

14 / 27

Page 15: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

IntroducaoConceitoMotivacao

Origem

Percebendo que todas as construcoes de edifıcios possuıamalgumas caracterısticas em comum, o engenheiro civilCristopher Alexander resolveu catalogar estas solucoes em seulivro The Timeless Way of Building.

Na area de engenharia de software essas praticas foramadaptadas para a construcao de sistemas de informacao.

Liderada por Erich Gamma a GoF (Gang of Four) - ErichGamma, Richard Helm, Ralph Johnson e John Vlissidespublicaram o livro Design Patterns: Elements of Reusable

Object-Oriented Software. O livro continha a descricao de 23padroes para problemas que eram comumente encontradosdurante o desenvolvimento de software.

15 / 27

Page 16: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

IntroducaoConceitoMotivacao

Conceito

Um padrao pode ser definido como sendo um esboco, em vezda implementacao especıfica, ou seja, um modelo a serseguido durante a construcao do software (Coad et al., 1995).

As melhores praticas de projetos antigos sao executadasvisando que o esforco para evitar retrabalho seja mınimo.

Com essas experiencias ja testadas e comprovadamente ideais,tem-se um vocabulario comum que permitira uma melhorcomunicacao entre a equipe.

Design Patterns sao metodologias de construcao de softwarecomprovadamente funcionais que garantem legibilidade,manutenabilidade e reutilizacao de codigo-fonte nodesenvolvimento de alguma aplicacao computacional(Daniel Welfer, 2005).

16 / 27

Page 17: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

IntroducaoConceitoMotivacao

Conceito

Um padrao pode ser definido como sendo um esboco, em vezda implementacao especıfica, ou seja, um modelo a serseguido durante a construcao do software (Coad et al., 1995).

As melhores praticas de projetos antigos sao executadasvisando que o esforco para evitar retrabalho seja mınimo.

Com essas experiencias ja testadas e comprovadamente ideais,tem-se um vocabulario comum que permitira uma melhorcomunicacao entre a equipe.

Design Patterns sao metodologias de construcao de softwarecomprovadamente funcionais que garantem legibilidade,manutenabilidade e reutilizacao de codigo-fonte nodesenvolvimento de alguma aplicacao computacional(Daniel Welfer, 2005).

16 / 27

Page 18: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

IntroducaoConceitoMotivacao

Conceito

Um padrao pode ser definido como sendo um esboco, em vezda implementacao especıfica, ou seja, um modelo a serseguido durante a construcao do software (Coad et al., 1995).

As melhores praticas de projetos antigos sao executadasvisando que o esforco para evitar retrabalho seja mınimo.

Com essas experiencias ja testadas e comprovadamente ideais,tem-se um vocabulario comum que permitira uma melhorcomunicacao entre a equipe.

Design Patterns sao metodologias de construcao de softwarecomprovadamente funcionais que garantem legibilidade,manutenabilidade e reutilizacao de codigo-fonte nodesenvolvimento de alguma aplicacao computacional(Daniel Welfer, 2005).

16 / 27

Page 19: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

IntroducaoConceitoMotivacao

Conceito

Um padrao pode ser definido como sendo um esboco, em vezda implementacao especıfica, ou seja, um modelo a serseguido durante a construcao do software (Coad et al., 1995).

As melhores praticas de projetos antigos sao executadasvisando que o esforco para evitar retrabalho seja mınimo.

Com essas experiencias ja testadas e comprovadamente ideais,tem-se um vocabulario comum que permitira uma melhorcomunicacao entre a equipe.

Design Patterns sao metodologias de construcao de softwarecomprovadamente funcionais que garantem legibilidade,manutenabilidade e reutilizacao de codigo-fonte nodesenvolvimento de alguma aplicacao computacional(Daniel Welfer, 2005).

16 / 27

Page 20: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

IntroducaoConceitoMotivacao

Classificacao

Os padroes de projeto sao classificados de varias maneiras, poremo mais comum e classifica-los de acordo com os tipos de problemasque eles resolvem. De acordo com esse criterio, os padroes podemser:

Criacao Resolvem os problemas da criacao de objetos.

Estruturais Lidam com os problemas de relacionamentos entreobjetos.

Comportamentais Lidam com os problemas de atribuicao deresponsabilidades aos objetos.

17 / 27

Page 21: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

IntroducaoConceitoMotivacao

Motivacao

Design patterns tem varios usos no processo de desenvolvimentode software orientado a objetos (Schneide, 1999):

formam um vocabulario comum que permite uma melhorcomunicacao entre os desenvolvedores, uma documentacaomais completa e uma melhor exploracao das alternativas deprojeto;

constituem uma base de experiencias reutilizaveis para aconstrucao de software;

reduzem o tempo de aprendizado de uma determinadabiblioteca de classes;

quanto mais cedo sao usados, menor sera o retrabalho emetapas mais avancadas do projeto.

18 / 27

Page 22: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

IntroducaoConceitoMotivacao

Motivacao

Design patterns tem varios usos no processo de desenvolvimentode software orientado a objetos (Schneide, 1999):

formam um vocabulario comum que permite uma melhorcomunicacao entre os desenvolvedores, uma documentacaomais completa e uma melhor exploracao das alternativas deprojeto;

constituem uma base de experiencias reutilizaveis para aconstrucao de software;

reduzem o tempo de aprendizado de uma determinadabiblioteca de classes;

quanto mais cedo sao usados, menor sera o retrabalho emetapas mais avancadas do projeto.

18 / 27

Page 23: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

IntroducaoConceitoMotivacao

Motivacao

Design patterns tem varios usos no processo de desenvolvimentode software orientado a objetos (Schneide, 1999):

formam um vocabulario comum que permite uma melhorcomunicacao entre os desenvolvedores, uma documentacaomais completa e uma melhor exploracao das alternativas deprojeto;

constituem uma base de experiencias reutilizaveis para aconstrucao de software;

reduzem o tempo de aprendizado de uma determinadabiblioteca de classes;

quanto mais cedo sao usados, menor sera o retrabalho emetapas mais avancadas do projeto.

18 / 27

Page 24: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

IntroducaoConceitoMotivacao

Motivacao

Design patterns tem varios usos no processo de desenvolvimentode software orientado a objetos (Schneide, 1999):

formam um vocabulario comum que permite uma melhorcomunicacao entre os desenvolvedores, uma documentacaomais completa e uma melhor exploracao das alternativas deprojeto;

constituem uma base de experiencias reutilizaveis para aconstrucao de software;

reduzem o tempo de aprendizado de uma determinadabiblioteca de classes;

quanto mais cedo sao usados, menor sera o retrabalho emetapas mais avancadas do projeto.

18 / 27

Page 25: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Patterns

Conteudo

1 IntroducaoIntroducao aos Padroes de ProjetoContextoAdvento

2 Funcamentacao TeoricaOrientacao a ObjetosReusabilidade de Software

3 Design PatternsIntroducaoConceitoMotivacao

4 Aplicacao PraticaPatterns

5 ConclusaoConclusoes Finais 19 / 27

Page 26: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Patterns

Singleton

O pattern Singleton esta entre um dos mais simples patterns a serimplementado, pois seu objetivo e apenas garantir que sejamantida somente instancia de um determinado objeto. Ou seja, apropria classe garante que nenhuma outra instancia seja criada,bem como oferece uma maneira de acessar sua propria instancia.

20 / 27

Page 27: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Patterns

Factory

Existem certas situacoes em aplicacoes que, seja por umaintervencao humana ou por uma implementacao mais complexa, oprogramador nao sabera como o programa ira se comportar diantede uma determinada situacao. Com isso, o programador pode naosaber que classe devera ser instanciada em determinado momentode uma aplicacao. Para facilitar esse tipo de situacao foi criado opattern Factory.

21 / 27

Page 28: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Patterns

Facade

O objetivo deste pattern e fornecer uma interface unificada paraum conjunto de interfaces em um subsistema (Gamma et al.,1995). Ou seja, o pattern Facade e o isolamento entre camadas deum sistema, permitindo uma interface mais simples decomunicacao entre essas camadas, como tambem um acoplamentobaixo.

22 / 27

Page 29: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Conclusoes Finais

Conteudo

1 IntroducaoIntroducao aos Padroes de ProjetoContextoAdvento

2 Funcamentacao TeoricaOrientacao a ObjetosReusabilidade de Software

3 Design PatternsIntroducaoConceitoMotivacao

4 Aplicacao PraticaPatterns

5 ConclusaoConclusoes Finais 23 / 27

Page 30: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Conclusoes Finais

Singleton

Design Patterns sao metodologias de construcao de softwarecomprovadamente funcionais que garantem legibilidade,manutenabilidade e reutilizacao de codigo-fonte nodesenvolvimento de alguma aplicacao computacional(Daniel Welfer, 2005).

24 / 27

Page 31: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Referencias I

Agostini, M. N., Decker, I. C. & e Silva, A. S. (2007), ‘A newapproach for the design of electric power system software usingobject oriented modeling.’, International Journal of Electrical

Power & Energy Systems 29, 505–513.

Coad, P., North, D. & Mayfield, M. (1995), Object models:

strategies, patterns, applications, Yourdon Press, Upper SaddleRiver, NJ, USA.

Daniel Welfer, M. C. d. (2005), ‘Cooperacao entre padroes deprojeto na resolucao de problemas de processamento de imagensbaseados em filtros de convolucao’.

25 / 27

Page 32: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Referencias II

Gamma, E., Helm, R., Johnson, R. & Vlissides, J. (1995), Design

Patterns Elements of Reusable Object-Oriented Software,Addison-Wesley.

Gerber, L. D. (1999), Uma linguagem de padroes para odesenvolvimento de sistemas de apoio a decisao baseado emframeworks, Master’s thesis, Pontifıcia Universidade Catolica doRio Grande do Sul.

Lange, D. B. & Nakamura, Y. (1995), ‘Interactive visualization ofdesign patterns can help in framework understanding’, Sigplan

Notices pp. 342–357.

Meyer, B. (1997), Object-Oriented Software Construction, PrenticeHall.

26 / 27

Page 33: Design Pattern e a reusabilidade de software

IntroducaoFuncamentacao Teorica

Design PatternsAplicacao Pratica

ConclusaoReferencias

Referencias III

Oglio, P. D. (2007), PHP - Programando com Orientacao a

Objetos, Novatec.

Pree, W. (1995), Technology of object-oriented languages andsystems, in ‘TOOLS’.

Schneide, R. L. (1999), ‘Design patterns’. URLhttp://dcc.ufrj.br/~schneide/PSI_981/gp_6/design_patterns.html

Ultimo acesso em 02/06/2009.

27 / 27