Upload
leandro-daniel
View
1.596
Download
1
Embed Size (px)
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 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.
Citation preview
Examinando a
Arquitetura Evolucionária
#DNAD 2011
Leandro Daniel
Desenvolvimento de software Autor de artigos
SQL Server
Consultoria
Editor Técnico Easy .net Magazine
.net Magazine
.NET
Arquitetura de Software
ClubeDelphi
Comunidade
Business Intelligence
@leandronet
Agenda
Contexto
Entender
Conceituar Exemplos
Refletir
Disclaimer
Somos todos humildes,
não é verdade?
:)
BAD ARCHITECTURE,
WRONG PROGRAMMING
LANGUAGE,
HORRIBLE CODE
FORMATTING!
IMHO
Existe diferença?
Arquitetura
Arquiteto
Design
“Projetista”
Desenvolvedor
Conceituar
Código é um dos
melhores amigos
do desenvolvedor de
software
Quadro branco é um dos
melhores amigos
do arquiteto de software
Dat
a In
tegr
atio
n
SOA
ETL
FTP
EAI/
ESB
Dat
a A
rch
ite
ctu
re
Tran
sact
ion
Dat
a St
ore
s (T
DS/
OLT
P)
Mas
ter
Dat
a St
ore
Op
era
tio
nal
Dat
a St
ore
Dat
a M
art
Dat
a W
are
ho
use
Bu
sin
ess
In
telig
en
ce
Tran
sact
ion
al R
ep
ort
ing
Op
era
tio
nal
Re
po
rtin
g
An
alyt
ical
Re
po
rtin
g
Mas
ter
dat
a m
anag
em
en
t M
aste
r D
ata
Hu
b
Dat
a M
od
elin
g
Dim
en
sio
nal
Dat
a M
od
elin
g
E-R
Dat
a M
od
elin
g
Design Patterns
Architectural Patterns
Arquitetura é aquela coisa
que é difícil de mudar depois.
Por essa razão, deve existir o
mínimo possível dessa coisa.
#DNAD11 @leandronet
#DNAD11 @leandronet
Arquitetura
Design
Implementação
Mudanças na arquitetura são caras!
O que é arquitetura evolucionária?
Evolucionária?...
Emergente?...
Contexto
#DNAD11 @leandronet
Espectro do Design de Software
Waterfall clássico
BDUF
Some DUF
Design Emergente
Agile
XGH
#Simples
Arquitetura Evolucionária e
Design Emergente
#Flexível
#Agile
#Iterativa
#Adaptativa
#YAGNI
#Foco no
Cliente
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
Ivar Jacobson Isaac Asimov
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.
Quando um programa é modificado, sua complexidade
aumentará, a menos que alguém trabalhe
ativamente contra isso.
#DNAD11 @leandronet
Quanto mais tempo você adiar
suas decisões...
... Mais contextualizadas elas serão!
Tempo
“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
Design Emergente
Prática
How to...
Entender
#DNAD11 @leandronet
Complexidade
Essencial
Complexidade
Acidental
#DNAD11 @leandronet
Padrões idiomáticos no Design de Software
Métrica 1 Métrica 2 Padrão
Idiomático
#DNAD11 @leandronet
Tornando o Refactoring inteligente
R1
R2
R3
Pro
pri
ed
ad
e c
ole
tiv
a
Praxis do design de software
Design Planejado Design
Evolucionário
#DNAD11 @leandronet
#DNAD11 @leandronet
Evolucionário ≠ Caótico
#DNAD11 @leandronet
Importância do conhecimento
Aprendiz
Incompetência
Consciente
Trainee
Competência
Consciente
Iniciante
Incompetência
Inconsciente
Especialista
Competência
Inconsciente
by Scott B. Parry
Processando... Refletir
É necessário tomar essa decisão agora?
#DNAD11 @leandronet
Posso adiar essa decisão com segurança?
O que posso fazer para tornar essa
decisão reversível?
Toda e qualquer atividade dentro do
desenvolvimento de software é importante.
Quando em dúvida, erre pela simplicidade.
#DNAD11 @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)
Quanto mais tempo você adiar
suas decisões, mais contextualizadas elas
serão!
Não existe bala de prata!
#DNAD11 @leandronet
Pense sempre em flexibilidade.
Não lute contra as “mudanças”.
Referências
Pesquise no Google por:
• “Neal Ford” + “Evolutionary Architecture”
• "Martin Fowler" + Design + Enterprise
http://reverb.leandrodaniel.com
http://elemarjr.net
http://voidpodcast.com