Post on 26-Jun-2015
description
1
Desenvolvendo software com qualidade e agilidade
Diogo Augusto Pereira
Tópicos
2
• DevOps
• Continuous Integration
• Continuous Delivery
• Peer review
• Git-flow
• SonarQube
• Métricas e indicadores
A realidade…
3
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
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
DevOps
6
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
DevOps e métodos ágeis
8
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
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
CI (Continuous Integration)
• Controle de versão de código.
• Servidor de build.
• Framework de testes unitários.
11
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
CD (Continuous Delivery)
• Controle de versão com processo de branches.
• Servidor de builds e deploys.
• Framework de testes unitários.
13
CD (Continuous Delivery)
• Gerenciamento de configuração.
• Provisionamento de ambiente.
• Migração de schemas.
• Framework de testes funcionais.
14
CI & CD
15
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
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
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
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
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
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
Git-flow Workflow
22
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
SonarQube
24
SonarQube
25
SonarQube
26
SonarQube
27
Métricas e indicadores
28
Indicador Meta% cobertura de testes unitários
> 75%
% conformidade regras (Sonar)
> 95%
% código duplicado < 5%
Dúvidas
29
Diogo Augusto Pereira
E-mails:dapereira@stefanini.comdiogoap82@gmail.com
http://br.linkedin.com/in/diogoap82