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.com
diogoap82@gmail.com
http://br.linkedin.com/in/diogoap82

Desenvolvendo software com qualidade e agilidade

  • 1.
    1 Desenvolvendo software com qualidadee agilidade Diogo Augusto Pereira
  • 2.
    Tópicos 2 • DevOps • ContinuousIntegration • Continuous Delivery • Peer review • Git-flow • SonarQube • Métricas e indicadores
  • 3.
  • 4.
    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
  • 5.
    Alguns a pontosa 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
  • 6.
  • 7.
    DevOps • Abrange desenvolvimentode 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
  • 8.
  • 9.
    DevOps • Automação debuilds: • 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
  • 10.
    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
  • 11.
    CI (Continuous Integration) •Controle de versão de código. • Servidor de build. • Framework de testes unitários. 11
  • 12.
    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
  • 13.
    CD (Continuous Delivery) •Controle de versão com processo de branches. • Servidor de builds e deploys. • Framework de testes unitários. 13
  • 14.
    CD (Continuous Delivery) •Gerenciamento de configuração. • Provisionamento de ambiente. • Migração de schemas. • Framework de testes funcionais. 14
  • 15.
  • 16.
    Peer review • Processode 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
  • 17.
    Peer review Taxa dedetecçã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
  • 18.
    Peer review • Revisõesde 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
  • 19.
    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
  • 20.
    Git-flow • Estratégia debranches 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
  • 21.
    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
  • 22.
  • 23.
    SonarQube • Plataforma opensource para inspeção de qualidade de código. • Suporta 20+ linguagens (algumas pagas). • Históricos e relatórios de métricas: 23
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
    Métricas e indicadores 28 IndicadorMeta % cobertura de testes unitários > 75% % conformidade regras (Sonar) > 95% % código duplicado < 5%
  • 29.
  • 30.