TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

28
Entendendo a Arquitetura Evolucionária Leandro Daniel @leandronet Florianópolis

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 of TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

Page 1: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

Entendendo aArquitetura Evolucionária

Leandro Daniel@leandronet

Florianópolis

Page 2: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

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...

Page 3: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

http://voidpodcast.com

Page 4: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

Existe diferença?

Page 5: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária
Page 6: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária
Page 7: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

@leandronet#TDC2011

Arquitetura

Implementação

Design

Mudanças na arquitetura são caras!

Page 8: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

@leandronet#TDC2011

Arquitetura é aquela coisa que é difícil de mudar depois.

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

Page 9: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária
Page 10: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

Arquitetura e o desenvolvimento de Software

Page 11: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

#TDC2011 @leandronet

Espectro do Design

Waterfallclássico

BDUF

SomeDUF

DesignEmergente

Agile

XGH

Page 12: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

Arquitetura Evolucionária e Design Emergente

#Simples

#Agile

#Flexível

#Foco do cliente

#Iterativa

#Adaptativa

#YAGNI

#TDC2011 @leandronet

Page 13: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

"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

Page 14: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

Manter as coisas como estão, exige trabalho!

Sim, a entropia existe em software...

#TDC2011 @leandronet

Page 15: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária
Page 16: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

Quanto mais tempo você adiar suas decisões...

...Mais contextualizadas elas serão!

@leandronet#TDC2011

Page 17: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

Práxis da Arquitetura Evolucionária

Page 18: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

Dívida técnica sempre é uma vilã?

#TDC2011 @leandronet

...Depende!

Fuuuuuuu!!! OMG!!

Page 19: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

#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

Page 20: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

Complexidade Essencial

Complexidade Acidental

#TDC2011 @leandronet

Page 21: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

#TDC2011 @leandronet

Padrões idiomáticos no Design de Software

Métrica 1 Métrica 2Padrão

Idiomático

Page 22: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

#TDC2011 @leandronet

Tornado o Refactoring inteligente

R1

R2

R3 Propri

edade

Colet

iva

Page 23: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

#TDC2011 @leandronet

Evolucionário ≠ Caótico

Page 24: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

É 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

Page 25: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

Toda e qualquer atividade dentro do desenvolvimento de software é importante.

Pense sempre em flexibilidade.

Não lute contra as “mudanças”.

@leandronet

Page 26: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

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

Page 27: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

Referências

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

http://reverb.leandrodaniel.com

http://elemarjr.net

http://voidpodcast.com

Page 28: TDC 2011 (Florianópolis) - Entendendo a Arquitetura Evolucionária

Obrigado! :)

http://reverb.leandrodaniel.com

@leandronet

[email protected]