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.
Arquitetura (evolucionária) <br />de Software e o Arquiteto<br />Leandro Daniel<br />@leandronet<br />
Leandro Daniel<br />@leandronet<br />Comunidade<br />.net Magazine<br />Podcaster<br />Desenvolvimento de software<br />Vi...
http://voidpodcast.com<br />
Objetivos<br />Refletir sobre o desenvolvimento de software<br />Entender a importância da arquitetura<br />Apresentar uma...
Refletindo sobre o desenvolvimento de software<br />
Com o que o desenvolvimento de software se parece?<br />
Engenharia... É tudo igual?<br />
“-Ficou ótima a ponte! <br />Dá pra mudar ela de lugar?”<br />
É possível morar em um <br />prédio inacabado?<br />
É possível construir um avião em pleno voo?<br />
Complicar a execução de tarefas simples parece besteira?<br />
Desenvolver software se parece mais com isso:<br />by Fred Brooks<br />–Mythical Man-Month, The: Essays on Software Engine...
@leandronet<br />Arquitetura existe, sempre! Mesmo que não seja pensada!<br />Mas... O que é <br />arquitetura afinal?<br />
@leandronet<br />Arquitetura<br />Implementação<br />Design<br />
@leandronet<br />Arquitetura é aquela coisaque é difícil de mudar depois.<br />Por essa razão, deve existir o mínimo possí...
<ul><li>Conjuntodas decisõesmais importantes
Decisões com altocusto de reversão
Componentes– Papéis – Relacionamentos</li></ul>Gentilmente copiado do @elemarjr =P<br />
“organização fundamental de um sistema incorporada em seus componentes, suas relações entre si e entre o ambiente e os pri...
Existe diferença?<br />@leandronet<br />
Papéis do Arquiteto<br />SOA Architect<br />Data Architect<br /><papel aqui> Architect<br />
Preocupações relevantes durante o processo de definição de uma arquitetura<br />(segundo o TOGAF)<br />
<Intermission><br />
Apresentando: Um código C#!<br />
Essaéumaabstração do código (by NDepend)<br />Assembly<br />Classe<br />Método<br />
c<br />
Qual abordagem você utilizaria para construir esse software?<br /></Intermission><br />
Entendendo a importância da arquitetura de software<br />
Espectro do Design<br />Waterfall<br />clássico<br />Some<br />DUF<br />Agile<br />XGH<br />Design<br />Emergente<br />BDU...
Arquitetura Evolucionária e Design Emergente<br />@leandronet<br />#Simples<br />#Adaptativa<br />#Foco do cliente<br />#A...
"Nãoexiste nenhumdesignno início. <br />Você começa codificando uma <br />pequenaquantidade de funcionalidades, e vai acre...
Sim, a entropia existe em software...<br />Manter as coisas como estão, <br />exige trabalho!<br />@leandronet<br />
Quanto mais tempo você adiar suas decisões...<br />...Mais contextualizadas elas serão!<br />@leandronet<br />
<Lembrando><br />Qual abordagem você utilizaria para construir esse software?<br /></Lembrando><br />
Práxis da Arquitetura Evolucionária<br />
@leandronet<br />
Dívida Técnica<br />“Obrigação que uma organização de software incorre quando escolhe um design ou um tipo de construção q...
Dívida técnica sempre é uma vilã?<br />@leandronet<br />Fuuuuuuu!!!<br />Depende!<br />OMG!!<br />
@leandronet<br />Quadrante da dívida técnica<br />“Nós não temos tempo para design”<br />“Nós vamos lidar com as consequên...
Identificando padrões idiomáticos<br />@leandronet<br />
Para fechar, algumas dicas importantes...<br />@leandronet<br />
É necessário tomar essa decisão agora?<br />Posso adiar essa decisão com segurança?<br />O que posso fazer para tornar ess...
Toda e qualquer atividade dentro do desenvolvimento de software é importante.<br />Pense sempre em flexibilidade.<br />Não...
Tenha ciência do seu conhecimento (e da sua ignorância, se possível...)<br />“A simplicidade consiste em subtrair o óbvio ...
Upcoming SlideShare
Loading in …5
×

FIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto

Palestra realizada na 4ª Semana Integrada / Faculdade Impacta e na 2ª Semana de Tecnologia da IFSP.

  • Be the first to comment

FIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto

  1. 1. Arquitetura (evolucionária) <br />de Software e o Arquiteto<br />Leandro Daniel<br />@leandronet<br />
  2. 2. Leandro Daniel<br />@leandronet<br />Comunidade<br />.net Magazine<br />Podcaster<br />Desenvolvimento de software<br />Visual Studio<br />ClubeDelphi<br />Editor Técnico <br />.NET<br />SQL Server <br />Autor de artigos<br />Business Intelligence<br />Arquiteto de Sistemas<br />Várias certificações...<br />
  3. 3. http://voidpodcast.com<br />
  4. 4. Objetivos<br />Refletir sobre o desenvolvimento de software<br />Entender a importância da arquitetura<br />Apresentar uma abordagem prática de arquitetura<br />
  5. 5. Refletindo sobre o desenvolvimento de software<br />
  6. 6. Com o que o desenvolvimento de software se parece?<br />
  7. 7. Engenharia... É tudo igual?<br />
  8. 8. “-Ficou ótima a ponte! <br />Dá pra mudar ela de lugar?”<br />
  9. 9. É possível morar em um <br />prédio inacabado?<br />
  10. 10. É possível construir um avião em pleno voo?<br />
  11. 11.
  12. 12. Complicar a execução de tarefas simples parece besteira?<br />
  13. 13. Desenvolver software se parece mais com isso:<br />by Fred Brooks<br />–Mythical Man-Month, The: Essays on Software Engineering, <br />Anniversary Edition, Capítulo 1<br />Escrever poemas. :)<br />
  14. 14.
  15. 15.
  16. 16.
  17. 17. @leandronet<br />Arquitetura existe, sempre! Mesmo que não seja pensada!<br />Mas... O que é <br />arquitetura afinal?<br />
  18. 18. @leandronet<br />Arquitetura<br />Implementação<br />Design<br />
  19. 19. @leandronet<br />Arquitetura é aquela coisaque é difícil de mudar depois.<br />Por essa razão, deve existir o mínimo possível dessa coisa.<br />
  20. 20. <ul><li>Conjuntodas decisõesmais importantes
  21. 21. Decisões com altocusto de reversão
  22. 22. Componentes– Papéis – Relacionamentos</li></ul>Gentilmente copiado do @elemarjr =P<br />
  23. 23. “organização fundamental de um sistema incorporada em seus componentes, suas relações entre si e entre o ambiente e os princípios guiando seu design e evolução”<br />IEEE<br />@leandronet<br />
  24. 24. Existe diferença?<br />@leandronet<br />
  25. 25.
  26. 26.
  27. 27.
  28. 28. Papéis do Arquiteto<br />SOA Architect<br />Data Architect<br /><papel aqui> Architect<br />
  29. 29. Preocupações relevantes durante o processo de definição de uma arquitetura<br />(segundo o TOGAF)<br />
  30. 30. <Intermission><br />
  31. 31. Apresentando: Um código C#!<br />
  32. 32. Essaéumaabstração do código (by NDepend)<br />Assembly<br />Classe<br />Método<br />
  33. 33.
  34. 34.
  35. 35. c<br />
  36. 36. Qual abordagem você utilizaria para construir esse software?<br /></Intermission><br />
  37. 37. Entendendo a importância da arquitetura de software<br />
  38. 38. Espectro do Design<br />Waterfall<br />clássico<br />Some<br />DUF<br />Agile<br />XGH<br />Design<br />Emergente<br />BDUF<br />@leandronet<br />
  39. 39. Arquitetura Evolucionária e Design Emergente<br />@leandronet<br />#Simples<br />#Adaptativa<br />#Foco do cliente<br />#Agile<br />#YAGNI<br />#Iterativa<br />#Flexível<br />
  40. 40. "Nãoexiste nenhumdesignno início. <br />Você começa codificando uma <br />pequenaquantidade de funcionalidades, e vai acrescentando outras gradativamente, deixando que o design tomeforma!”<br />Martin Fowler<br />@leandronet<br />Design Emergente<br />
  41. 41. Sim, a entropia existe em software...<br />Manter as coisas como estão, <br />exige trabalho!<br />@leandronet<br />
  42. 42.
  43. 43. Quanto mais tempo você adiar suas decisões...<br />...Mais contextualizadas elas serão!<br />@leandronet<br />
  44. 44. <Lembrando><br />Qual abordagem você utilizaria para construir esse software?<br /></Lembrando><br />
  45. 45. Práxis da Arquitetura Evolucionária<br />
  46. 46. @leandronet<br />
  47. 47. Dívida Técnica<br />“Obrigação que uma organização de software incorre quando escolhe um design ou um tipo de construção que é práticonocurto prazo mas que aumenta a complexidade e é maiscustoso no longoprazo.”<br />Ward Cunningham <br />@leandronet<br />
  48. 48. Dívida técnica sempre é uma vilã?<br />@leandronet<br />Fuuuuuuu!!!<br />Depende!<br />OMG!!<br />
  49. 49. @leandronet<br />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 />
  50. 50. Identificando padrões idiomáticos<br />@leandronet<br />
  51. 51. Para fechar, algumas dicas importantes...<br />@leandronet<br />
  52. 52. É 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 />
  53. 53. 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 />
  54. 54. 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 />
  55. 55. Referências<br />Pesquise no Google por:<br /><ul><li>“Neal Ford” + “EvolutionaryArchitecture”
  56. 56. “Martin Fowler” + Design + Enterprise</li></ul>http://reverb.leandrodaniel.com<br />http://voidpodcast.com <br />
  57. 57. Obrigado! :)<br />@leandronet<br />contato@leandrodaniel.com<br />http://reverb.leandrodaniel.com<br />

×