design pattern e a reusabilidade de software
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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