Como Podemos Salvaro Coração do Software      Jorge Oleques
Apresentação Pós – Graduando em Engenharia de Software pela InfNet/FGV Graduado em Analise e Desenvolvimento de Sistemas p...
Sumario  Introdução  Fatores de Risco  Sinais  Transição  Pilares Para Transição  Teste de Unidade  Refactory  Padrões GRA...
Introdução“Quando um software traz consigo um comportamento complexo e édesprovido de um bom design, torna-se difícil refa...
Fatores de Risco  Colesterol Alto  Hipertensão Arterial  Diabetes  Fumo  Estresse
Fatores de Risco Regras de Negócio espalhada Código Ruim Domínio mal modelado Falta da Linguagem Única Problemas na OO
Sinais1. Corpo  Sensação de pressão no peito  Suor frio e intenso  Desconforto acompanhado de tontura  Desmaio  Náuseas  F...
Sinais2. Software  Manutenção difícil  Código duplicado  Método longo  Classe grande  Lista de parâmetros longa  Código di...
Coração Saudável    Cada Coisa no seu lugar    Código Limpo    Linguagem Ubiqua    Coberto por testes
Transição Escrever código que possa ser entendido e executado por uma máquina é fácil,  todavia escrever código que possa ...
Pilares Para Transição  Testes de Unidade  Rafactory  Padrões GRASP
Teste de Unidade“     Para refatorar, o primeiro passo é sempre o    mesmo. Eu preciso construir um conjunto sólido de    ...
TDD (Test Drive Development)
Benefícios do TDD Maior qualidade do código Diminuição dos BUGs Orientação na criação do modelo Maior cobertura do código
Refactory“Devido à dificuldade para se manter um código consideradoruim, um cronograma de entrega de um produto poderá atr...
Refactory Melhoria Continua Eliminar Maus Cheiros Código Limpo Modelo Flexível
Tipos de Refatoração Extrair Método (Extract Method) Mover Método (Move Method) Mover Atributo (Move Field) Extrair Classe...
Padrões GRASP (GeneralResponsibility Assignment SoftwarePattern)"Entender responsabilidades é essencial para obom projeto ...
GRASP Princípios Fundamentais para a Atribuição de Responsabilidades em projetos OO Qualidade Não sobrecarregar Objetos
Padrões GRASP Especialista da Informação Criador Alta Coesão Baixo Acoplamento Controler Polimorfismo Invenção Pura Indire...
Exemplos e DiscussãoQuem ama a prática sem teoria é como um marinheironavegando sem os lemes e sem bussola, não sabendo as...
Exemplos e Discussão - ExpertProblema: Dado que exista pelo menos uma vaga nassalas da prova escolhida pelo candidato, qua...
Exemplos e Discussão - Expert                Código Legado
Exemplos e Discussão - Expert2. Teste de Unidade
Exemplos e Discussão - Expert3. Refactory Extrair Método (Extract Method) Mover Método (Move Method) Renomear Método (Rena...
Exemplos e Discussão - Expert4. Código Refatorado
Exemplos e Discussão - Expert5. Análise  Diminuição das dependências  Flexibilidade do Código  Código Limpo e Claro
Exemplos e Discussão - Variação ProtegidaProblema: Dado que eu saiba o tipo de fase,Quando eu listar as Provas ou os Candi...
Exemplos e Discussão - Variação Protegida1. Código Legado
Exemplos e Discussão - Variação Protegida1. Código Legado
Exemplos e Discussão - Variação Protegida2. Teste de Unidade
Exemplos e Discussão - Variação Protegida3. Refactory Extrair Classe (Extract Class) Extrair Super-classe (Extract Supercl...
Exemplos e Discussão - Variação Protegida                        4. Código Refatorado
Exemplos e Discussão - Variação Protegida                              5. Análise                          Diminuição das ...
Exemplos e Discussão – Invenção Pura1. Código Legado
Exemplos e Discussão – Invenção Pura2. Teste de Unidade
Exemplos e Discussão – Invenção Pura3. Refactory Extrair Classe (Extract Class) Extrair Método (Extract Method)
Exemplos e Discussão – Invenção Pura4. Código Refatorado
Exemplos e Discussão – Invenção Pura5. Análise  Diminuição das dependências  Manutenção Simples  Código Limpo e Claro
Exemplos e Discussão – Invenção Pura5. Análise  Diminuição das dependências  Manutenção Simples  Código Limpo e Claro
Conclusão Diminuição das dependências Manutenção Simples Código Limpo e Claro Flexibilidade do Código Diminuição da Comple...
Conclusão1. Projeto Legado
Conclusão1. Projeto Refatorado
Obrigado Blog: joleques.blogspot.com.br Twitter: @jorgeoleques GitHub : github.com/joleques Email : joleques@gmail.com
Próximos SlideShares
Carregando em…5
×

Apresentacao tdc 2012

1.610 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
1.610
No SlideShare
0
A partir de incorporações
0
Número de incorporações
936
Ações
Compartilhamentos
0
Downloads
10
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Apresentacao tdc 2012

  1. 1. Como Podemos Salvaro Coração do Software Jorge Oleques
  2. 2. Apresentação Pós – Graduando em Engenharia de Software pela InfNet/FGV Graduado em Analise e Desenvolvimento de Sistemas pela FTECBrasil Desenvolvedor Java Desenvolvedor PHP Scrum Master PO - Product Owner Blog: joleques.blogspot.com.br Twitter: @jorgeoleques GitHub : github.com/joleques Email : joleques@gmail.com
  3. 3. Sumario Introdução Fatores de Risco Sinais Transição Pilares Para Transição Teste de Unidade Refactory Padrões GRASP Exemplos e Discussão Conclusão
  4. 4. Introdução“Quando um software traz consigo um comportamento complexo e édesprovido de um bom design, torna-se difícil refatorar ou combinarelementos. Começam a aparecer duplicações a partir do momento emque o desenvolvedor não mostra confiança em prever todas asimplicações de uma mudança”.(Erick Evans, 2010,DDD 2ºEd)
  5. 5. Fatores de Risco Colesterol Alto Hipertensão Arterial Diabetes Fumo Estresse
  6. 6. Fatores de Risco Regras de Negócio espalhada Código Ruim Domínio mal modelado Falta da Linguagem Única Problemas na OO
  7. 7. Sinais1. Corpo Sensação de pressão no peito Suor frio e intenso Desconforto acompanhado de tontura Desmaio Náuseas Falta de ar
  8. 8. Sinais2. Software Manutenção difícil Código duplicado Método longo Classe grande Lista de parâmetros longa Código difícil de entender Dificuldade de adicionar novas funcionalidades
  9. 9. Coração Saudável Cada Coisa no seu lugar Código Limpo Linguagem Ubiqua Coberto por testes
  10. 10. Transição Escrever código que possa ser entendido e executado por uma máquina é fácil, todavia escrever código que possa ser lido e entendido por humanos é bem mais complexo (Joshua Kerievsky)
  11. 11. Pilares Para Transição Testes de Unidade Rafactory Padrões GRASP
  12. 12. Teste de Unidade“ Para refatorar, o primeiro passo é sempre o mesmo. Eu preciso construir um conjunto sólido de testes para cada sessão do código...” “...eu sou humano e ainda cometo erros. Então, eu preciso de testes sólidos.”Martin Fowler, 1999
  13. 13. TDD (Test Drive Development)
  14. 14. Benefícios do TDD Maior qualidade do código Diminuição dos BUGs Orientação na criação do modelo Maior cobertura do código
  15. 15. Refactory“Devido à dificuldade para se manter um código consideradoruim, um cronograma de entrega de um produto poderá atrasarem vista do tempo extra que será necessário para realizar atarefa de alteração no código.”(MARTIN, 2009).
  16. 16. Refactory Melhoria Continua Eliminar Maus Cheiros Código Limpo Modelo Flexível
  17. 17. Tipos de Refatoração Extrair Método (Extract Method) Mover Método (Move Method) Mover Atributo (Move Field) Extrair Classe (Extract Class) Encapsular Atributo (Encapsulate Field) Renomear Método (Rename Method) Subir Método (Pull Up Method) Subir Atributo (Pull Up Field) Descer Método (Push Down Method) Descer Atributo (Push Down Field) Extrair Sub-classe (Extract Subclass) Extrair Super-classe (Extract Superclass)
  18. 18. Padrões GRASP (GeneralResponsibility Assignment SoftwarePattern)"Entender responsabilidades é essencial para obom projeto orientado a objetos". (MartinFowler)
  19. 19. GRASP Princípios Fundamentais para a Atribuição de Responsabilidades em projetos OO Qualidade Não sobrecarregar Objetos
  20. 20. Padrões GRASP Especialista da Informação Criador Alta Coesão Baixo Acoplamento Controler Polimorfismo Invenção Pura Indireção Variações Protegidas
  21. 21. Exemplos e DiscussãoQuem ama a prática sem teoria é como um marinheironavegando sem os lemes e sem bussola, não sabendo assimnunca onde vai chegar..(Leonardo da Vinci)
  22. 22. Exemplos e Discussão - ExpertProblema: Dado que exista pelo menos uma vaga nassalas da prova escolhida pelo candidato, quando ocandidato realizar a inscrição, então o candidatodeve ser inserido na sala e a inscrição realizada. Especialista da Informação Alta Coesão Baixo Acoplamento
  23. 23. Exemplos e Discussão - Expert Código Legado
  24. 24. Exemplos e Discussão - Expert2. Teste de Unidade
  25. 25. Exemplos e Discussão - Expert3. Refactory Extrair Método (Extract Method) Mover Método (Move Method) Renomear Método (Rename Method)
  26. 26. Exemplos e Discussão - Expert4. Código Refatorado
  27. 27. Exemplos e Discussão - Expert5. Análise Diminuição das dependências Flexibilidade do Código Código Limpo e Claro
  28. 28. Exemplos e Discussão - Variação ProtegidaProblema: Dado que eu saiba o tipo de fase,Quando eu listar as Provas ou os Candidatos, Entãoo sistema pode apresentar as provas para ocandidato escolher ou montar relatório com oscandidatos Variação Protegida Polimorfismo
  29. 29. Exemplos e Discussão - Variação Protegida1. Código Legado
  30. 30. Exemplos e Discussão - Variação Protegida1. Código Legado
  31. 31. Exemplos e Discussão - Variação Protegida2. Teste de Unidade
  32. 32. Exemplos e Discussão - Variação Protegida3. Refactory Extrair Classe (Extract Class) Extrair Super-classe (Extract Superclass) Descer Método (Push Down Method)
  33. 33. Exemplos e Discussão - Variação Protegida 4. Código Refatorado
  34. 34. Exemplos e Discussão - Variação Protegida 5. Análise Diminuição das dependências Flexibilidade do Código Diminuição da Complexidade Código Limpo e Claro
  35. 35. Exemplos e Discussão – Invenção Pura1. Código Legado
  36. 36. Exemplos e Discussão – Invenção Pura2. Teste de Unidade
  37. 37. Exemplos e Discussão – Invenção Pura3. Refactory Extrair Classe (Extract Class) Extrair Método (Extract Method)
  38. 38. Exemplos e Discussão – Invenção Pura4. Código Refatorado
  39. 39. Exemplos e Discussão – Invenção Pura5. Análise Diminuição das dependências Manutenção Simples Código Limpo e Claro
  40. 40. Exemplos e Discussão – Invenção Pura5. Análise Diminuição das dependências Manutenção Simples Código Limpo e Claro
  41. 41. Conclusão Diminuição das dependências Manutenção Simples Código Limpo e Claro Flexibilidade do Código Diminuição da Complexidade
  42. 42. Conclusão1. Projeto Legado
  43. 43. Conclusão1. Projeto Refatorado
  44. 44. Obrigado Blog: joleques.blogspot.com.br Twitter: @jorgeoleques GitHub : github.com/joleques Email : joleques@gmail.com

×