SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
#DNAD 2011




      Examinando a
Arquitetura Evolucionária
Leandro Daniel                                     @leandronet


              .net Magazine                                   Comunidade
Consultoria                                                                Autor de artigos
                               Desenvolvimento de software
          Editor Técnico                        Easy .net Magazine                   .NET
                              SQL Server                             ClubeDelphi
     Business Intelligence
                                           Arquitetura de Software
Agenda



                                          Refletir

     Conceituar                Exemplos

                    Entender

         Contexto
Disclaimer
Somos todos humildes,
   não é verdade?
         :)
BAD ARCHITECTURE,
WRONG PROGRAMMING
     LANGUAGE,
   HORRIBLE CODE
    FORMATTING!




                     IMHO
Existe diferença?               Conceituar




      Arquitetura
       Arquiteto
                       Design
                     “Projetista”
                    Desenvolvedor
Código é um dos
 melhores amigos
do desenvolvedor de
     software
Quadro branco é um dos
   melhores amigos
do arquiteto de software
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
                            Inteligence
Architectural Patterns                        Analytical Reporting

                            Master data
                                                Master Data Hub
                            management
                                               Dimensional Data
                                                  Modeling
                          Data Modeling
                                               E-R Data Modeling
Arquitetura é aquela coisa
    que é difícil de mudar depois.

    Por essa razão, deve existir o
    mínimo possível dessa coisa.

#DNAD11                       @leandronet
Implementação

                          Design

                       Arquitetura



     Mudanças na arquitetura são caras!
#DNAD11                              @leandronet
O que é arquitetura evolucionária?   Contexto




        Evolucionária?...
         Emergente?...
Espectro do Design de Software

Waterfall         Some
clássico           DUF               Agile




           BDUF           Design               XGH
                         Emergente


#DNAD11                                      @leandronet
Arquitetura Evolucionária e
                       Design Emergente


       #Simples                                                  #Adaptativa
                                          #Foco no
                      #Agile               Cliente
                                                                              #YAGNI

            #Flexível                                  #Iterativa

Design ágil não tenta ignorar design no início de um projeto ou fase. Ele tenta fazer o mínimo
possível no início do processo, quando você sabe menos sobre a verdadeira natureza do
problema.
Entropia do Software
Entropia é 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
Quando um programa é modificado, sua complexidade
     aumentará, a menos que alguém trabalhe
             ativamente contra isso.
Quanto mais tempo você adiar
                suas decisões...




                    Tempo   

    ... Mais contextualizadas elas serão!

#DNAD11                              @leandronet
Design Emergente

                  “There's 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
Prática               Entender




          How to...
Complexidade
                           Essencial



          Complexidade
            Acidental

#DNAD11                            @leandronet
Padrões idiomáticos no Design de Software




                                    Padrão
Métrica 1        Métrica 2
                                  Idiomático




#DNAD11                           @leandronet
Tornando o Refactoring inteligente




                               Propriedade coletiva
                        R1




                   R2




                        R3



#DNAD11                                               @leandronet
Praxis do design de software



            Design
          Planejado          Design
                          Evolucionário



#DNAD11                              @leandronet
Evolucionário ≠ Caótico




#DNAD11                             @leandronet
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
Processando...   Refletir
É 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
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
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
Referências


Pesquise no Google por:
   • “Neal Ford” + “Evolutionary Architecture”
   • "Martin Fowler" + Design + Enterprise

http://reverb.leandrodaniel.com

http://elemarjr.net

http://voidpodcast.com
Obrigado! :)

@leandronet


contato@leandrodaniel.com


http://reverb.leandrodaniel.com

Mais conteúdo relacionado

Semelhante a Evolucionária e Design Emergente na Arquitetura de Software

TDC 2011 - Arquitetura Evolucionária faz sentido?
TDC 2011 - Arquitetura Evolucionária faz sentido?TDC 2011 - Arquitetura Evolucionária faz sentido?
TDC 2011 - Arquitetura Evolucionária faz sentido?Leandro Daniel
 
TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária
TDC 2011 (Florianópolis) - Entendendo a Arquitetura EvolucionáriaTDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária
TDC 2011 (Florianópolis) - Entendendo a Arquitetura EvolucionáriaLeandro Daniel
 
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquitetoFIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquitetoLeandro Daniel
 
Desenvolvimento Ágil de Software
Desenvolvimento Ágil de SoftwareDesenvolvimento Ágil de Software
Desenvolvimento Ágil de SoftwareMassimus CT
 
O futuro do arquiteto e das arquiteturas Java Enterprise
O futuro do arquiteto e das arquiteturas Java EnterpriseO futuro do arquiteto e das arquiteturas Java Enterprise
O futuro do arquiteto e das arquiteturas Java EnterpriseGlobalcode
 
Reflexões sobre arquitetura de software
Reflexões sobre arquitetura de softwareReflexões sobre arquitetura de software
Reflexões sobre arquitetura de softwareTiago Sciencia
 
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TIDNAD
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven DesignAndré Borgonovo
 
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...Marcio Miyamoto
 
