Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

QConSP 2011 - Praticando a arquitetura evolucionária

2,206 views

Published on

Published in: Technology
  • Be the first to comment

QConSP 2011 - Praticando a arquitetura evolucionária

  1. 1. 2011<br />Praticando a<br />Arquitetura Evolucionária<br />Leandro Daniel<br />@leandronet<br />
  2. 2. Leandro Daniel<br />@leandronet<br />Comunidade<br />.net Magazine<br />Autor de artigos<br />Consultoria<br />Desenvolvimento de software<br />Editor Técnico <br />.NET<br />Easy.net Magazine<br />ClubeDelphi<br />SQL Server <br />Business Intelligence<br />Arquitetura de Software<br />Várias certificações...<br />
  3. 3. http://voidpodcast.com<br />
  4. 4. Agenda<br />
  5. 5. Existe diferença?<br />
  6. 6. Arquitetura<br />Implementação<br />Design<br />@leandronet<br />#qconsp<br />
  7. 7. Arquitetura é aquela coisa que é difícil de mudar depois.<br />Por essa razão, deve existir o mínimo possível dessa coisa.<br />@leandronet<br />#qconsp<br />
  8. 8.
  9. 9. c<br /><Intermission><br />
  10. 10. c<br />Apresentando: Um código C#!<br />
  11. 11. c<br />Essaéumaabstração do código (by NDepend)<br />Assembly<br />Classe<br />Método<br />
  12. 12. c<br />
  13. 13. c<br />
  14. 14. c<br />c<br />
  15. 15. Qual abordagem você utilizaria para fazer esse software?<br /></Intermission><br />
  16. 16. Arquitetura e o desenvolvimento <br />de Software <br />
  17. 17. Espectro do Design<br />Waterfall<br />clássico<br />Some<br />DUF<br />Agile<br />XGH<br />Design<br />Emergente<br />BDUF<br />#qconsp<br />@leandronet<br />
  18. 18. Arquitetura Evolucionária e Design Emergente<br />#Simples<br />#Adaptativa<br />#Foco do cliente<br />#Agile<br />#YAGNI<br />#Iterativa<br />#Flexível<br />#qconsp<br />@leandronet<br />
  19. 19. Design Emergente<br />"Não existe nenhum design no início. Você começa codificando uma <br />pequena quantidade de funcionalidades, e vai acrescentando outras gradativamente, deixando que o design tome forma!”<br />Martin Fowler<br />@leandronet<br />#qconsp<br />
  20. 20. Sim, a entropia existe em software...<br />Manter as coisas como estão, <br />exige trabalho!<br />#qconsp<br />@leandronet<br />
  21. 21.
  22. 22. Quanto mais tempo você adiar suas decisões...<br />...Mais contextualizadas elas serão!<br />@leandronet<br />#qconsp<br />
  23. 23. #qconsp<br />@leandronet<br />
  24. 24. Práxis da Arquitetura Evolucionária<br />
  25. 25. Dívida técnica sempre é uma vilã?<br />Fuuuuuuu!!!<br />Depende!<br />OMG!!<br />#qconsp<br />@leandronet<br />
  26. 26. Quadrante da dívida técnica<br />“Nós não temos tempo para design”<br />“Nós vamos lidar com as consequências”<br />Prudente<br />e<br />De propósito<br />Irresponsável<br />e<br />De propósito<br />“O que são camadas?”<br />“Agora nós sabemos que deveríamos ter feito isso”<br />Prudente<br />e<br />Sem querer<br />Irresponsável<br />e<br />Sem querer<br />#qconsp<br />@leandronet<br />
  27. 27. Identificando padrões idiomáticos<br />#qconsp<br />@leandronet<br />
  28. 28. Possibilidades no Visual Studio 2010<br />#qconsp<br />@leandronet<br />
  29. 29. Possibilidades no NDepend(1 de 2)<br />
  30. 30. Possibilidades no NDepend(2 de 2)<br />
  31. 31. Outras abstrações para <br />visualização de métricas: CodeCity<br />#qconsp<br />@leandronet<br />
  32. 32. CodeCitybyCodeCity<br />#qconsp<br />@leandronet<br />
  33. 33. JDK visto no CodeCity<br />#qconsp<br />@leandronet<br />
  34. 34. Existem várias métricas e <br />combinações de uso...<br />LOC<br />LOCM<br />NOC<br />ILCC<br />...<br />ABC<br />Vamos começar do básico! :)<br />#qconsp<br />@leandronet<br />
  35. 35. Usando a matriz de dependência do NDepend<br />
  36. 36. Design Emergente pelas métricas (1 de 5)<br />#qconsp<br />@leandronet<br />
  37. 37. Design Emergente pelas métricas (2 de 5)<br />#qconsp<br />@leandronet<br />
  38. 38. Design Emergente pelas métricas (3 de 5)<br />#qconsp<br />@leandronet<br />
  39. 39. Design Emergente pelas métricas (4 de 5)<br />#qconsp<br />@leandronet<br />
  40. 40. Design Emergente pelas métricas (5 de 5)<br />#qconsp<br />@leandronet<br />
  41. 41. Para fechar, algumas dicas importantes...<br />
  42. 42. É necessário tomar essa decisão agora?<br />Posso adiar essa decisão com segurança?<br />O que posso fazer para tornar essa <br />decisão reversível?<br />@leandronet<br />
  43. 43. Toda e qualquer atividade dentro do desenvolvimento de software é importante.<br />Pense sempre em flexibilidade.<br />Não lute contra as “mudanças”.<br />@leandronet<br />
  44. 44. Tenha ciência do seu conhecimento (e da sua ignorância, se possível...)<br />“A simplicidade consiste em subtrair o óbvio e acrescentar o significativo.”<br />(John Maeda)<br />Quando em dúvida, erre pela simplicidade.<br />@leandronet<br />
  45. 45. Referências<br />Pesquise no Google por:<br /><ul><li>“Neal Ford” + “EvolutionaryArchitecture”
  46. 46. “Martin Fowler” + Design + Enterprise
  47. 47. Software metrics + NDepend</li></ul>http://reverb.leandrodaniel.com<br />http://voidpodcast.com<br />http://www.ndepend.com<br />
  48. 48. Lembrete:<br />Keynotesobre EvolutionaryArchitecture<br />
  49. 49. Obrigado! :)<br />@leandronet<br />contato@leandrodaniel.com<br />http://reverb.leandrodaniel.com<br />

×