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)
programadorpalestrante
paisantista
entusiastaconsultor
etc, etc, etc
Wednesday, September 14, 11
http://viniciusquaiato.comhttp://crafters.com.br
@vquaiato(vinicius quaiato)
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 TIprofissã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
http://viniciusquaiato.comhttp://crafters.com.br
@vquaiato(vinicius quaiato)
Wednesday, September 14, 11
Wednesday, September 14, 11
• http://en.wikipedia.org/wiki/Software_architecture
• 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
M ais
Wednesday, September 14, 11