Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

QConSP 2011 - Praticando a arquitetura evolucionária

2 210 vues

Publié le

Publié dans : Technologie
  • Soyez le premier à commenter

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 />

×