DNAD 2011 - Examinando a Arquitetura Evolucionária

1,973 views

Published on

A arquitetura de software pode ser definida de uma única vez durante o desenvolvimento de um software: mas essa não é uma boa ideia. Nessa sessão, o palestrante discorre sobre o tema, trazendo experiências próprias e reflexões no intuito de instigar os participantes a pensarem na necessidade de utilizar uma abordagem evolucionária no desenvolvimento de software. Desmistificando inclusive a ideia de que a arquitetura por si só é uma concepção complexa e rebuscada.

Published in: Technology
1 Comment
2 Likes
Statistics
Notes
No Downloads
Views
Total views
1,973
On SlideShare
0
From Embeds
0
Number of Embeds
824
Actions
Shares
0
Downloads
17
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

DNAD 2011 - Examinando a Arquitetura Evolucionária

  1. 1. #DNAD 2011 Examinando aArquitetura Evolucionária
  2. 2. Leandro Daniel @leandronet .net Magazine ComunidadeConsultoria Autor de artigos Desenvolvimento de software Editor Técnico Easy .net Magazine .NET SQL Server ClubeDelphi Business Intelligence Arquitetura de Software
  3. 3. Agenda Refletir Conceituar Exemplos Entender Contexto
  4. 4. Disclaimer
  5. 5. Somos todos humildes, não é verdade? :)
  6. 6. BAD ARCHITECTURE,WRONG PROGRAMMING LANGUAGE, HORRIBLE CODE FORMATTING! IMHO
  7. 7. Existe diferença? Conceituar Arquitetura Arquiteto Design “Projetista” Desenvolvedor
  8. 8. Código é um dos melhores amigosdo desenvolvedor de software
  9. 9. Quadro branco é um dos melhores amigosdo arquiteto de software
  10. 10. ETL Data Integration FTP SOA EAI/ESB Transaction Data Stores (TDS/OLTP) Master Data Store Data Architecture Operational Data Store Data Mart Data Warehouse Transactional Reporting Design Patterns Business Operational Reporting InteligenceArchitectural Patterns Analytical Reporting Master data Master Data Hub management Dimensional Data Modeling Data Modeling E-R Data Modeling
  11. 11. Arquitetura é aquela coisa que é difícil de mudar depois. Por essa razão, deve existir o mínimo possível dessa coisa.#DNAD11 @leandronet
  12. 12. Implementação Design Arquitetura Mudanças na arquitetura são caras!#DNAD11 @leandronet
  13. 13. O que é arquitetura evolucionária? Contexto Evolucionária?... Emergente?...
  14. 14. Espectro do Design de SoftwareWaterfall Someclássico DUF Agile BDUF Design XGH Emergente#DNAD11 @leandronet
  15. 15. Arquitetura Evolucionária e Design Emergente #Simples #Adaptativa #Foco no #Agile Cliente #YAGNI #Flexível #IterativaDesign ágil não tenta ignorar design no início de um projeto ou fase. Ele tenta fazer o mínimopossível no início do processo, quando você sabe menos sobre a verdadeira natureza doproblema.
  16. 16. Entropia do SoftwareEntropia é uma função de estado que cresce naturalmente durante processos naturais. Ou seja,naturalmente, ela aumenta. Isso significa que, para manter o nível de energia, você precisarácontinuar transformando trabalho.Manter as coisas como estão, exige trabalho. Ivar Jacobson Isaac Asimov
  17. 17. Quando um programa é modificado, sua complexidade aumentará, a menos que alguém trabalhe ativamente contra isso.
  18. 18. Quanto mais tempo você adiar suas decisões...  Tempo  ... Mais contextualizadas elas serão!#DNAD11 @leandronet
  19. 19. Design Emergente “Theres no design at the beginning. You begin by coding a small amount of functionality, adding more functionality, and letting the design shift and shape!” Martin Fowler#DNAD11 @leandronet
  20. 20. Prática Entender How to...
  21. 21. Complexidade Essencial Complexidade Acidental#DNAD11 @leandronet
  22. 22. Padrões idiomáticos no Design de Software PadrãoMétrica 1 Métrica 2 Idiomático#DNAD11 @leandronet
  23. 23. Tornando o Refactoring inteligente Propriedade coletiva R1 R2 R3#DNAD11 @leandronet
  24. 24. Praxis do design de software Design Planejado Design Evolucionário#DNAD11 @leandronet
  25. 25. Evolucionário ≠ Caótico#DNAD11 @leandronet
  26. 26. Importância do conhecimento Aprendiz Trainee Incompetência Competência Consciente Consciente Iniciante Especialista Incompetência Competência Inconsciente Inconsciente#DNAD11 @leandronet by Scott B. Parry
  27. 27. Processando... Refletir
  28. 28. É necessário tomar essa decisão agora? Posso adiar essa decisão com segurança? O que posso fazer para tornar essa decisão reversível?#DNAD11 @leandronet
  29. 29. Toda e qualquer atividade dentro do desenvolvimento de software é importante. Tenha ciência do seu conhecimento (e da sua ignorância, se possível...) “A simplicidade consiste em subtrair o óbvio e acrescentar o significativo” (John Maeda) Quando em dúvida, erre pela simplicidade.#DNAD11 @leandronet
  30. 30. Quanto mais tempo você adiar suas decisões, mais contextualizadas elas serão! Pense sempre em flexibilidade. Não lute contra as “mudanças”. Não existe bala de prata!#DNAD11 @leandronet
  31. 31. ReferênciasPesquise no Google por: • “Neal Ford” + “Evolutionary Architecture” • "Martin Fowler" + Design + Enterprisehttp://reverb.leandrodaniel.comhttp://elemarjr.nethttp://voidpodcast.com
  32. 32. Obrigado! :)@leandronetcontato@leandrodaniel.comhttp://reverb.leandrodaniel.com

×