32
Examinando a Arquitetura Evolucionária #DNAD 2011

DNAD 2011 - Examinando a Arquitetura Evolucionária

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

Page 1: DNAD 2011 - Examinando a Arquitetura Evolucionária

Examinando a

Arquitetura Evolucionária

#DNAD 2011

Page 2: DNAD 2011 - Examinando a Arquitetura Evolucionária

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

Page 3: DNAD 2011 - Examinando a Arquitetura Evolucionária

Agenda

Contexto

Entender

Conceituar Exemplos

Refletir

Page 4: DNAD 2011 - Examinando a Arquitetura Evolucionária

Disclaimer

Page 5: DNAD 2011 - Examinando a Arquitetura Evolucionária

Somos todos humildes,

não é verdade?

:)

Page 6: DNAD 2011 - Examinando a Arquitetura Evolucionária

BAD ARCHITECTURE,

WRONG PROGRAMMING

LANGUAGE,

HORRIBLE CODE

FORMATTING!

IMHO

Page 7: DNAD 2011 - Examinando a Arquitetura Evolucionária

Existe diferença?

Arquitetura

Arquiteto

Design

“Projetista”

Desenvolvedor

Conceituar

Page 8: DNAD 2011 - Examinando a Arquitetura Evolucionária

Código é um dos

melhores amigos

do desenvolvedor de

software

Page 9: DNAD 2011 - Examinando a Arquitetura Evolucionária

Quadro branco é um dos

melhores amigos

do arquiteto de software

Page 10: DNAD 2011 - Examinando a Arquitetura Evolucionária

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

Page 11: DNAD 2011 - Examinando a Arquitetura Evolucionária

Arquitetura é aquela coisa

que é difícil de mudar depois.

Por essa razão, deve existir o

mínimo possível dessa coisa.

#DNAD11 @leandronet

Page 12: DNAD 2011 - Examinando a Arquitetura Evolucionária

#DNAD11 @leandronet

Arquitetura

Design

Implementação

Mudanças na arquitetura são caras!

Page 13: DNAD 2011 - Examinando a Arquitetura Evolucionária

O que é arquitetura evolucionária?

Evolucionária?...

Emergente?...

Contexto

Page 14: DNAD 2011 - Examinando a Arquitetura Evolucionária

#DNAD11 @leandronet

Espectro do Design de Software

Waterfall clássico

BDUF

Some DUF

Design Emergente

Agile

XGH

Page 15: DNAD 2011 - Examinando a Arquitetura Evolucionária

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

Page 16: DNAD 2011 - Examinando a Arquitetura Evolucionária

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.

Page 17: DNAD 2011 - Examinando a Arquitetura Evolucionária

Quando um programa é modificado, sua complexidade

aumentará, a menos que alguém trabalhe

ativamente contra isso.

Page 18: DNAD 2011 - Examinando a Arquitetura Evolucionária

#DNAD11 @leandronet

Quanto mais tempo você adiar

suas decisões...

... Mais contextualizadas elas serão!

Tempo

Page 19: DNAD 2011 - Examinando a Arquitetura Evolucionária

“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

Page 20: DNAD 2011 - Examinando a Arquitetura Evolucionária

Prática

How to...

Entender

Page 21: DNAD 2011 - Examinando a Arquitetura Evolucionária

#DNAD11 @leandronet

Complexidade

Essencial

Complexidade

Acidental

Page 22: DNAD 2011 - Examinando a Arquitetura Evolucionária

#DNAD11 @leandronet

Padrões idiomáticos no Design de Software

Métrica 1 Métrica 2 Padrão

Idiomático

Page 23: DNAD 2011 - Examinando a Arquitetura Evolucionária

#DNAD11 @leandronet

Tornando o Refactoring inteligente

R1

R2

R3

Pro

pri

ed

ad

e c

ole

tiv

a

Page 24: DNAD 2011 - Examinando a Arquitetura Evolucionária

Praxis do design de software

Design Planejado Design

Evolucionário

#DNAD11 @leandronet

Page 25: DNAD 2011 - Examinando a Arquitetura Evolucionária

#DNAD11 @leandronet

Evolucionário ≠ Caótico

Page 26: DNAD 2011 - Examinando a Arquitetura Evolucionária

#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

Page 27: DNAD 2011 - Examinando a Arquitetura Evolucionária

Processando... Refletir

Page 28: DNAD 2011 - Examinando a Arquitetura Evolucionária

É 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?

Page 29: DNAD 2011 - Examinando a Arquitetura Evolucionária

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)

Page 30: DNAD 2011 - Examinando a Arquitetura Evolucionária

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

Page 31: DNAD 2011 - Examinando 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 32: DNAD 2011 - Examinando a Arquitetura Evolucionária

Obrigado! :)

http://reverb.leandrodaniel.com

@leandronet

[email protected]