Arquitetura Evolutiva - A retomada do ágil 18 anos depois
Arquitetura Evolutiva - A retomada do ágil 18 anos depoisArquitetura Evolutiva - A retomada do ágil 18 anos depois
Arquitetura Evolutiva - A retomada do ágil 18 anos depoisAndré Paulovich
 
Design de Interação em Produtos Eletrônicos
Design de Interação em Produtos EletrônicosDesign de Interação em Produtos Eletrônicos
Design de Interação em Produtos EletrônicosUTFPR
 
Design de Interação em Produtos Eletrônicos
Design de Interação em Produtos EletrônicosDesign de Interação em Produtos Eletrônicos
Design de Interação em Produtos EletrônicosEdyd B. Junges
 
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...André Paulovich
 
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0tdc-globalcode
 
QConSP 2011 - Praticando a arquitetura evolucionária
QConSP 2011 - Praticando a arquitetura evolucionáriaQConSP 2011 - Praticando a arquitetura evolucionária
QConSP 2011 - Praticando a arquitetura evolucionáriaLeandro Daniel
 
Entendendo Domain-Driven Design
Entendendo Domain-Driven DesignEntendendo Domain-Driven Design
Entendendo Domain-Driven DesignRafael Ponte
 
O papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de softwareO papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de softwareLeonardo Zanivan
 

Semelhante a Evolucionária e Design Emergente na Arquitetura de Software (20)

TDC 2011 - Arquitetura Evolucionária faz sentido?
TDC 2011 - Arquitetura Evolucionária faz sentido?TDC 2011 - Arquitetura Evolucionária faz sentido?
TDC 2011 - Arquitetura Evolucionária faz sentido?
 
TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária
TDC 2011 (Florianópolis) - Entendendo a Arquitetura EvolucionáriaTDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária
TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária
 
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquitetoFIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
FIT e IFSP - Arquitetura (evolucionária) e o papel do arquiteto
 
Desenvolvimento Ágil de Software
Desenvolvimento Ágil de SoftwareDesenvolvimento Ágil de Software
Desenvolvimento Ágil de Software
 
O futuro do arquiteto e das arquiteturas Java Enterprise
O futuro do arquiteto e das arquiteturas Java EnterpriseO futuro do arquiteto e das arquiteturas Java Enterprise
O futuro do arquiteto e das arquiteturas Java Enterprise
 
Reflexões sobre arquitetura de software
Reflexões sobre arquitetura de softwareReflexões sobre arquitetura de software
Reflexões sobre arquitetura de software
 
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
05 - Waldemir Cambiucci - Matriz de habilidades de um arquiteto TI
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
 
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
Desenvolvimento de software de forma rápida e sem bugs - Introdução a TDD e S...
 
Arquitetura Evolutiva - A retomada do ágil 18 anos depois
Arquitetura Evolutiva - A retomada do ágil 18 anos depoisArquitetura Evolutiva - A retomada do ágil 18 anos depois
Arquitetura Evolutiva - A retomada do ágil 18 anos depois
 
Design de Interação em Produtos Eletrônicos
Design de Interação em Produtos EletrônicosDesign de Interação em Produtos Eletrônicos
Design de Interação em Produtos Eletrônicos
 
Design de Interação em Produtos Eletrônicos
Design de Interação em Produtos EletrônicosDesign de Interação em Produtos Eletrônicos
Design de Interação em Produtos Eletrônicos
 
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
 
Arquitetura de Software em Equipes Ágeis
Arquitetura de Software em Equipes ÁgeisArquitetura de Software em Equipes Ágeis
Arquitetura de Software em Equipes Ágeis
 
Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
 
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
 
QConSP 2011 - Praticando a arquitetura evolucionária
QConSP 2011 - Praticando a arquitetura evolucionáriaQConSP 2011 - Praticando a arquitetura evolucionária
QConSP 2011 - Praticando a arquitetura evolucionária
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Entendendo Domain-Driven Design
Entendendo Domain-Driven DesignEntendendo Domain-Driven Design
Entendendo Domain-Driven Design
 
O papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de softwareO papel e a carreira do arquiteto de software
O papel e a carreira do arquiteto de software
 

Evolucionária e Design Emergente na Arquitetura de Software

  • 1. #DNAD 2011 Examinando a Arquitetura Evolucionária
  • 2. Leandro Daniel @leandronet .net Magazine Comunidade Consultoria 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
  • 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 amigos do desenvolvedor de software
  • 9. Quadro branco é um dos melhores amigos do 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 Inteligence Architectural 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 Software Waterfall Some clá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 #Iterativa Design ágil não tenta ignorar design no início de um projeto ou fase. Ele tenta fazer o mínimo possível no início do processo, quando você sabe menos sobre a verdadeira natureza do problema.
  • 16. Entropia do Software Entropia é 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 “There's 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ão Mé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
  • 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ências Pesquise no Google por: • “Neal Ford” + “Evolutionary Architecture” • "Martin Fowler" + Design + Enterprise http://reverb.leandrodaniel.com http://elemarjr.net http://voidpodcast.com