Eduardo Manuel de  Freitas Jorge [email_address] Reutilização sobre a ótica  de  Framework  e Padrões de Projeto
Tópicos Abordados <ul><li>Contexto e Motivação </li></ul><ul><li>Reutilização no Paradigma Funcional e Orientado a Objetos...
Contexto  <ul><li>O desenvolvimento de projetos de software não é uma tarefa fácil.  </li></ul><ul><ul><li>têm que ser rob...
O objetivo <ul><li>O objetivo é discutir os vários níveis reutilização sobre a ótica de  Framework  e Padrões de Projeto. ...
Motivação  <ul><li>A reutilização de pedaços de software garante uma maior  qualidade ao projeto ,  </li></ul><ul><ul><li>...
Reutilização no Paradigma Funcional e Orientado a Objetos
Como  alcançar reutilização  no  Paradigma Funcional?
Reutilização no Paradigma Funcional <ul><li>Reutilização no Paradigma Funcional </li></ul><ul><ul><li>Chamada de Funções <...
Como  alcançar reutilização  no  Paradigma OO?
Reutilização no Paradigma OO <ul><li>Os primeiros registros da concepção dos conceitos de Orientação a Objetos surgiram co...
Reutilização no Paradigma OO <ul><li>OO agrega as formas de reutilização do Paradigma Funcional. </li></ul><ul><li>Dentre ...
Reutilização no Paradigma OO:Objeto <ul><li>Objetos são pequenos módulos que agregam estado e comportamento. </li></ul><ul...
Reutilização no Paradigma OO: Classe <ul><li>Quando um objeto é instanciado a partir de uma classe herda todas as suas car...
Reutilização no Paradigma OO:Herança <ul><li>Reutilização com herança </li></ul><ul><ul><li>Semelhante a herança genética ...
Exemplo de Utilização de Herança
Exemplo de Erro na Utilização de Herança <ul><li>Solução Composição: Também se obtém reutilização </li></ul>
Reutilização no Paradigma OO:  Conceito de Componente <ul><li>O conceito de componente de software é entendido como uma co...
Reutilização no Paradigma OO:  Conceito de Componente <ul><li>Componentes visam a construção de projetos com alto grau de ...
Reutilização no Paradigma OO: Componente <ul><li>Os benefícios da reutilização de componentes puderam ser melhor observado...
Reutilização no Paradigma OO: Ferramenta RAD
<ul><li>Apesar dos benefícios alcançados com a produtividade e facilidade no desenvolvimento de software diversos problema...
Reutilização no Paradigma OO: Componente Subsistema 01 Subsistema 02 Subsistema 03 Acoplamento fraco Acoplamento fraco
Resumo <ul><li>Chama de Funções </li></ul><ul><li>Objetos </li></ul><ul><li>Na instância de classe </li></ul><ul><li>Heran...
Reutilização  <ul><li>A questão que se coloca é: </li></ul><ul><ul><li>Como `encapsular’, em bibliotecas ou em componentes...
<ul><li>O conceito de Framework não é algo recente e desconhecido na engenharia de software.  </li></ul><ul><ul><li>Desde ...
Framework:  Definições <ul><li>Iniciamos com uma definição genérica: “Framework na sua essência pode ser definido como um ...
Framework:  Estrutura <ul><li>O framework deve permitir construir uma aplicação quase que completamente, faltando apenas `...
Framework:Hot-Spots <ul><li>Pontos do Framework que variam em cada aplicação </li></ul>FRAMEWORK APLICAÇÃO 1 APLICAÇÃO 2
Framework:  Estrutura Framework
Framework X Biblioteca de Classes <ul><li>A confusão entre os dois conceitos é uma incompreensão clássica entre desenvolve...
Framework – Princ. de Hollywood <ul><li>“ Não nos chame. Nós chamamos você.” </li></ul>[LAN 1995] Framework Biblioteca Cód...
Um Processo Voltado para o Desenvolvimento de Framework Orientado a Objeto <ul><li>O projeto de um Framework difere de pro...
Um Processo Voltado para o Desenvolvimento de Framework Orientado a Objeto <ul><li>Requisitos e Análise ( I dentificação d...
Framework:  Classificação e Tipos <ul><li>Classificação </li></ul><ul><ul><li>Caixa Branca (white-box) – É um framework em...
Qual o tipo de reutilização alcançada com Framework?
Framework:  Reutilização <ul><li>Framework provê reutilização em alto nível. </li></ul><ul><ul><li>É possível construir pr...
Quais as desvantagens da utilização de um Framework?
Desvantagens na utilização de Framework <ul><li>Curva de aprendizado </li></ul><ul><li>Acoplamento com os conceitos e tecn...
Como tornar projetos mais reutilizáveis, com menos acoplamento e com um maior nível de reutilização?  Tarefa para desenvol...
Padrões de Projeto <ul><li>A definição clássica para os  Designs Patterns  é a seguinte:  &quot;um Pattern descreve um pro...
Padrões de Projeto: Histórico <ul><li>Os  Designs Patterns  originam-se no final dos anos 80, </li></ul><ul><ul><li>quando...
Padrões de Projeto: Histórico <ul><li>Erich Gamma estava trabalhando em sua tese de doutorado sobre desenvolvimento de  so...
Padrões de Projeto: Aplicado em Outras Áreas <ul><li>No seu livro -  A Pattern Language : Towns, Buildings, Construction -...
Padrões de Projetos mais Comuns em um projeto de um Framework <ul><li>Padrões de Projetos mais comuns em um projeto de um ...
Padrões Usados em Arquitetura JEE <ul><li>ValueObject </li></ul><ul><ul><li>Os clientes de aplicação precisam trocar dados...
Padrões Usados em Arquitetura JEE <ul><li>Session Facade </li></ul><ul><ul><li>Fornece um ponto único e simples de entrada...
Padrões Usados em Arquitetura JEE <ul><li>Data Access Object (DAO) </li></ul><ul><ul><li>O acesso a dados varia e depende ...
Vantagens na Utilização de Padrões de Projeto <ul><li>Desenvolvedores iniciantes podem utilizar padrões de projetos catalo...
Pergunta Final:  Como programar rápido pensando na aplicação de padrões de projeto, na geração de uma aplicação reutilizáv...
Refatoramento
Fim
Referencias  Bibliográficas <ul><li>[GAM94] GAMMA E. & HELM R. & JOHNSON R. & VLISSIDES J., Design Patterns Elements of Re...
Upcoming SlideShare
Loading in …5
×

Reutilização

4,349 views
4,183 views

Published on

Reutilização Descrição

1 Comment
1 Like
Statistics
Notes
No Downloads
Views
Total views
4,349
On SlideShare
0
From Embeds
0
Number of Embeds
62
Actions
Shares
0
Downloads
135
Comments
1
Likes
1
Embeds 0
No embeds

No notes for slide

Reutilização

  1. 1. Eduardo Manuel de Freitas Jorge [email_address] Reutilização sobre a ótica de Framework e Padrões de Projeto
  2. 2. Tópicos Abordados <ul><li>Contexto e Motivação </li></ul><ul><li>Reutilização no Paradigma Funcional e Orientado a Objetos </li></ul><ul><li>Framework e Padrões de Projeto </li></ul>
  3. 3. Contexto <ul><li>O desenvolvimento de projetos de software não é uma tarefa fácil. </li></ul><ul><ul><li>têm que ser robustos; </li></ul></ul><ul><ul><li>atuar sobre problemas complexos; </li></ul></ul><ul><ul><li>estar implantados em curto prazo (“time-to-market”). </li></ul></ul><ul><li>A reutilização é reconhecida como um importante modo para se alcançar aumento na produtividade em projetos de software, </li></ul><ul><ul><li>possibilita agregar funcionalidades pré-existentes na produção de novos software . </li></ul></ul>
  4. 4. O objetivo <ul><li>O objetivo é discutir os vários níveis reutilização sobre a ótica de Framework e Padrões de Projeto. </li></ul><ul><ul><li>Conhecimento; </li></ul></ul><ul><ul><li>Padrões; </li></ul></ul><ul><ul><li>Análise; </li></ul></ul><ul><ul><li>Projeto; </li></ul></ul><ul><ul><li>Código; </li></ul></ul>
  5. 5. Motivação <ul><li>A reutilização de pedaços de software garante uma maior qualidade ao projeto , </li></ul><ul><ul><li>visto que os blocos a serem reutilizados já estão testados e validados por uma ou mais aplicações. </li></ul></ul><ul><li>O direcionamento no desenvolvimento de um projeto de software é para que não se construa nada que já exista e que possa ser reutilizado. </li></ul>
  6. 6. Reutilização no Paradigma Funcional e Orientado a Objetos
  7. 7. Como alcançar reutilização no Paradigma Funcional?
  8. 8. Reutilização no Paradigma Funcional <ul><li>Reutilização no Paradigma Funcional </li></ul><ul><ul><li>Chamada de Funções </li></ul></ul><ul><li>A reutilização de pedaços é mais difícil usando paradigma Funcional ( modularização via funções) porque não é possível usar “coisas” pré-existentes tão facilmente. </li></ul>
  9. 9. Como alcançar reutilização no Paradigma OO?
  10. 10. Reutilização no Paradigma OO <ul><li>Os primeiros registros da concepção dos conceitos de Orientação a Objetos surgiram com a linguagem Simula na década de 60, na Noruega, no centro de Norweigan Computin Center (NCC). </li></ul><ul><li>O cerne desse paradigma era a criação de um modelo computacional que fosse similar aos elementos do mundo real. </li></ul><ul><ul><li>Formado essencialmente por objetos ou “coisas”. </li></ul></ul>
  11. 11. Reutilização no Paradigma OO <ul><li>OO agrega as formas de reutilização do Paradigma Funcional. </li></ul><ul><li>Dentre as diversas metodologias existentes </li></ul><ul><ul><li>OO é reconhecido como o principal paradigma para a construção de software reutilizável. </li></ul></ul><ul><ul><li>Apesar do grande sucesso do paradigma OO, nem sempre os resultados, em relação a reutilização, são obtidos de forma fácil . </li></ul></ul>Programa Funções Dados Classe Métodos Atributos P. Funcional P. O. O. Objeto Estado Métodos
  12. 12. Reutilização no Paradigma OO:Objeto <ul><li>Objetos são pequenos módulos que agregam estado e comportamento. </li></ul><ul><ul><li>Com objetos, posso dizer: &quot;me dê dois daqueles&quot; porque objetos têm estado. </li></ul></ul><ul><ul><li>Não posso fazer isso com funções porque elas não encapsulam estado. </li></ul></ul>
  13. 13. Reutilização no Paradigma OO: Classe <ul><li>Quando um objeto é instanciado a partir de uma classe herda todas as suas características. </li></ul><ul><ul><li>Um objeto é gerado sempre a partir de uma classe (instância de classe), herdando todas as suas características atributos e métodos, adicionando mais o estado. </li></ul></ul>
  14. 14. Reutilização no Paradigma OO:Herança <ul><li>Reutilização com herança </li></ul><ul><ul><li>Semelhante a herança genética do mundo real. </li></ul></ul><ul><li>Deve ser utilizado com muito cuidado. </li></ul><ul><ul><li>Erros são comuns na utilização de herança de classes </li></ul></ul>
  15. 15. Exemplo de Utilização de Herança
  16. 16. Exemplo de Erro na Utilização de Herança <ul><li>Solução Composição: Também se obtém reutilização </li></ul>
  17. 17. Reutilização no Paradigma OO: Conceito de Componente <ul><li>O conceito de componente de software é entendido como uma composição de classes que juntas formam uma unidade para cumprir certas responsabilidades. </li></ul><ul><ul><li>Componentes devem possuir uma interface pública para a comunicação com os blocos de código externos. </li></ul></ul><ul><ul><li>Eles têm como principal característica o funcionamento como caixas pretas , onde o desenvolvedor não precisa, necessariamente, conhecer os detalhes de sua implementação .(Abstração->redução de complexidade) </li></ul></ul>Interface Publica
  18. 18. Reutilização no Paradigma OO: Conceito de Componente <ul><li>Componentes visam a construção de projetos com alto grau de reutilização e compartilhamento de código </li></ul><ul><ul><li>gerando uma redução no ciclo de desenvolvimento e facilitando as futuras manutenções corretivas e evolutivas. </li></ul></ul><ul><ul><li>Um ponto importante a ser analisado é que um software normalmente possui um custo mais alto de manutenção do que de desenvolvimento . </li></ul></ul><ul><ul><li>Desenvolvimento 3 a 6 meses / Manutenção 5 a 50 anos. </li></ul></ul>
  19. 19. Reutilização no Paradigma OO: Componente <ul><li>Os benefícios da reutilização de componentes puderam ser melhor observados através de ferramentas RAD ( Rapid Aplication Development ) </li></ul><ul><ul><li>Ampla utilização a partir da década de 90 </li></ul></ul><ul><ul><li>Ajudou na popularização da OO ( saída do meio acadêmico ) </li></ul></ul><ul><li>Os mecanismos de construção de aplicações para o desenvolvedor na ferramenta RAD se dá através da reutilização de componentes visuais, previamente construídos, </li></ul><ul><ul><li>Componentes que são manipulados e customizados para atender aos requisitos específicos da aplicação que está sendo construída. </li></ul></ul><ul><ul><li>São aplicadas, principalmente, na construção de elementos da camada de interface, tais como menus, botões , telas, tabelas, combos , etc. </li></ul></ul><ul><li>Um exemplo clássico de ferramentas RAD são as IDE Visual Basic, Delphi, Centura, etc. </li></ul>
  20. 20. Reutilização no Paradigma OO: Ferramenta RAD
  21. 21. <ul><li>Apesar dos benefícios alcançados com a produtividade e facilidade no desenvolvimento de software diversos problemas relacionados com a construção de aplicações baseados em RAD são identificados. </li></ul><ul><li>Como as ferramentas RAD direcionam o desenvolvedor a construir software com um forte acoplamento entre a camada de aplicação e a camada de interface alguns problemas na manutenção podem ocorrer. </li></ul><ul><ul><li>Por exemplo, o espalhamento de regras de negócio na telas, assim quando existe uma mudança é necessário alterar vários pontos do software. </li></ul></ul>Reutilização no Paradigma OO: Componente Tela
  22. 22. Reutilização no Paradigma OO: Componente Subsistema 01 Subsistema 02 Subsistema 03 Acoplamento fraco Acoplamento fraco
  23. 23. Resumo <ul><li>Chama de Funções </li></ul><ul><li>Objetos </li></ul><ul><li>Na instância de classe </li></ul><ul><li>Herança de classe </li></ul><ul><li>Composição </li></ul><ul><li>Uso de Componentes </li></ul>
  24. 24. Reutilização <ul><li>A questão que se coloca é: </li></ul><ul><ul><li>Como `encapsular’, em bibliotecas ou em componentes, comportamentos genéricos para um domínio de aplicação, que possam ser usados em software de mesmo domínio, só que com características específicas? </li></ul></ul>
  25. 25. <ul><li>O conceito de Framework não é algo recente e desconhecido na engenharia de software. </li></ul><ul><ul><li>Desde do final da década de 80, muitas pesquisas nesta área já tinham sido realizadas . </li></ul></ul><ul><li>Então, porque só mais recentemente o conceito de framework tem sido largamente aceito? </li></ul><ul><ul><li>À maturidade das linguagens orientadas a objeto (Java, C++, etc); </li></ul></ul><ul><ul><li>À demanda por projetos de software mais complexos e reutilizáveis; </li></ul></ul><ul><ul><li>Aos novos recursos da engenharia de software como padrões de projeto, processo interativo incremental, UML, etc. </li></ul></ul><ul><li>     </li></ul>Framework: Introdução
  26. 26. Framework: Definições <ul><li>Iniciamos com uma definição genérica: “Framework na sua essência pode ser definido como um conjunto de blocos de software que os programadores podem usar, estender, ou `customizar ´ , com pouco esforço, para um domínio específico de problema.” [IBM 99]. </li></ul><ul><li>Já uma definição mais técnica determina que “ Um framework é um conjunto de classes colaborativas abstratas e concretas, que pode ser usado como um `template’ (gabarito) para resolver uma família de problemas relacionados. Ele é usualmente estendido através de subclasses, para obter-se o comportamento específico de uma aplicação. ” [LAR00] </li></ul>
  27. 27. Framework: Estrutura <ul><li>O framework deve permitir construir uma aplicação quase que completamente, faltando apenas `pedaços´ para serem completados com as funcionalidades específicas das futuras aplicações. </li></ul><ul><ul><li>Mais precisamente, a arquitetura do framework deve ser tal que possibilitará às aplicações que vierem a ser construídas utilizar a sua infra-estrutura. </li></ul></ul>Framework Extensão Aplicação
  28. 28. Framework:Hot-Spots <ul><li>Pontos do Framework que variam em cada aplicação </li></ul>FRAMEWORK APLICAÇÃO 1 APLICAÇÃO 2
  29. 29. Framework: Estrutura Framework
  30. 30. Framework X Biblioteca de Classes <ul><li>A confusão entre os dois conceitos é uma incompreensão clássica entre desenvolvedores de software. </li></ul><ul><li>Framework ainda pode ser visto como uma espécie de biblioteca, só que o controle do fluxo de chamadas é bi-direcional , ou seja, tanto uma aplicação pode chamar métodos do framework como o framework pode invocar métodos da aplicação. </li></ul><ul><ul><li>Isto é diferente de uma biblioteca de classes stricto sensu , em que o fluxo de chamadas é uni-direcional, da aplicação para a biblioteca. </li></ul></ul><ul><ul><li>A possibilidade de o framework chamar métodos da aplicação se dá através de chamadas “dynamic binding”, implementadas nas subclasses da extensão do framework para a aplicação. </li></ul></ul>
  31. 31. Framework – Princ. de Hollywood <ul><li>“ Não nos chame. Nós chamamos você.” </li></ul>[LAN 1995] Framework Biblioteca Código feito pelo desenvolvedor Chamadas Chamadas
  32. 32. Um Processo Voltado para o Desenvolvimento de Framework Orientado a Objeto <ul><li>O projeto de um Framework difere de projetar uma aplicação convencional. </li></ul><ul><li>Necessidade de adotar-se um processo específico e voltada para a construção de Framework . </li></ul><ul><li>Segue o Processo Unificado (Iterativo e Incremental) </li></ul><ul><li>O objetivo maior é o de migrar o máximo de comportamento comum das aplicações para o framework. </li></ul>1.Análise de Domínio 2. Captura de Requisitos e Análise 3. Projeto do Framework Implementação do Framework Testes Análise da Aplicação Projeto da Aplicação Implementação da Aplicação Análise Projeto
  33. 33. Um Processo Voltado para o Desenvolvimento de Framework Orientado a Objeto <ul><li>Requisitos e Análise ( I dentificação dos Requisitos) </li></ul>[LAN 1995]
  34. 34. Framework: Classificação e Tipos <ul><li>Classificação </li></ul><ul><ul><li>Caixa Branca (white-box) – É um framework em que o usuário tem um poder maior de personalização do mesmo, em compensação é necessário um maior entendimento de sua estrutura de classes. </li></ul></ul><ul><ul><li>Caixa Preta (black-box) – É utilizado através da composição de objetos, os seus componentes já estão prontos para serem utilizados o desenvolvedor deve apenas encaixar suas classes nos pontos do framework que necessitam de extensão (hotspots). </li></ul></ul><ul><li>Tipos </li></ul><ul><ul><li>Horizontal (Delphi, Visual Basic, Structs, J2EE, J2ME, Hibernate, JSP, etc) </li></ul></ul><ul><ul><ul><li>ATHOS; </li></ul></ul></ul><ul><ul><li>Vertical (E-Commerce, Gerencia de Rede, etc) </li></ul></ul><ul><ul><ul><li>S-DW-E; </li></ul></ul></ul>
  35. 35. Qual o tipo de reutilização alcançada com Framework?
  36. 36. Framework: Reutilização <ul><li>Framework provê reutilização em alto nível. </li></ul><ul><ul><li>É possível construir projetos extensíveis, em que a reutilização está focada desde o domínio da aplicação. </li></ul></ul><ul><ul><li>Reutilização desde o projeto conceitual até o projeto de baixo nível. </li></ul></ul><ul><ul><li>Software bem testado </li></ul></ul><ul><ul><li>Boas práticas de programação </li></ul></ul>
  37. 37. Quais as desvantagens da utilização de um Framework?
  38. 38. Desvantagens na utilização de Framework <ul><li>Curva de aprendizado </li></ul><ul><li>Acoplamento com os conceitos e tecnologia encapsulados no Framework </li></ul><ul><li>Correção de problemas encapsulados no framework </li></ul>
  39. 39. Como tornar projetos mais reutilizáveis, com menos acoplamento e com um maior nível de reutilização? Tarefa para desenvolvedores experientes
  40. 40. Padrões de Projeto <ul><li>A definição clássica para os Designs Patterns é a seguinte: &quot;um Pattern descreve um problema que se repete várias vezes em um 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” [ALE77] . </li></ul>
  41. 41. Padrões de Projeto: Histórico <ul><li>Os Designs Patterns originam-se no final dos anos 80, </li></ul><ul><ul><li>quando Ward Cunningham e Kent Beck desenvolveram um conjunto de padrões para serem aplicados no desenvolvimento de interfaces do usuário elegantes em Smalltalk . </li></ul></ul><ul><li>No mesmo período, Jim Coplien estava desenvolvendo um catálogo de padrões C++ chamados idiomas. </li></ul>
  42. 42. Padrões de Projeto: Histórico <ul><li>Erich Gamma estava trabalhando em sua tese de doutorado sobre desenvolvimento de software orientado a objeto, e reconheceu a importância de acumular explicitamente as estruturas de projetos que se repetiam com frequência. </li></ul><ul><ul><li>Em 1994, quatro autores – Erich Gamma, Richard Helm, Ralph Johnson e John Vlissides - publicaram o primeiro catálogo de Design Patterns para programas orientado a objetos: Design Patterns – Elements of Reusable Object-Oriented software . </li></ul></ul><ul><ul><li>Esse livro descreve soluções simples para problema específicos no projeto de software orientado a objetos. </li></ul></ul>
  43. 43. Padrões de Projeto: Aplicado em Outras Áreas <ul><li>No seu livro - A Pattern Language : Towns, Buildings, Construction - mostra como patterns podem ser aplicados na construção de casas, assim como no planejamento de bairros e cidades.  </li></ul>
  44. 44. Padrões de Projetos mais Comuns em um projeto de um Framework <ul><li>Padrões de Projetos mais comuns em um projeto de um framework </li></ul><ul><ul><li>“ Façade”, “Command”, “Template Method”, e “Abstract Factory”. </li></ul></ul><ul><li>“ Template Method” é a base para a construção de um framework. </li></ul>
  45. 45. Padrões Usados em Arquitetura JEE <ul><li>ValueObject </li></ul><ul><ul><li>Os clientes de aplicação precisam trocar dados com os EJB </li></ul></ul><ul><ul><ul><li>Classe simples com os atributos e métodos get/set </li></ul></ul></ul><ul><ul><ul><li>A classe deve ser serializável </li></ul></ul></ul>
  46. 46. Padrões Usados em Arquitetura JEE <ul><li>Session Facade </li></ul><ul><ul><li>Fornece um ponto único e simples de entrada para beans de entidade compartilhados. </li></ul></ul><ul><ul><li>Utilizar um bean de Sessão como um facade para encapsular a complexidade das interações entre os objetos de negócio participantes em um fluxo de trabalho. </li></ul></ul><ul><ul><li>O Session Facade gerencia os objetos de negócios e fornece uma camada de acesso a serviços uniforme e de granulação grossa para os clientes. </li></ul></ul><ul><ul><ul><li>Expõe um interface uniforme;Reduz o acoplamento; Reduz os métodos de granulação fina;Expõe menos interfaces remotas para o cliente; Amplia a reutilização </li></ul></ul></ul>
  47. 47. Padrões Usados em Arquitetura JEE <ul><li>Data Access Object (DAO) </li></ul><ul><ul><li>O acesso a dados varia e depende da origem dos dados. </li></ul></ul><ul><ul><li>Para extrair e encapsular todos os métodos de acessos à dados. </li></ul></ul><ul><ul><ul><li>Transparência </li></ul></ul></ul><ul><ul><ul><li>Permite a migração mais fácil </li></ul></ul></ul><ul><ul><ul><li>Reduz a complexidade dos códigos de negócios </li></ul></ul></ul><ul><ul><ul><li>Centraliza todos o acesso de dados em uma camada separada </li></ul></ul></ul>
  48. 48. Vantagens na Utilização de Padrões de Projeto <ul><li>Desenvolvedores iniciantes podem utilizar padrões de projetos catalogados por “experts” para obter conhecimento e experiência na construção de aplicações orientadas a objeto. </li></ul><ul><li>Com a boa utilização de padrões de projeto a comunicação entre desenvolvedores, e a manutenção de sistemas, tornam-se menos complexas. </li></ul><ul><li>Padrões de projeto podem ajudar a encontrar abstrações que tornem o software mais flexível e reutilizável . </li></ul>
  49. 49. Pergunta Final: Como programar rápido pensando na aplicação de padrões de projeto, na geração de uma aplicação reutilizável e com baixo acoplamento?
  50. 50. Refatoramento
  51. 51. Fim
  52. 52. Referencias Bibliográficas <ul><li>[GAM94] GAMMA E. & HELM R. & JOHNSON R. & VLISSIDES J., Design Patterns Elements of Reusable Object-Oriented Software,. Addison-Wesley, 1994. </li></ul><ul><li>[GRA 1998] GRAND, Mark. Patterns in Java: a catalog of reusable design patterns illustrated with UML. New York: Wiley Computer Publishing, 1998. 467p. </li></ul><ul><li>[JOR 2001] JORGE, Eduardo M. Análise, Projeto e Implementação de um Servidor de DW Extensível . Campina Grande: UFPB, 2001. 140p. cap.3. </li></ul><ul><li>[LAN 1995] LANDIN, Niklas; NIKLASSON, Axel. Development of Object-Oriented Frameworks. Lund: Lund Institute of Technology, Lund Institute, 1995. 145p. </li></ul><ul><li>[LAR 2000] LARMAN, Craig. Utilizando UML e padrões : uma introdução à análise e ao projeto orientados a objetos. Porto Alegre: Bookman, 2000. 492p. </li></ul><ul><li>[RAT 2003]RATIONAL SOFTWARE CORPORATION. Rational Unified Process . Disponível em: http://www.rational.com/products/rup/index . jsp . Acesso em: 19 Fev 2003. </li></ul>

×