SlideShare une entreprise Scribd logo
1  sur  163
Télécharger pour lire hors ligne
Arquitetura de
                           Software
               um pouco sobre arquitetura e o arquiteto




                              Vinicius Quaiato

Wednesday, September 14, 11
Arquitetura de
                           Software
               um pouco sobre arquitetura e o arquiteto


                              Vinicius Quaiato




Wednesday, September 14, 11
@vquaiato
                    (vinicius quaiato)
                              programador
                               palestrante
                                    pai
                                 santista
                                entusiasta
                                consultor
                               etc, etc, etc




Wednesday, September 14, 11
@vquaiato
                      (vinicius quaiato)

    http://viniciusquaiato.com
            http://crafters.com.br


 vinicius.quaiato@gmail.com




Wednesday, September 14, 11
um blog



Wednesday, September 14, 11
um podcast



Wednesday, September 14, 11
uma comunidade



Wednesday, September 14, 11
um(ns) evento



Wednesday, September 14, 11
um(ns) evento



Wednesday, September 14, 11
começando




Wednesday, September 14, 11
fazer software não é
                           fácil



Wednesday, September 14, 11
bons projetos de
             software, reutilizáveis,
              são ainda mais difíceis



Wednesday, September 14, 11
solução spaguetti




Wednesday, September 14, 11
difícil de manter




Wednesday, September 14, 11
difícil de evoluir




Wednesday, September 14, 11
difícil de trabalhar




Wednesday, September 14, 11
e a vida fica triste




Wednesday, September 14, 11
um dos grandes
                         problemas em
                            software


Wednesday, September 14, 11
incrível vontade
                 de sair fazendo


Wednesday, September 14, 11
confiamos muito
                         em nosso
                       conhecimento


Wednesday, September 14, 11
mas nossa visão
                    é limitada


Wednesday, September 14, 11
isso não é um
                              defeito, apenas
                                  um fato


Wednesday, September 14, 11
alguns problemas
                      emergem neste
                         cenário


Wednesday, September 14, 11
há enorme
                              fragilidade


Wednesday, September 14, 11
o software passa a
                   quebrar com
                    frequência


Wednesday, September 14, 11
a menor alteração
                  causa efeitos
                  catastróficos


Wednesday, September 14, 11
<filosofando>



Wednesday, September 14, 11
“                o bater de asas de uma
                  borboleta em Tóquio
                    pode provocar um
                furacão em Nova Iorque



Wednesday, September 14, 11
</filosofando>



Wednesday, September 14, 11
o software não é
                    sólido, não passa
                        confiança


Wednesday, September 14, 11
o time e
                   principalmente o
                   cliente têm medo


Wednesday, September 14, 11
as coisas são
                                confusas


Wednesday, September 14, 11
não existe
                      coerência lógica
                         e/ou física


Wednesday, September 14, 11
gasta-se tempo
                 tentando entender o
                que faz o que(e onde)



Wednesday, September 14, 11
a bagunça não é
                   organizada


Wednesday, September 14, 11
não se sabe o que
                   está em uso e o
                      que é lixo


Wednesday, September 14, 11
<fato>



Wednesday, September 14, 11
em software o que
                não está em uso é
                       lixo


Wednesday, September 14, 11
</fato>



Wednesday, September 14, 11
aquilo que você
               jura fazer X faz Y



Wednesday, September 14, 11
tudo é incerto
                         neste cenário


Wednesday, September 14, 11
corrigir um
                    problema é outro
                        problema


Wednesday, September 14, 11
adicionar uma
                    funcionalidade é
                      um problema


Wednesday, September 14, 11
não há
                 previsibilidade de
                tempo e/ou esforço


Wednesday, September 14, 11
estamos sempre
                                tateando no
                                   escuro


Wednesday, September 14, 11
o que deveria ser
                    simples é muito
                       complexo


Wednesday, September 14, 11
o muito complexo
                  é impossível



Wednesday, September 14, 11
tudo isso somado
               resulta em uma enorme
                falta de flexibilidade




Wednesday, September 14, 11
as bases sobre as quais
                  criamos o software
                    não são sólidas



Wednesday, September 14, 11
mas quais bases?



Wednesday, September 14, 11
é preciso pensar
                        na fundação do
                         nosso sistema


