desenvolvendo software com qualidade e agilidade
DESCRIPTION
Apresentação de técnicas, processos e ferramentas para a obtenção de maior qualidade e agilidade no desenvolvimento de projetos de software.TRANSCRIPT
![Page 1: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/1.jpg)
1
Desenvolvendo software com qualidade e agilidade
Diogo Augusto Pereira
![Page 2: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/2.jpg)
Tópicos
2
• DevOps
• Continuous Integration
• Continuous Delivery
• Peer review
• Git-flow
• SonarQube
• Métricas e indicadores
![Page 3: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/3.jpg)
A realidade…
3
![Page 4: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/4.jpg)
Alguns desafios existentes...
• Setup de ambientes de desenvolvimento e testes.
• Realização de deploys ao longo do projeto.
• Execução de testes de regressão.
• Qualidade e padronização de código.
• Entregas rápidas e assertivas.
4
![Page 5: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/5.jpg)
Alguns a pontos a considerar...
• Não existe uma solução para todos os problemas.
• É preciso avaliar as prioridades de cada projeto.
• Experiência da equipe.
• Urgência dos problemas.
• Deve ser um processo de melhoria contínua.
• Processos internos, tecnologias adotadas pela empresa, etc.
5
![Page 6: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/6.jpg)
DevOps
6
![Page 7: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/7.jpg)
DevOps
•Abrange desenvolvimento de software, operações e serviços de TI.
• Explora a comunicação, colaboração e integração entre as equipes de TI.
•Proporciona entrega de software, teste de qualidade, desenvolvimento, manutenção de release.
•Garante um gerenciamento de releases mais eficaz, com automação de processos e maior flexibilidade.
7
![Page 8: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/8.jpg)
DevOps e métodos ágeis
8
![Page 9: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/9.jpg)
DevOps
• Automação de builds:
• Jenkins, Maven, Bamboo, TFS, RTC
• Gerenciamento de configuração:
• Puppet, Chef
• Migração de schemas de banco de dados:
• Flyway
• Provisionamento de ambientes:
• Vagrant, Docker
9
![Page 10: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/10.jpg)
CI (Continuous Integration)
• Execução contínua de builds e testes unitários.
• Integração constante da versão de desenvolvimento de um produto.
• Pode ocorrer em momentos programados ou a cada commit.
• Garante a estabilidade e saúde do projeto.
10
![Page 11: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/11.jpg)
CI (Continuous Integration)
• Controle de versão de código.
• Servidor de build.
• Framework de testes unitários.
11
![Page 12: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/12.jpg)
CD (Continuous Delivery)
• Entrega contínua e automatizada de versões do software.
• Garante velocidade e consistência dos processos.
• Permite releases a cada commit, feature, etc.
• A automação de testes é fundamental: código, funcionais, performance, etc.
12
![Page 13: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/13.jpg)
CD (Continuous Delivery)
• Controle de versão com processo de branches.
• Servidor de builds e deploys.
• Framework de testes unitários.
13
![Page 14: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/14.jpg)
CD (Continuous Delivery)
• Gerenciamento de configuração.
• Provisionamento de ambiente.
• Migração de schemas.
• Framework de testes funcionais.
14
![Page 15: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/15.jpg)
CI & CD
15
![Page 16: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/16.jpg)
Peer review
• Processo de revisão em pares.
• Revisões rigorosas podem reduzir até 90% de bugs.
• O custo das revisões é menor que o custo dos testes que seriam necessários para encontrar os mesmos erros.
16
![Page 17: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/17.jpg)
Peer review
Taxa de detecção de defeitos por tipo de inspeção:
• 25% em testes unitários
• 35% em testes funcionais
• 45% em testes de integração
• 55% a 60% em revisões técnicas (código, padrões, arquitetura, etc.)
Fonte: Code Complete, A Practical Handbook of Software Construction - Steve McConnell
17
![Page 18: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/18.jpg)
Peer review
• Revisões de código não são úteis apenas para encontrar defeitos.
• É um modo de divulgar informações sobre boas práticas de programação, refactorings, etc.
• É uma ferramenta de ensino também!
• É possível aprender e ensinar fazendo peer reviews.
18
![Page 19: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/19.jpg)
Pull Requests / Peer review
• Code review ou submissão de código para revisão.
• Código somente é integrado após revisão.
• Ferramentas que podem ser usadas:
19
![Page 20: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/20.jpg)
Git-flow
• Estratégia de branches e gerenciamento de releases.
• Possui biblioteca de sub-comandos git.
• Ferramenta SourceTree compatível com o processo.
• Referência: http://nvie.com/files/Git-branching-model.pdf
20
![Page 21: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/21.jpg)
Git-flow Branches
• Master: versão de produção.
• Develop: branch de integração.
• Feature: branches de desenvolvimento.
• Release: branches de estabilização de releases.
• Hotfix: branches de correções de erros em produção.
21
![Page 22: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/22.jpg)
Git-flow Workflow
22
![Page 23: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/23.jpg)
SonarQube
• Plataforma open source para inspeção de qualidade de código.
• Suporta 20+ linguagens (algumas pagas).
• Históricos e relatórios de métricas:
23
![Page 24: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/24.jpg)
SonarQube
24
![Page 25: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/25.jpg)
SonarQube
25
![Page 26: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/26.jpg)
SonarQube
26
![Page 27: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/27.jpg)
SonarQube
27
![Page 28: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/28.jpg)
Métricas e indicadores
28
Indicador Meta% cobertura de testes unitários
> 75%
% conformidade regras (Sonar)
> 95%
% código duplicado < 5%
![Page 29: Desenvolvendo software com qualidade e agilidade](https://reader031.vdocuments.net/reader031/viewer/2022020717/558c891ed8b42a074b8b45b5/html5/thumbnails/29.jpg)
Dúvidas
29