tdc 2014 - a influência dos processos de desenvolvimento na arquitetura
DESCRIPTION
A apresentação discute a relação entre "design smells" e práticas ruins de desenvolvimento, sugerindo uma abordagem para implementar melhores processos e refatorar uma arquitetura já existenteTRANSCRIPT
![Page 1: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/1.jpg)
Globalcode – Open4education
Trilha – Arquitetura .NET
![Page 2: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/2.jpg)
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 | [email protected]
![Page 3: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/3.jpg)
Globalcode – Open4education
A influência dos processos de desenvolvimento na arquitetura
![Page 4: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/4.jpg)
Globalcode – Open4education
Por que este tema?
Quando discutimos arquitetura, pensamos…
Sydney opera house
![Page 5: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/5.jpg)
Globalcode – Open4education
Por que este tema?
E voltamos para nosso dia-a-dia…
![Page 6: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/6.jpg)
Globalcode – Open4education
É mais fácil jogar fora e fazer de novo?
![Page 7: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/7.jpg)
Globalcode – Open4education
Fluxo de caixa de um investimento
Por que o time to market é tão importante?
Ponto de maior prejuízo
Início daReceita
Break even point(ponto de equilíbrio)
![Page 8: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/8.jpg)
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 daReceita
Break even point(ponto de equilíbrio)
Despesas > Receitas
![Page 9: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/9.jpg)
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 daReceita
Break even point(ponto de equilíbrio)
Despesas > ReceitasInício reescrita
Break evenNovo prejuízo
Tempo de vida de duas aplicações simultaneamentesem qualquer evolução funcional
Retorno da nova aplicação(se você sobreviver até lá!)
![Page 10: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/10.jpg)
Globalcode – Open4education
Reescrever uma aplicação é um gigantesco projeto WATERFALL
![Page 11: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/11.jpg)
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
![Page 12: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/12.jpg)
Globalcode – Open4education
Se reescrever não é a saída, qual é a solução?
Design smells: Sintomas de um software que está apodrecendo
[UncleBob (2008)]
![Page 13: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/13.jpg)
Globalcode – Open4education
Se reescrever não é a saída, qual é a solução?
Qual é o processo de desenvolvimento usado nos legados?
![Page 14: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/14.jpg)
Globalcode – Open4education
Se reescrever não é a saída, qual é a solução?
Existe correlação entre processo e design smells?
![Page 15: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/15.jpg)
Globalcode – Open4education
Se reescrever não é a saída, qual é a solução?
Existe correlação entre processo e design smells?
![Page 16: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/16.jpg)
Globalcode – Open4education
Se reescrever não é a saída, qual é a solução?
Existe correlação entre processo e design smells?
![Page 17: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/17.jpg)
Globalcode – Open4education
Se reescrever não é a saída, qual é a solução?
Existe correlação entre processo e design smells?
![Page 18: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/18.jpg)
Globalcode – Open4education
Se reescrever não é a saída, qual é a solução?
Existe correlação entre processo e design smells?
![Page 19: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/19.jpg)
Globalcode – Open4education
Se reescrever não é a saída, qual é a solução?
Existe correlação entre processo e design smells?
![Page 20: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/20.jpg)
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)]
![Page 21: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/21.jpg)
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
![Page 22: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/22.jpg)
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)]
![Page 23: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/23.jpg)
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áriosTestes 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
![Page 24: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/24.jpg)
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
![Page 25: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/25.jpg)
Globalcode – Open4education
Dicas de ferramentas
• MSBuild• Powershell
• Jenkins• Go• TeamCity• CruiseControl.NET
• Git• Mercurial• Subversion• …
• Visual Studio• NDepend• FluentCodeMetrics• MSBuildCodeMetrics• SonarQube
![Page 26: TDC 2014 - A influência dos processos de desenvolvimento na arquitetura](https://reader036.vdocuments.mx/reader036/viewer/2022070303/54969e05b479595b4d8b500c/html5/thumbnails/26.jpg)
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 postsReescrever 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