Wednesday, September 14, 11
pensar suas
                                 bases


Wednesday, September 14, 11
compreender
                               estas bases


Wednesday, September 14, 11
organizar o
                                sistema


Wednesday, September 14, 11
trabalhar com
                                abstrações


Wednesday, September 14, 11
separação de
               responsabilidades


Wednesday, September 14, 11
traçar um ‘road
                           map’ do que é
                             necessário


Wednesday, September 14, 11
existem muitas outras
                    características mas
                 podemos dizer que estas
                definem um pouco o que é




Wednesday, September 14, 11
arquitetura de
                            software


Wednesday, September 14, 11
ou de uma
                              maneira mais
                                 formal


Wednesday, September 14, 11
“             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 - IEEE




Wednesday, September 14, 11
ou de uma
                              maneira menos
                                 formal


Wednesday, September 14, 11
“                  arquitetura é
                      aquela coisa que
                       é difícil mudar


Wednesday, September 14, 11
os significados e
                                 definições(de
                              arquitetura) são um
                                pouco nebulosos



Wednesday, September 14, 11
algumas pessoas
                         não acreditam
                         que ela exista


Wednesday, September 14, 11
o fato é que ela
                          sempre está
                            presente


Wednesday, September 14, 11
pode não ter sido
                   definida, ou bem
                definida, mas ela existe




Wednesday, September 14, 11
até mesmo na
                  forma de uma
                péssima arquitetura


Wednesday, September 14, 11
quais benefícios
                 existem em pensar
                  na arquitetura?


Wednesday, September 14, 11
conhecimento



Wednesday, September 14, 11
clareza e
                              organização


Wednesday, September 14, 11
solidez /
                               robustez


Wednesday, September 14, 11
certezas



Wednesday, September 14, 11
firmeza na tomada
                    de decisões e
                cálculo de tradeoffs



Wednesday, September 14, 11
decisões tomadas
                    de forma mais
                       racional


Wednesday, September 14, 11
previsão e
                              mitigação de
                                  riscos


Wednesday, September 14, 11
analisar, gerenciar
                    e planejar
                    mudanças


Wednesday, September 14, 11
mas essa tal
                          arquitetura não
                            cai do céu


Wednesday, September 14, 11
para que ela exista de
                  forma eficiente
               alguém precisa criá-la



Wednesday, September 14, 11
alguém precisa
                          pensar em tudo
                                isso


Wednesday, September 14, 11
arquiteto de
                                software


Wednesday, September 14, 11
<palavra aqui> mais
               mal compreendida
                      em TI
                              profissão, papel, cargo, habilidade, título



Wednesday, September 14, 11
além disso o
                  termo gera algum
                    <palavra aqui>
                              stress, desejo, conflito, rixa



Wednesday, September 14, 11
mas o que é o
                          arquiteto?


Wednesday, September 14, 11
“     o papel arquiteto de TI é
                    resolver um problema
                  definindo um sistema que
                possa ser implmentado usando
                          tecnologia.




Wednesday, September 14, 11
“          um bom arquiteto define sistemas
                 utilizando abstrações e métodos
                  provados para um conjunto de
                tecnologias criando uma solução
                     extensível e manutenível.




Wednesday, September 14, 11
quais
                 conhecimentos um
                  arquiteto possui?


Wednesday, September 14, 11
um bom
                 entendimento do
               domínio do problema



Wednesday, September 14, 11
o problema é
                      específico de um
                         segmento?


Wednesday, September 14, 11
quais desafios um
                segmento possui com
                 relação aos outros?



Wednesday, September 14, 11
perspicácia
                                técnica


Wednesday, September 14, 11
não há como conhecer
                profundamente toda e
                   cada tecnologia



Wednesday, September 14, 11
mas é necessário
               conhecer o propósito
               por detrás de seu uso



Wednesday, September 14, 11
o arquiteto deve
                       entender a quais
                    requisitos a tecnologia
                             atende



Wednesday, September 14, 11
conceitualizar



Wednesday, September 14, 11
comunicar a parte
                  técnica e a não
                      técnica


Wednesday, September 14, 11
capaz de explicar para
                   o time de negócios e o
                           time de
                       desenvolvimento



