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

Post on 11-Jun-2015

1.273 views 0 download

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

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

Obrigado! :)

http://reverb.leandrodaniel.com

@leandronet

contato@leandrodaniel.com