tdc 2011 (florianópolis) - entendendo a arquitetura evolucionária
DESCRIPTION
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 discorrerá 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.TRANSCRIPT
Entendendo aArquitetura Evolucionária
Leandro Daniel@leandronet
Florianópolis
Leandro Daniel
Desenvolvimento de softwareAutor de artigos
SQL Server
Consultoria
Editor Técnico Easy .net Magazine
.net Magazine
.NET
Arquitetura de Software
ClubeDelphi
Comunidade
Business Intelligence
@leandronet
Várias certificações...
http://voidpodcast.com
Existe diferença?
@leandronet#TDC2011
Arquitetura
Implementação
Design
Mudanças na arquitetura são caras!
@leandronet#TDC2011
Arquitetura é aquela coisa que é difícil de mudar depois.
Por essa razão, deve existir o mínimo possível dessa coisa.
Arquitetura e o desenvolvimento de Software
#TDC2011 @leandronet
Espectro do Design
Waterfallclássico
BDUF
SomeDUF
DesignEmergente
Agile
XGH
Arquitetura Evolucionária e Design Emergente
#Simples
#Agile
#Flexível
#Foco do cliente
#Iterativa
#Adaptativa
#YAGNI
#TDC2011 @leandronet
"Não existe nenhum design
no início. Você começa
codificando uma
pequena quantidade de
funcionalidades, e vai
acrescentando outras
gradativamente, deixando
que o design tome forma!”
Martin Fowler
@leandronet
Design Emergente
#TDC2011
Manter as coisas como estão, exige trabalho!
Sim, a entropia existe em software...
#TDC2011 @leandronet
Quanto mais tempo você adiar suas decisões...
...Mais contextualizadas elas serão!
@leandronet#TDC2011
Práxis da Arquitetura Evolucionária
Dívida técnica sempre é uma vilã?
#TDC2011 @leandronet
...Depende!
Fuuuuuuu!!! OMG!!
#TDC2011 @leandronet
Quadrante da dívida técnica
“Nós não temos tempo para
design”
“Nós vamos lidar com as
consequências”
“O que são camadas?”
“Agora nós sabemos que
deveríamos ter feito isso”
Irresponsávele
De propósito
Irresponsávele
Sem querer
Prudentee
De propósito
Prudentee
Sem querer
Complexidade Essencial
Complexidade Acidental
#TDC2011 @leandronet
#TDC2011 @leandronet
Padrões idiomáticos no Design de Software
Métrica 1 Métrica 2Padrão
Idiomático
#TDC2011 @leandronet
Tornado o Refactoring inteligente
R1
R2
R3 Propri
edade
Colet
iva
#TDC2011 @leandronet
Evolucionário ≠ Caótico
É 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?
@leandronet
Toda e qualquer atividade dentro do desenvolvimento de software é importante.
Pense sempre em flexibilidade.
Não lute contra as “mudanças”.
@leandronet
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.
@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