Wednesday, September 14, 11
mais que explicar:
                  dar visibilidade e
                       clareza


Wednesday, September 14, 11
conhecimento
                               de padrões


Wednesday, September 14, 11
criam um vocabulário
                   e entendimento
                      concisos



Wednesday, September 14, 11
possibilita o uso de
                 soluções provadas
                   para o cenário


Wednesday, September 14, 11
<alerta>



Wednesday, September 14, 11
o uso indiscriminado e
                aleatório de padrões causa
                  doenças graves e pode
                  levar o projeto à morte




Wednesday, September 14, 11
</alerta>



Wednesday, September 14, 11
Wednesday, September 14, 11
quais
                     competências um
                     arquiteto possui?


Wednesday, September 14, 11
liderança



Wednesday, September 14, 11
o arquiteto define
                  a fundação dos
                      sitemas


Wednesday, September 14, 11
possibilita que os outros
               enxerguem o que precisa
                ser feito para atingir o
                        objetivo



Wednesday, September 14, 11
cabe ao arquiteto
                tomadas de decisões e
                assumir estas decisões



Wednesday, September 14, 11
em muitas vezes
                 não são simples


Wednesday, September 14, 11
em muitas vezes
                não são as melhores
                 escolhas técnicas



Wednesday, September 14, 11
visão estratégica



Wednesday, September 14, 11
deve conseguir
                 observar as coisas
                  como um todo


Wednesday, September 14, 11
transformar o todo
                em partes simples
                   de alcançar


Wednesday, September 14, 11
fazer escolhas que
                  maximizem ROI



Wednesday, September 14, 11
gestão de
                relações humanas


Wednesday, September 14, 11
lida com pessoas
                     de negócio não
                    somente internas


Wednesday, September 14, 11
precisa compreender
                implicações políticas
                  para as decisões



Wednesday, September 14, 11
deve ser
                              acessível


Wednesday, September 14, 11
boa
                              comunicação


Wednesday, September 14, 11
deve ser capaz de ouvir
                 as áreas de negócio,
                 gerenciais e técnicas




Wednesday, September 14, 11
deve ser capaz de explicar
                   modelos para a área de
                 negócios, as necessidades à
                gerenência e a arquitetura aos
                           técnicos




Wednesday, September 14, 11
deve saber utilizar um
                vocabulário próprio
                para cada situação



Wednesday, September 14, 11
todos os
                              arquitetos são
                                  iguas?


Wednesday, September 14, 11
não



Wednesday, September 14, 11
arquitetos podem
                  atuar com: <cargo
                        aqui>
                              CIO, gerentes, analistas de negócio,
                                       programadores



Wednesday, September 14, 11
Wednesday, September 14, 11
enterprise
                               architect


Wednesday, September 14, 11
garante que os
                 investimentos de TI estão
                alinhados com a estratégia
                  de negócios da empresa




Wednesday, September 14, 11
implementa a
                   visão e estratégia
                     do CIO em TI


Wednesday, September 14, 11
solution
                              architect


Wednesday, September 14, 11
implementa
                      programas
                 estratégicos de TI


Wednesday, September 14, 11
possui conhecimentos
                técnicos em diversas
                     plataformas



Wednesday, September 14, 11
lida com times
                               técnicos e de
                                 negócios


Wednesday, September 14, 11
technical
                              architect


Wednesday, September 14, 11
profundo conhecimento
                   técnico em uma
                tecnologia/plataforma




Wednesday, September 14, 11
conhece e entende
                seus pontos fortes
                     e fracos


Wednesday, September 14, 11
define a melhor
                arquitetura possível com
                    a tecnologia em
                         questão



Wednesday, September 14, 11
mas de fato
                  precisamos de um
                      arquiteto?


Wednesday, September 14, 11
alguém precisa
                assumir este papel



Wednesday, September 14, 11
ainda que formalmente
                     ninguém o tenha
                    assumido, alguém o
                        desempenha



Wednesday, September 14, 11
talvez não seja alguém
                        com todas as
                    características de um
                          arquiteto



Wednesday, September 14, 11
muitas vezes não são
                necessárias todas
               estas características



Wednesday, September 14, 11
em muitos cenários um
                  líder técnico com bom
                conhecimento do domínio
                     assume este papel




