View
1.879
Download
0
Category
Preview:
Citation preview
Praticando aArquitetura Evolucionária
Leandro Daniel@leandronet
2011
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...
http://voidpodcast.com
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!
Existe diferença?
@leandronet#qconsp
Arquitetura Implementação Design
@leandronet#qconsp
Arquitetura é aquela coisa que é difícil de mudar depois.
Por essa razão, deve existir o mínimo possível dessa coisa.
c<Intermission>
c
Apresentando: Um código C#!
c
Assembly
Classe
Método
Essa é uma abstração do código (by NDepend)
c
c
cc
</Intermission>
Qual abordagem você utilizaria para fazer esse software?
Arquitetura e o desenvolvimento de Software
#qconsp @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
#qconsp @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
#qconsp
Manter as coisas como estão, exige trabalho!
Sim, a entropia existe em software...
#qconsp @leandronet
Quanto mais tempo você adiar suas decisões...
...Mais contextualizadas elas serão!
@leandronet#qconsp
Complexidade Essencial
Complexidade Acidental
#qconsp @leandronet
Práxis da Arquitetura Evolucionária
Dívida técnica sempre é uma vilã?
#qconsp @leandronet
Depende!
Fuuuuuuu!!!
OMG!!
#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
#qconsp @leandronet
Métrica 1 Métrica 2 Padrão Idiomático
Identificando padrões idiomáticos
Possibilidades no Visual Studio 2010
#qconsp @leandronet
Possibilidades no NDepend (1 de 2)
Possibilidades no NDepend (2 de 2)
Outras abstrações para visualização de métricas: CodeCity
#qconsp @leandronet
CodeCity by CodeCity
#qconsp @leandronet
JDK visto no CodeCity
#qconsp @leandronet
Existem várias métricas e combinações de uso...
#qconsp @leandronet
LOC
Vamos começar do básico! :)
ILCCLOCM NOC
ABC ...
Usando a matriz de dependência do NDepend
Design Emergente pelas métricas (1 de 5)
#qconsp @leandronet
Design Emergente pelas métricas (2 de 5)
#qconsp @leandronet
Design Emergente pelas métricas (3 de 5)
#qconsp @leandronet
Design Emergente pelas métricas (4 de 5)
#qconsp @leandronet
Design Emergente pelas métricas (5 de 5)
#qconsp @leandronet
Para fechar, algumas dicas importantes...
É 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• Software metrics + NDepend
http://reverb.leandrodaniel.com
http://voidpodcast.com
http://www.ndepend.com
Lembrete:
Keynote sobre Evolutionary Architecture
Obrigado! :)
http://reverb.leandrodaniel.com
@leandronet
contato@leandrodaniel.com
Recommended