DNAD 2011 - Examinando a Arquitetura Evolucionária

  • 1,542 views
Uploaded 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 …

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.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
1,542
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
16
Comments
1
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. #DNAD 2011 Examinando aArquitetura Evolucionária
  • 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. Agenda Refletir Conceituar Exemplos Entender Contexto
  • 4. Disclaimer
  • 5. Somos todos humildes, não é verdade? :)
  • 6. BAD ARCHITECTURE,WRONG PROGRAMMING LANGUAGE, HORRIBLE CODE FORMATTING! IMHO
  • 7. Existe diferença? Conceituar Arquitetura Arquiteto Design “Projetista” Desenvolvedor
  • 8. Código é um dos melhores amigosdo desenvolvedor de software
  • 9. Quadro branco é um dos melhores amigosdo arquiteto de software
  • 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. 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. Implementação Design Arquitetura Mudanças na arquitetura são caras!#DNAD11 @leandronet
  • 13. O que é arquitetura evolucionária? Contexto Evolucionária?... Emergente?...
  • 14. Espectro do Design de SoftwareWaterfall Someclássico DUF Agile BDUF Design XGH Emergente#DNAD11 @leandronet
  • 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. 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. Quando um programa é modificado, sua complexidade aumentará, a menos que alguém trabalhe ativamente contra isso.
  • 18. Quanto mais tempo você adiar suas decisões...  Tempo  ... Mais contextualizadas elas serão!#DNAD11 @leandronet
  • 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. Prática Entender How to...
  • 21. Complexidade Essencial Complexidade Acidental#DNAD11 @leandronet
  • 22. Padrões idiomáticos no Design de Software PadrãoMétrica 1 Métrica 2 Idiomático#DNAD11 @leandronet
  • 23. Tornando o Refactoring inteligente Propriedade coletiva R1 R2 R3#DNAD11 @leandronet
  • 24. Praxis do design de software Design Planejado Design Evolucionário#DNAD11 @leandronet
  • 25. Evolucionário ≠ Caótico#DNAD11 @leandronet
  • 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. Processando... Refletir
  • 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. 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. 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. ReferênciasPesquise no Google por: • “Neal Ford” + “Evolutionary Architecture” • "Martin Fowler" + Design + Enterprisehttp://reverb.leandrodaniel.comhttp://elemarjr.nethttp://voidpodcast.com
  • 32. Obrigado! :)@leandronetcontato@leandrodaniel.comhttp://reverb.leandrodaniel.com