Wednesday, September 14, 11
em alguns cenários o
                papel é compartilhado
                entre membros do time



Wednesday, September 14, 11
é preciso atentar aos
                       pontos que fogem ao
                            domínio do
                       conhecimento técnico



Wednesday, September 14, 11
liderança, relações
               interpessoais, conceitualização,
                comunicação: fogem às linhas
                         de código




Wednesday, September 14, 11
por que
                 programadores não
                gostam de arquitetos?



Wednesday, September 14, 11
experiências
                               frustradas


Wednesday, September 14, 11
arquitetos que não
                possuíam além da
                   parte técnica


Wednesday, September 14, 11
arquitetos
                              tecnicamente
                                defasados


Wednesday, September 14, 11
ocupação de
                       cargo por tempo
                           de casa


Wednesday, September 14, 11
um programador
                  medíocre pode projetar
                      um desejo de
                      “crescimento”



Wednesday, September 14, 11
programadores
                                podem ser
                                 arquitetos


Wednesday, September 14, 11
é preciso compreender
                      que são dois papéis
                       distintos para uma
                         mesma pessoa



Wednesday, September 14, 11
mesmo que se ocupe os
                         dois papéis
                   simultaneamente, eles
                     ainda são distintos



Wednesday, September 14, 11
o papel de arquiteto
                 não é o futuro de
                 um desenvolvedor



Wednesday, September 14, 11
programadores
               brincam com editores
                  de código fonte



Wednesday, September 14, 11
arquitetos brincam
                   com quadros,
                 desenhos, idéias


Wednesday, September 14, 11
@vquaiato
                      (vinicius quaiato)

    http://viniciusquaiato.com
            http://crafters.com.br


 vinicius.quaiato@gmail.com




Wednesday, September 14, 11
Wednesday, September 14, 11
•      http://en.wikipedia.org/wiki/Software_architecture
                                                                                M ais
                   •      http://www.computer.org/portal/web/guest/home

                   •      http://viniciusquaiato.com/blog/efeito-borboleta-e-o-software/

                   •      http://www.ibm.com/developerworks/rational/library/feb06/eeles/

                   •      http://cnx.org/content/m17524/latest/

                   •      http://www.bredemeyer.com/whatis.htm

                   •      http://www.sei.cmu.edu/architecture/

                   •      http://msdn.microsoft.com/en-us/architecture/aa699358

                   •      http://www.opengroup.org/togaf/

                   •      http://www.ieee.org/index.html




Wednesday, September 14, 11

Contenu connexe

Plus de Vinicius Quaiato

Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?Vinicius Quaiato
 
Throughput, escalabilidade e distribuição global com Cosmos DB
Throughput, escalabilidade e distribuição global com Cosmos DBThroughput, escalabilidade e distribuição global com Cosmos DB
Throughput, escalabilidade e distribuição global com Cosmos DBVinicius Quaiato
 
Meetup Delivering Software - Microsoft Build 2017
Meetup Delivering Software - Microsoft Build 2017Meetup Delivering Software - Microsoft Build 2017
Meetup Delivering Software - Microsoft Build 2017Vinicius Quaiato
 
Microsoft loves open source
Microsoft loves open sourceMicrosoft loves open source
Microsoft loves open sourceVinicius Quaiato
 
Testes de A a Z (em 30 minutos)
Testes de A a Z (em 30 minutos)Testes de A a Z (em 30 minutos)
Testes de A a Z (em 30 minutos)Vinicius Quaiato
 
Orientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp LondrinaOrientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp LondrinaVinicius Quaiato
 
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiatoVinicius Quaiato
 
Patterns para Windows Azure e Cloud Computing
Patterns para Windows Azure e Cloud ComputingPatterns para Windows Azure e Cloud Computing
Patterns para Windows Azure e Cloud ComputingVinicius Quaiato
 
Windows Phone 7 & Windows Azure
Windows Phone 7 & Windows AzureWindows Phone 7 & Windows Azure
Windows Phone 7 & Windows AzureVinicius Quaiato
 
Mono - .NET além do Windows
Mono - .NET além do WindowsMono - .NET além do Windows
Mono - .NET além do WindowsVinicius Quaiato
 
Mono - .NET além do Windows
Mono - .NET além do WindowsMono - .NET além do Windows
Mono - .NET além do WindowsVinicius Quaiato
 
