qconsp 2011 - praticando a arquitetura evolucionária

47
Praticando a Arquitetura Evolucionária Leandro Daniel @leandronet 2011

Upload: leandro-daniel

Post on 25-May-2015

1.877 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: QConSP 2011 - Praticando a arquitetura evolucionária

Praticando aArquitetura Evolucionária

Leandro Daniel@leandronet

2011

Page 2: QConSP 2011 - Praticando a arquitetura evolucionária

Leandro Daniel

Desenvolvimento de software Autor de artigos

SQL Server

ConsultoriaEditor Técnico Easy .net Magazine

.net Magazine

.NET

Arquitetura de Software

ClubeDelphi

Comunidade

Business Intelligence

@leandronet

Várias certificações...

Page 3: QConSP 2011 - Praticando a arquitetura evolucionária

http://voidpodcast.com

Page 4: QConSP 2011 - Praticando a arquitetura evolucionária

Agenda

Contextualizar• Diferenças entre papéis e funções• Diferenciando Arquitetura x Design

Entender• Espectro do Design de Software e Entropia • O que é arquitetura evolucionária

Praticar• Débito técnico• Métricas e outras dicas importantes!

Page 5: QConSP 2011 - Praticando a arquitetura evolucionária

Existe diferença?

Page 6: QConSP 2011 - Praticando a arquitetura evolucionária

@leandronet#qconsp

Arquitetura Implementação Design

Page 7: QConSP 2011 - Praticando a arquitetura evolucionária

@leandronet#qconsp

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

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

Page 8: QConSP 2011 - Praticando a arquitetura evolucionária
Page 9: QConSP 2011 - Praticando a arquitetura evolucionária

c<Intermission>

Page 10: QConSP 2011 - Praticando a arquitetura evolucionária

c

Apresentando: Um código C#!

Page 11: QConSP 2011 - Praticando a arquitetura evolucionária

c

Assembly

Classe

Método

Essa é uma abstração do código (by NDepend)

Page 12: QConSP 2011 - Praticando a arquitetura evolucionária

c

Page 13: QConSP 2011 - Praticando a arquitetura evolucionária

c

Page 14: QConSP 2011 - Praticando a arquitetura evolucionária

cc

Page 15: QConSP 2011 - Praticando a arquitetura evolucionária

</Intermission>

Qual abordagem você utilizaria para fazer esse software?

Page 16: QConSP 2011 - Praticando a arquitetura evolucionária

Arquitetura e o desenvolvimento de Software

Page 17: QConSP 2011 - Praticando a arquitetura evolucionária

#qconsp @leandronet

Espectro do Design

Waterfallclássico

BDUF

SomeDUF

DesignEmergente

Agile

XGH

Page 18: QConSP 2011 - Praticando a arquitetura evolucionária

Arquitetura Evolucionária e Design Emergente

#Simples

#Agile

#Flexível

#Foco do cliente

#Iterativa

#Adaptativa

#YAGNI

#qconsp @leandronet

Page 19: QConSP 2011 - Praticando 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

#qconsp

Page 20: QConSP 2011 - Praticando a arquitetura evolucionária

Manter as coisas como estão, exige trabalho!

Sim, a entropia existe em software...

#qconsp @leandronet

Page 21: QConSP 2011 - Praticando a arquitetura evolucionária
Page 22: QConSP 2011 - Praticando a arquitetura evolucionária

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

...Mais contextualizadas elas serão!

@leandronet#qconsp

Page 23: QConSP 2011 - Praticando a arquitetura evolucionária

Complexidade Essencial

Complexidade Acidental

#qconsp @leandronet

Page 24: QConSP 2011 - Praticando a arquitetura evolucionária

Práxis da Arquitetura Evolucionária

Page 25: QConSP 2011 - Praticando a arquitetura evolucionária

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

#qconsp @leandronet

Depende!

Fuuuuuuu!!!

OMG!!

Page 26: QConSP 2011 - Praticando a arquitetura evolucionária

#qconsp @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 27: QConSP 2011 - Praticando a arquitetura evolucionária

#qconsp @leandronet

Métrica 1 Métrica 2 Padrão Idiomático

Identificando padrões idiomáticos

Page 28: QConSP 2011 - Praticando a arquitetura evolucionária

Possibilidades no Visual Studio 2010

#qconsp @leandronet

Page 29: QConSP 2011 - Praticando a arquitetura evolucionária

Possibilidades no NDepend (1 de 2)

Page 30: QConSP 2011 - Praticando a arquitetura evolucionária

Possibilidades no NDepend (2 de 2)

Page 31: QConSP 2011 - Praticando a arquitetura evolucionária

Outras abstrações para visualização de métricas: CodeCity

#qconsp @leandronet

Page 32: QConSP 2011 - Praticando a arquitetura evolucionária

CodeCity by CodeCity

#qconsp @leandronet

Page 33: QConSP 2011 - Praticando a arquitetura evolucionária

JDK visto no CodeCity

#qconsp @leandronet

Page 34: QConSP 2011 - Praticando a arquitetura evolucionária

Existem várias métricas e combinações de uso...

#qconsp @leandronet

LOC

Vamos começar do básico! :)

ILCCLOCM NOC

ABC ...

Page 35: QConSP 2011 - Praticando a arquitetura evolucionária

Usando a matriz de dependência do NDepend

Page 36: QConSP 2011 - Praticando a arquitetura evolucionária

Design Emergente pelas métricas (1 de 5)

#qconsp @leandronet

Page 37: QConSP 2011 - Praticando a arquitetura evolucionária

Design Emergente pelas métricas (2 de 5)

#qconsp @leandronet

Page 38: QConSP 2011 - Praticando a arquitetura evolucionária

Design Emergente pelas métricas (3 de 5)

#qconsp @leandronet

Page 39: QConSP 2011 - Praticando a arquitetura evolucionária

Design Emergente pelas métricas (4 de 5)

#qconsp @leandronet

Page 40: QConSP 2011 - Praticando a arquitetura evolucionária

Design Emergente pelas métricas (5 de 5)

#qconsp @leandronet

Page 41: QConSP 2011 - Praticando a arquitetura evolucionária

Para fechar, algumas dicas importantes...

Page 42: QConSP 2011 - Praticando 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 43: QConSP 2011 - Praticando 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 44: QConSP 2011 - Praticando 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 45: QConSP 2011 - Praticando a arquitetura evolucionária

Referências

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

http://reverb.leandrodaniel.com

http://voidpodcast.com

http://www.ndepend.com

Page 46: QConSP 2011 - Praticando a arquitetura evolucionária

Lembrete:

Keynote sobre Evolutionary Architecture

Page 47: QConSP 2011 - Praticando a arquitetura evolucionária

Obrigado! :)

http://reverb.leandrodaniel.com

@leandronet

[email protected]