SlideShare une entreprise Scribd logo
1  sur  26
Globalcode – Open4education
Trilha – Arquitetura .NET
Globalcode – Open4education
Eric Lemes
Arquiteto
Desenvolvedor
Blogueiro (http://ericlemes.com)
Participante eventual do Void Podcast (http://voidpodcast.com)
Contribuidor open-source eventual (Jenkins,
MSBuildCodeMetrics, FluentCodeMetrics,
MSBuildCommunityTasks e outros)
@eric_lemes | ericlemes.com | linkedin.com/in/ericlemes | ericlemes@gmail.com
Globalcode – Open4education
A influência dos processos de
desenvolvimento na arquitetura
Globalcode – Open4education
Por que este tema?
Quando discutimos arquitetura, pensamos…
Sydney opera house
Globalcode – Open4education
Por que este tema?
E voltamos para nosso dia-a-dia…
Globalcode – Open4education
É mais fácil jogar fora e
fazer de novo?
Globalcode – Open4education
Fluxo de caixa de um investimento
Por que o time to market é
tão importante?
Ponto de
maior prejuízo
Início da
Receita
Break even point
(ponto de equilíbrio)
Globalcode – Open4education
Fluxo de caixa de uma arquitetura deteriorando
Por que o time to market é
tão importante?
Ponto de
maior prejuízo
Início da
Receita
Break even point
(ponto de equilíbrio)
Despesas > Receitas
Globalcode – Open4education
Fluxo de caixa de uma aplicação sendo reescrita
Por que o time to market é
tão importante?
Ponto de
maior prejuízo
Início da
Receita
Break even point
(ponto de equilíbrio)
Despesas > Receitas
Início reescrita
Break evenNovo prejuízo
Tempo de vida de duas aplicações simultaneamente
sem qualquer evolução funcional
Retorno da nova aplicação
(se você sobreviver até lá!)
Globalcode – Open4education
Reescrever uma aplicação é um
gigantesco projeto WATERFALL
Globalcode – Open4education
Outros mitos e lendas sobre
reescrever aplicações
“Não faremos novas funcionalidades no sistema velho,
somente no novo…”
A pressão comercial ou do cliente interno será mais forte
Pressões por demandas regulatórias
“Como não teremos o custo de desenvolver na arquitetura
ruim, seremos mais rápidos…”
Toda nova funcionalidade escrita no sistema velho será uma mudança não prevista
Há o custo de migrar toda a base de clientes para a nova aplicação
Pessoas serão realocadas para resolver crises na aplicação em produção, que
atualmente sustenta a empresa
Globalcode – Open4education
Se reescrever não é a
saída, qual é a solução?
Design smells: Sintomas de um software que está apodrecendo
[UncleBob (2008)]
Globalcode – Open4education
Se reescrever não é a
saída, qual é a solução?
Qual é o processo de desenvolvimento usado nos legados?
Globalcode – Open4education
Se reescrever não é a
saída, qual é a solução?
Existe correlação entre processo e design smells?
Globalcode – Open4education
Se reescrever não é a
saída, qual é a solução?
Existe correlação entre processo e design smells?
Globalcode – Open4education
Se reescrever não é a
saída, qual é a solução?
Existe correlação entre processo e design smells?
Globalcode – Open4education
Se reescrever não é a
saída, qual é a solução?
Existe correlação entre processo e design smells?
Globalcode – Open4education
Se reescrever não é a
saída, qual é a solução?
Existe correlação entre processo e design smells?
Globalcode – Open4education
Se reescrever não é a
saída, qual é a solução?
Existe correlação entre processo e design smells?
Globalcode – Open4education
Se reescrever não é a
saída, qual é a solução?
Se fosse começar do zero, quais processos usaria?
[UncleBob (2008)] [Schwaber e Sutterland (2013)] [Beck(1999)] [Aniche(2012)]
Globalcode – Open4education
Por que você não implementa estes processos no seu legado?
Se reescrever não é a
saída, qual é a solução?
ISSO É LOUCURA! IMPOSSÍVEL! MINHA APLICAÇÃO NUNCA
VAI TER UM BUILD AUTOMATIZADO!
“Insanidade é continuar fazendo
sempre a mesma coisa e esperar
resultados diferentes”
Albert Einstein
Globalcode – Open4education
Se reescrever não é a
saída, qual é a solução?
Mas com todos esses processos, não vou ficar menos produtivo?
Tempo
[UncleBob (2008)]
Globalcode – Open4education
Por onde começar?
Script de build
Acompanhamento
de métricas
Integração
contínua
Controle de
versão
Automação
do Deploy
Testes unitários
Testes de
aceitação
Testes sempre
passando
Build sempre
compilável
Política de
versionamento
Script de deploy
Entregas
incrementais
Rastreabilidade
fonte/binários
• Disclaimer #1: O slide é uma proposta. Não é a única maneira de implementar
• Disclaimer #2: Parte-se do princípio cenário de caos. Em times maduros, é muito interessante os testes
unitários e de aceitação estarem associados à automação do deploy
Globalcode – Open4education
E depois?
Comece a refatorar a aplicação existente, em pequenas iterações
• Ajudam a identificar pontos problemáticos de código, acoplamento e
manutenção
• Diminui o medo de mudar
• Ativo importante para futuras mudanças
• Ajuda a extrair a lógica de domínio e evitar
apodrecimento do código
• Diminui o medo da mudança e
permite feedback rápido
Globalcode – Open4education
Dicas de ferramentas
• MSBuild
• Powershell
• Jenkins
• Go
• TeamCity
• CruiseControl.NET
• Git
• Mercurial
• Subversion
• …
• Visual Studio
• NDepend
• FluentCodeMetrics
• MSBuildCodeMetrics
• SonarQube
Globalcode – Open4education
Referências
[UncleBob (2008)]: Robert C. Martin (2008). Clean code: a handbook of agile software
craftsmanship. 1a edição. Prentice-hall.
[Schwaber e Sutterland (2013): Ken Schwaber e Jeff Sutterland. The Scrum Guide (julho
2013). https://www.scrum.org/Scrum-Guide
[Beck (1999)]: Kent Beck (1999). Extreme programming explained: embrace change.
Addison-wesley
[Aniche (2012)]: Maurício Aniche. Test-driven development: teste e design no mundo real.
Casa do código.
Livros
Blog posts
Reescrever ou não reescrever, eis a questão: http://ericlemes.com/2010/06/01/processos-
reescrever/
Integração contínua: http://ericlemes.com/2014/02/03/integracao-continua/
Gestão de configurações e versões (SCM): http://ericlemes.com/2009/07/02/processos-scm/
Code metrics: http://leandrodaniel.com/index.php/code-metrics-parte-1-metricas-de-codigo-
sao-aliadas-do-arquiteto/
MSBuild in a nutshell: http://ericlemes.com/2012/04/22/msbuild/
The Joel Test: http://www.joelonsoftware.com/articles/fog0000000043.html

Contenu connexe

Tendances

TDD e sua influência no design
TDD e sua influência no designTDD e sua influência no design
TDD e sua influência no designFelipe Benevides
 
Acredite, você pode agilizar feedbacks aplicando Dev Box Testing
Acredite, você pode agilizar feedbacks aplicando Dev Box Testing Acredite, você pode agilizar feedbacks aplicando Dev Box Testing
Acredite, você pode agilizar feedbacks aplicando Dev Box Testing Ariane Izac
 
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
 Lições aprendidas com a Re (escrita |design) de uma aplicação PHP  Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP Domingos Teruel
 
Memorias das trincheiras
Memorias das trincheirasMemorias das trincheiras
Memorias das trincheirasElton Minetto
 
Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Cristiano Schwening
 
TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de TestesTDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de TestesSandro Giacomozzi
 
Notification e result pattern
Notification e result patternNotification e result pattern
Notification e result patternAna Manzan
 
Usando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasUsando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasGabriel Schade Cardoso
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azuretdc-globalcode
 
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...Vinicius Campos Silva
 
TDC2018FLN | Trilha Agile - Transformacao Agil do Ponto de Vista do Dev Team
TDC2018FLN | Trilha Agile - Transformacao Agil do Ponto de Vista do Dev TeamTDC2018FLN | Trilha Agile - Transformacao Agil do Ponto de Vista do Dev Team
TDC2018FLN | Trilha Agile - Transformacao Agil do Ponto de Vista do Dev Teamtdc-globalcode
 
Programação simultânea em pares
Programação simultânea em paresProgramação simultânea em pares
Programação simultânea em paresHerez Moise Kattan
 
Apresentação TDC2015
Apresentação TDC2015Apresentação TDC2015
Apresentação TDC2015Bruno Murawski
 
Uma abordagem às Metodologias Ágeis em Gerência de Projetos
Uma abordagem às Metodologias Ágeis em Gerência de ProjetosUma abordagem às Metodologias Ágeis em Gerência de Projetos
Uma abordagem às Metodologias Ágeis em Gerência de ProjetosGiovani Elísio Silva
 
Do protótipo ao produto: técnicas que fazem sentido
Do protótipo ao produto: técnicas que fazem sentidoDo protótipo ao produto: técnicas que fazem sentido
Do protótipo ao produto: técnicas que fazem sentidoBarbara Wolff Dick
 
O Impacto da adoção de DevOps na qualidade
O Impacto da adoção de DevOps na qualidadeO Impacto da adoção de DevOps na qualidade
O Impacto da adoção de DevOps na qualidadeAntônio Carlos
 
Desenvolvimento Ágil e a mudança de mindset envolvida
Desenvolvimento Ágil e a mudança de mindset envolvidaDesenvolvimento Ágil e a mudança de mindset envolvida
Desenvolvimento Ágil e a mudança de mindset envolvidaCarlos Felippe Cardoso
 
Gestão de Projetos (25/08/2014)
Gestão de Projetos (25/08/2014)Gestão de Projetos (25/08/2014)
Gestão de Projetos (25/08/2014)Alessandro Almeida
 

Tendances (20)

TDD e sua influência no design
TDD e sua influência no designTDD e sua influência no design
TDD e sua influência no design
 
Acredite, você pode agilizar feedbacks aplicando Dev Box Testing
Acredite, você pode agilizar feedbacks aplicando Dev Box Testing Acredite, você pode agilizar feedbacks aplicando Dev Box Testing
Acredite, você pode agilizar feedbacks aplicando Dev Box Testing
 
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
 Lições aprendidas com a Re (escrita |design) de uma aplicação PHP  Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP
 
Memorias das trincheiras
Memorias das trincheirasMemorias das trincheiras
Memorias das trincheiras
 
Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?
 
TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de TestesTDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
TDC Florianópolis 2019. Trilha Java - Arquitetura de Testes
 
Notification e result pattern
Notification e result patternNotification e result pattern
Notification e result pattern
 
Usando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasUsando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em Libras
 
Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
 
Programação Funcional usando F#
Programação Funcional usando F#Programação Funcional usando F#
Programação Funcional usando F#
 
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
 
TDC2018FLN | Trilha Agile - Transformacao Agil do Ponto de Vista do Dev Team
TDC2018FLN | Trilha Agile - Transformacao Agil do Ponto de Vista do Dev TeamTDC2018FLN | Trilha Agile - Transformacao Agil do Ponto de Vista do Dev Team
TDC2018FLN | Trilha Agile - Transformacao Agil do Ponto de Vista do Dev Team
 
Programação simultânea em pares
Programação simultânea em paresProgramação simultânea em pares
Programação simultânea em pares
 
Apresentação TDC2015
Apresentação TDC2015Apresentação TDC2015
Apresentação TDC2015
 
Uma abordagem às Metodologias Ágeis em Gerência de Projetos
Uma abordagem às Metodologias Ágeis em Gerência de ProjetosUma abordagem às Metodologias Ágeis em Gerência de Projetos
Uma abordagem às Metodologias Ágeis em Gerência de Projetos
 
Do protótipo ao produto: técnicas que fazem sentido
Do protótipo ao produto: técnicas que fazem sentidoDo protótipo ao produto: técnicas que fazem sentido
Do protótipo ao produto: técnicas que fazem sentido
 
O Impacto da adoção de DevOps na qualidade
O Impacto da adoção de DevOps na qualidadeO Impacto da adoção de DevOps na qualidade
O Impacto da adoção de DevOps na qualidade
 
Desenvolvimento Ágil e a mudança de mindset envolvida
Desenvolvimento Ágil e a mudança de mindset envolvidaDesenvolvimento Ágil e a mudança de mindset envolvida
Desenvolvimento Ágil e a mudança de mindset envolvida
 
Gestão de Projetos (25/08/2014)
Gestão de Projetos (25/08/2014)Gestão de Projetos (25/08/2014)
Gestão de Projetos (25/08/2014)
 

En vedette (15)

Buono sconto fasfillez2012
Buono sconto fasfillez2012Buono sconto fasfillez2012
Buono sconto fasfillez2012
 
Lng tanks paper_by_dilip_patel
Lng tanks paper_by_dilip_patelLng tanks paper_by_dilip_patel
Lng tanks paper_by_dilip_patel
 
Manual desinstalar java win 7
Manual desinstalar java win 7Manual desinstalar java win 7
Manual desinstalar java win 7
 
Folleto evangelio 5to domingo cuaresma b bn
Folleto evangelio 5to domingo cuaresma b bnFolleto evangelio 5to domingo cuaresma b bn
Folleto evangelio 5to domingo cuaresma b bn
 
Torrent downloaded from demonoid.com
Torrent downloaded from demonoid.comTorrent downloaded from demonoid.com
Torrent downloaded from demonoid.com
 
Testpowerpoint
TestpowerpointTestpowerpoint
Testpowerpoint
 
Prueba
PruebaPrueba
Prueba
 
Capelinha dos milagres
Capelinha dos milagresCapelinha dos milagres
Capelinha dos milagres
 
Guia de aprendizaje 1
Guia de aprendizaje 1Guia de aprendizaje 1
Guia de aprendizaje 1
 
CK_KC_middle.pdf
CK_KC_middle.pdfCK_KC_middle.pdf
CK_KC_middle.pdf
 
Racionalismo y empirismo
Racionalismo y empirismoRacionalismo y empirismo
Racionalismo y empirismo
 
Bob esponja
Bob esponjaBob esponja
Bob esponja
 
CBA / Si vas en moto, tu ets la carrosseria
CBA / Si vas en moto, tu ets la carrosseriaCBA / Si vas en moto, tu ets la carrosseria
CBA / Si vas en moto, tu ets la carrosseria
 
Seccion 4103
Seccion 4103Seccion 4103
Seccion 4103
 
Partenze volsci
Partenze volsciPartenze volsci
Partenze volsci
 

Similaire à TDC 2014 - A influência dos processos de desenvolvimento na arquitetura

Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPRodrigo Dos Santos
 
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0tdc-globalcode
 
Analise e desenvolvimento
Analise e desenvolvimentoAnalise e desenvolvimento
Analise e desenvolvimentoGabriel Moura
 
Dos requisitos à implantação em uma palestra
Dos requisitos à implantação em uma palestraDos requisitos à implantação em uma palestra
Dos requisitos à implantação em uma palestraRafael Chaves
 
Automacao de testes em .NET? Keep Calm and Just do It
Automacao de testes em .NET? Keep Calm and Just do ItAutomacao de testes em .NET? Keep Calm and Just do It
Automacao de testes em .NET? Keep Calm and Just do Ittdc-globalcode
 
Metodologias interativas
Metodologias interativasMetodologias interativas
Metodologias interativasCriciúma Dev
 
Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?Isaac de Souza
 
Automação de testes em projetos ágeis
Automação de testes em projetos ágeisAutomação de testes em projetos ágeis
Automação de testes em projetos ágeisCristiano Caetano
 
Design de Software com ASP.NET MVC
Design de Software com ASP.NET MVCDesign de Software com ASP.NET MVC
Design de Software com ASP.NET MVCWaldyr Felix
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
 
Introdução a Modelagem
Introdução a ModelagemIntrodução a Modelagem
Introdução a ModelagemRodrigo Branas
 
TDC 2012 - Fishbowl conversation sobre Arquitetura
TDC 2012 - Fishbowl conversation sobre ArquiteturaTDC 2012 - Fishbowl conversation sobre Arquitetura
TDC 2012 - Fishbowl conversation sobre ArquiteturaLeandro Daniel
 
Através do espelho
Através do espelhoAtravés do espelho
Através do espelhoAna Coli
 
TDC2016SP - Trilha UX Design
TDC2016SP - Trilha UX DesignTDC2016SP - Trilha UX Design
TDC2016SP - Trilha UX Designtdc-globalcode
 
Introdução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareIntrodução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareDaniel Cukier
 
Metodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareMetodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareEmerson Henrique
 
Metodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareMetodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareLuciano Almeida
 

Similaire à TDC 2014 - A influência dos processos de desenvolvimento na arquitetura (20)

Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
 
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
TDC2018SP | Trilha Arq .Net - Clean Architecture com .NET Core 2.0
 
Clean Architecture com .NET Core
Clean Architecture com .NET CoreClean Architecture com .NET Core
Clean Architecture com .NET Core
 
Analise e desenvolvimento
Analise e desenvolvimentoAnalise e desenvolvimento
Analise e desenvolvimento
 
Dos requisitos à implantação em uma palestra
Dos requisitos à implantação em uma palestraDos requisitos à implantação em uma palestra
Dos requisitos à implantação em uma palestra
 
Automacao de testes em .NET? Keep Calm and Just do It
Automacao de testes em .NET? Keep Calm and Just do ItAutomacao de testes em .NET? Keep Calm and Just do It
Automacao de testes em .NET? Keep Calm and Just do It
 
Metodologias interativas
Metodologias interativasMetodologias interativas
Metodologias interativas
 
Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?
 
Automação de testes em projetos ágeis
Automação de testes em projetos ágeisAutomação de testes em projetos ágeis
Automação de testes em projetos ágeis
 
Design de Software com ASP.NET MVC
Design de Software com ASP.NET MVCDesign de Software com ASP.NET MVC
Design de Software com ASP.NET MVC
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
Introdução a Modelagem
Introdução a ModelagemIntrodução a Modelagem
Introdução a Modelagem
 
DevOps - Operação contínua
DevOps - Operação contínuaDevOps - Operação contínua
DevOps - Operação contínua
 
TDC 2012 - Fishbowl conversation sobre Arquitetura
TDC 2012 - Fishbowl conversation sobre ArquiteturaTDC 2012 - Fishbowl conversation sobre Arquitetura
TDC 2012 - Fishbowl conversation sobre Arquitetura
 
Através do espelho
Através do espelhoAtravés do espelho
Através do espelho
 
TDC2016SP - Trilha UX Design
TDC2016SP - Trilha UX DesignTDC2016SP - Trilha UX Design
TDC2016SP - Trilha UX Design
 
2PHP_Metodologia
2PHP_Metodologia2PHP_Metodologia
2PHP_Metodologia
 
Introdução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de SoftwareIntrodução a Métodos Ágeis de Desenvolvimento de Software
Introdução a Métodos Ágeis de Desenvolvimento de Software
 
Metodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareMetodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de Software
 
Metodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de SoftwareMetodologias Ágeis de Desenvolvimento de Software
Metodologias Ágeis de Desenvolvimento de Software
 

TDC 2014 - A influência dos processos de desenvolvimento na arquitetura

  • 2. Globalcode – Open4education Eric Lemes Arquiteto Desenvolvedor Blogueiro (http://ericlemes.com) Participante eventual do Void Podcast (http://voidpodcast.com) Contribuidor open-source eventual (Jenkins, MSBuildCodeMetrics, FluentCodeMetrics, MSBuildCommunityTasks e outros) @eric_lemes | ericlemes.com | linkedin.com/in/ericlemes | ericlemes@gmail.com
  • 3. Globalcode – Open4education A influência dos processos de desenvolvimento na arquitetura
  • 4. Globalcode – Open4education Por que este tema? Quando discutimos arquitetura, pensamos… Sydney opera house
  • 5. Globalcode – Open4education Por que este tema? E voltamos para nosso dia-a-dia…
  • 6. Globalcode – Open4education É mais fácil jogar fora e fazer de novo?
  • 7. Globalcode – Open4education Fluxo de caixa de um investimento Por que o time to market é tão importante? Ponto de maior prejuízo Início da Receita Break even point (ponto de equilíbrio)
  • 8. Globalcode – Open4education Fluxo de caixa de uma arquitetura deteriorando Por que o time to market é tão importante? Ponto de maior prejuízo Início da Receita Break even point (ponto de equilíbrio) Despesas > Receitas
  • 9. Globalcode – Open4education Fluxo de caixa de uma aplicação sendo reescrita Por que o time to market é tão importante? Ponto de maior prejuízo Início da Receita Break even point (ponto de equilíbrio) Despesas > Receitas Início reescrita Break evenNovo prejuízo Tempo de vida de duas aplicações simultaneamente sem qualquer evolução funcional Retorno da nova aplicação (se você sobreviver até lá!)
  • 10. Globalcode – Open4education Reescrever uma aplicação é um gigantesco projeto WATERFALL
  • 11. Globalcode – Open4education Outros mitos e lendas sobre reescrever aplicações “Não faremos novas funcionalidades no sistema velho, somente no novo…” A pressão comercial ou do cliente interno será mais forte Pressões por demandas regulatórias “Como não teremos o custo de desenvolver na arquitetura ruim, seremos mais rápidos…” Toda nova funcionalidade escrita no sistema velho será uma mudança não prevista Há o custo de migrar toda a base de clientes para a nova aplicação Pessoas serão realocadas para resolver crises na aplicação em produção, que atualmente sustenta a empresa
  • 12. Globalcode – Open4education Se reescrever não é a saída, qual é a solução? Design smells: Sintomas de um software que está apodrecendo [UncleBob (2008)]
  • 13. Globalcode – Open4education Se reescrever não é a saída, qual é a solução? Qual é o processo de desenvolvimento usado nos legados?
  • 14. Globalcode – Open4education Se reescrever não é a saída, qual é a solução? Existe correlação entre processo e design smells?
  • 15. Globalcode – Open4education Se reescrever não é a saída, qual é a solução? Existe correlação entre processo e design smells?
  • 16. Globalcode – Open4education Se reescrever não é a saída, qual é a solução? Existe correlação entre processo e design smells?
  • 17. Globalcode – Open4education Se reescrever não é a saída, qual é a solução? Existe correlação entre processo e design smells?
  • 18. Globalcode – Open4education Se reescrever não é a saída, qual é a solução? Existe correlação entre processo e design smells?
  • 19. Globalcode – Open4education Se reescrever não é a saída, qual é a solução? Existe correlação entre processo e design smells?
  • 20. Globalcode – Open4education Se reescrever não é a saída, qual é a solução? Se fosse começar do zero, quais processos usaria? [UncleBob (2008)] [Schwaber e Sutterland (2013)] [Beck(1999)] [Aniche(2012)]
  • 21. Globalcode – Open4education Por que você não implementa estes processos no seu legado? Se reescrever não é a saída, qual é a solução? ISSO É LOUCURA! IMPOSSÍVEL! MINHA APLICAÇÃO NUNCA VAI TER UM BUILD AUTOMATIZADO! “Insanidade é continuar fazendo sempre a mesma coisa e esperar resultados diferentes” Albert Einstein
  • 22. Globalcode – Open4education Se reescrever não é a saída, qual é a solução? Mas com todos esses processos, não vou ficar menos produtivo? Tempo [UncleBob (2008)]
  • 23. Globalcode – Open4education Por onde começar? Script de build Acompanhamento de métricas Integração contínua Controle de versão Automação do Deploy Testes unitários Testes de aceitação Testes sempre passando Build sempre compilável Política de versionamento Script de deploy Entregas incrementais Rastreabilidade fonte/binários • Disclaimer #1: O slide é uma proposta. Não é a única maneira de implementar • Disclaimer #2: Parte-se do princípio cenário de caos. Em times maduros, é muito interessante os testes unitários e de aceitação estarem associados à automação do deploy
  • 24. Globalcode – Open4education E depois? Comece a refatorar a aplicação existente, em pequenas iterações • Ajudam a identificar pontos problemáticos de código, acoplamento e manutenção • Diminui o medo de mudar • Ativo importante para futuras mudanças • Ajuda a extrair a lógica de domínio e evitar apodrecimento do código • Diminui o medo da mudança e permite feedback rápido
  • 25. Globalcode – Open4education Dicas de ferramentas • MSBuild • Powershell • Jenkins • Go • TeamCity • CruiseControl.NET • Git • Mercurial • Subversion • … • Visual Studio • NDepend • FluentCodeMetrics • MSBuildCodeMetrics • SonarQube
  • 26. Globalcode – Open4education Referências [UncleBob (2008)]: Robert C. Martin (2008). Clean code: a handbook of agile software craftsmanship. 1a edição. Prentice-hall. [Schwaber e Sutterland (2013): Ken Schwaber e Jeff Sutterland. The Scrum Guide (julho 2013). https://www.scrum.org/Scrum-Guide [Beck (1999)]: Kent Beck (1999). Extreme programming explained: embrace change. Addison-wesley [Aniche (2012)]: Maurício Aniche. Test-driven development: teste e design no mundo real. Casa do código. Livros Blog posts Reescrever ou não reescrever, eis a questão: http://ericlemes.com/2010/06/01/processos- reescrever/ Integração contínua: http://ericlemes.com/2014/02/03/integracao-continua/ Gestão de configurações e versões (SCM): http://ericlemes.com/2009/07/02/processos-scm/ Code metrics: http://leandrodaniel.com/index.php/code-metrics-parte-1-metricas-de-codigo- sao-aliadas-do-arquiteto/ MSBuild in a nutshell: http://ericlemes.com/2012/04/22/msbuild/ The Joel Test: http://www.joelonsoftware.com/articles/fog0000000043.html