YAGNI, KISS e Over Patternization
YAGNI, KISS e Over PatternizationYAGNI, KISS e Over Patternization
YAGNI, KISS e Over PatternizationVinicius Quaiato
 
MSTechDay Lavras - Orientação a Objetos e Princípios Solid
MSTechDay Lavras - Orientação a Objetos e Princípios SolidMSTechDay Lavras - Orientação a Objetos e Princípios Solid
MSTechDay Lavras - Orientação a Objetos e Princípios SolidVinicius Quaiato
 
Orientação a Objetos e Design Patterns
Orientação a Objetos e Design PatternsOrientação a Objetos e Design Patterns
Orientação a Objetos e Design PatternsVinicius Quaiato
 
Unit Testing em .NET - VDD 2011
Unit Testing em .NET - VDD 2011Unit Testing em .NET - VDD 2011
Unit Testing em .NET - VDD 2011Vinicius Quaiato
 

Plus de Vinicius Quaiato (20)

Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?Me interessei por Xamarin, e agora?
Me interessei por Xamarin, e agora?
 
Throughput, escalabilidade e distribuição global com Cosmos DB
Throughput, escalabilidade e distribuição global com Cosmos DBThroughput, escalabilidade e distribuição global com Cosmos DB
Throughput, escalabilidade e distribuição global com Cosmos DB
 
Introduction to Xamarin
Introduction to XamarinIntroduction to Xamarin
Introduction to Xamarin
 
Meetup Delivering Software - Microsoft Build 2017
Meetup Delivering Software - Microsoft Build 2017Meetup Delivering Software - Microsoft Build 2017
Meetup Delivering Software - Microsoft Build 2017
 
Microsoft loves open source
Microsoft loves open sourceMicrosoft loves open source
Microsoft loves open source
 
Testes de A a Z (em 30 minutos)
Testes de A a Z (em 30 minutos)Testes de A a Z (em 30 minutos)
Testes de A a Z (em 30 minutos)
 
Orientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp LondrinaOrientacao a objetos e design patterns - Secomp Londrina
Orientacao a objetos e design patterns - Secomp Londrina
 
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
.Net e arquiteturas modernas - qconsp 2011 - vinicius quaiato
 
Patterns para Windows Azure e Cloud Computing
Patterns para Windows Azure e Cloud ComputingPatterns para Windows Azure e Cloud Computing
Patterns para Windows Azure e Cloud Computing
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Windows Phone 7 & Windows Azure
Windows Phone 7 & Windows AzureWindows Phone 7 & Windows Azure
Windows Phone 7 & Windows Azure
 
Mono - .NET além do Windows
Mono - .NET além do WindowsMono - .NET além do Windows
Mono - .NET além do Windows
 
Mono - .NET além do Windows
Mono - .NET além do WindowsMono - .NET além do Windows
Mono - .NET além do Windows
 
YAGNI, KISS e Over Patternization
YAGNI, KISS e Over PatternizationYAGNI, KISS e Over Patternization
YAGNI, KISS e Over Patternization
 
MSTechDay Lavras - Orientação a Objetos e Princípios Solid
MSTechDay Lavras - Orientação a Objetos e Princípios SolidMSTechDay Lavras - Orientação a Objetos e Princípios Solid
MSTechDay Lavras - Orientação a Objetos e Princípios Solid
 
Orientação a Objetos e Design Patterns
Orientação a Objetos e Design PatternsOrientação a Objetos e Design Patterns
Orientação a Objetos e Design Patterns
 
TDD no ASP.NET MVC
TDD no ASP.NET MVCTDD no ASP.NET MVC
TDD no ASP.NET MVC
 
ASP.NET MVC 3
ASP.NET MVC 3ASP.NET MVC 3
ASP.NET MVC 3
 
Unit Testing em .NET - VDD 2011
Unit Testing em .NET - VDD 2011Unit Testing em .NET - VDD 2011
Unit Testing em .NET - VDD 2011
 
Desvendando ASP.NET MVC
Desvendando ASP.NET MVCDesvendando ASP.NET MVC
Desvendando ASP.NET MVC
 

Arquitetura de Software: entenda os benefícios de pensar na arquitetura