SlideShare uma empresa Scribd logo
1 de 30
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

Mais conteúdo relacionado

Mais procurados

Qualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saberQualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saberKamilla Queiroz Xavier
 
DevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeDevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeKamilla Queiroz Xavier
 
Tech talk clean architecture and_pyramid_test
Tech talk clean architecture and_pyramid_testTech talk clean architecture and_pyramid_test
Tech talk clean architecture and_pyramid_testVictor Yuri Alves Tripeno
 
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...iMasters
 
Análise Estática de Código
Análise Estática de CódigoAnálise Estática de Código
Análise Estática de CódigoRicardo Terra
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliverySamanta Cicilia
 
Final Project (2013): Test-Driven Development applied on web applications
Final Project (2013): Test-Driven Development applied on web applicationsFinal Project (2013): Test-Driven Development applied on web applications
Final Project (2013): Test-Driven Development applied on web applicationsLuiz Henrique
 
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...Rafael Kanaoka
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
 
Processo de Teste de Software
Processo de Teste de SoftwareProcesso de Teste de Software
Processo de Teste de Softwarewtmrio
 
Pipelines para CI/CD com kubernetes - Entregue valor ao cliente
Pipelines para CI/CD com kubernetes - Entregue valor ao clientePipelines para CI/CD com kubernetes - Entregue valor ao cliente
Pipelines para CI/CD com kubernetes - Entregue valor ao clienteCarlos Santana
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes AutomatizadosSamanta Cicilia
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaFabrício Campos
 
Papéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwarePapéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwareCamilo Ribeiro
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraTaís Dall'Oca
 
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.
SEMINFO 2014 -  Teste de software, uma área, uma carreira, um novo perfil.SEMINFO 2014 -  Teste de software, uma área, uma carreira, um novo perfil.
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.João Clineu - CTFL, CSM, CSD
 

Mais procurados (20)

Qualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saberQualidade e Teste de Software - O que preciso saber
Qualidade e Teste de Software - O que preciso saber
 
DevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a QualidadeDevQA - Da zona de conforto ao comprometimento com a Qualidade
DevQA - Da zona de conforto ao comprometimento com a Qualidade
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Tech talk clean architecture and_pyramid_test
Tech talk clean architecture and_pyramid_testTech talk clean architecture and_pyramid_test
Tech talk clean architecture and_pyramid_test
 
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
InterCon 2017 - Indo além dos testes de classes com BDD (Behavior-Driven Deve...
 
Teste de Aceitação: problemas, desafios e abordagens
Teste de Aceitação: problemas, desafios e abordagensTeste de Aceitação: problemas, desafios e abordagens
Teste de Aceitação: problemas, desafios e abordagens
 
Automação de Testes - How to do It Right
Automação de Testes - How to do It RightAutomação de Testes - How to do It Right
Automação de Testes - How to do It Right
 
Análise Estática de Código
Análise Estática de CódigoAnálise Estática de Código
Análise Estática de Código
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
 
Final Project (2013): Test-Driven Development applied on web applications
Final Project (2013): Test-Driven Development applied on web applicationsFinal Project (2013): Test-Driven Development applied on web applications
Final Project (2013): Test-Driven Development applied on web applications
 
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
[Portfólio Acadêmico] [FIT] Mapas de navegação, lista de tarefas e fluxograma...
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
 
Overview de QA
Overview de QA Overview de QA
Overview de QA
 
Processo de Teste de Software
Processo de Teste de SoftwareProcesso de Teste de Software
Processo de Teste de Software
 
Pipelines para CI/CD com kubernetes - Entregue valor ao cliente
Pipelines para CI/CD com kubernetes - Entregue valor ao clientePipelines para CI/CD com kubernetes - Entregue valor ao cliente
Pipelines para CI/CD com kubernetes - Entregue valor ao cliente
 
[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados[DevOps Carioca] Testes Automatizados
[DevOps Carioca] Testes Automatizados
 
Introdução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem práticaIntrodução ao Teste de Software - Uma abordagem prática
Introdução ao Teste de Software - Uma abordagem prática
 
Papéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de SoftwarePapéis em Teste e Qualidade de Software
Papéis em Teste e Qualidade de Software
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreira
 
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.
SEMINFO 2014 -  Teste de software, uma área, uma carreira, um novo perfil.SEMINFO 2014 -  Teste de software, uma área, uma carreira, um novo perfil.
SEMINFO 2014 - Teste de software, uma área, uma carreira, um novo perfil.
 

Destaque

Introdução, instalação e configuração do SonarQube
Introdução, instalação e configuração do SonarQubeIntrodução, instalação e configuração do SonarQube
Introdução, instalação e configuração do SonarQubeDenis Santos
 
Revisão por pares: Como funciona (?) e nossas pesquisas no tema
Revisão por pares: Como funciona (?) e nossas pesquisas no temaRevisão por pares: Como funciona (?) e nossas pesquisas no tema
Revisão por pares: Como funciona (?) e nossas pesquisas no temaVinícius M. Kern
 
Cleaner-Code-CentralIT-2015
Cleaner-Code-CentralIT-2015Cleaner-Code-CentralIT-2015
Cleaner-Code-CentralIT-2015Valdemar Júnior
 
Agility, Business Value and the 11 Axis Of Software Quality
Agility, Business Value and the 11 Axis Of Software QualityAgility, Business Value and the 11 Axis Of Software Quality
Agility, Business Value and the 11 Axis Of Software QualitySchalk Cronjé
 
Métricas de software utilizando sonar qube
Métricas de software utilizando sonar qubeMétricas de software utilizando sonar qube
Métricas de software utilizando sonar qubeRobson Bittencourt
 
Sonarqube
SonarqubeSonarqube
SonarqubeCDS
 
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu SoftwareDevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu SoftwareAndré Dias
 
Java Source Code Analysis using SonarQube
Java Source Code Analysis using SonarQubeJava Source Code Analysis using SonarQube
Java Source Code Analysis using SonarQubeAngelin R
 
Verificação, Validação e Teste de Software
Verificação, Validação e Teste de SoftwareVerificação, Validação e Teste de Software
Verificação, Validação e Teste de SoftwareCamilo Almendra
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geralpaulo peres
 

Destaque (11)

Introdução, instalação e configuração do SonarQube
Introdução, instalação e configuração do SonarQubeIntrodução, instalação e configuração do SonarQube
Introdução, instalação e configuração do SonarQube
 
Revisão por pares: Como funciona (?) e nossas pesquisas no tema
Revisão por pares: Como funciona (?) e nossas pesquisas no temaRevisão por pares: Como funciona (?) e nossas pesquisas no tema
Revisão por pares: Como funciona (?) e nossas pesquisas no tema
 
Cleaner-Code-CentralIT-2015
Cleaner-Code-CentralIT-2015Cleaner-Code-CentralIT-2015
Cleaner-Code-CentralIT-2015
 
Agility, Business Value and the 11 Axis Of Software Quality
Agility, Business Value and the 11 Axis Of Software QualityAgility, Business Value and the 11 Axis Of Software Quality
Agility, Business Value and the 11 Axis Of Software Quality
 
Métricas de software utilizando sonar qube
Métricas de software utilizando sonar qubeMétricas de software utilizando sonar qube
Métricas de software utilizando sonar qube
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu SoftwareDevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
 
Java Source Code Analysis using SonarQube
Java Source Code Analysis using SonarQubeJava Source Code Analysis using SonarQube
Java Source Code Analysis using SonarQube
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
Verificação, Validação e Teste de Software
Verificação, Validação e Teste de SoftwareVerificação, Validação e Teste de Software
Verificação, Validação e Teste de Software
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geral
 

Semelhante a Desenvolvendo software com qualidade e agilidade

Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxRoberto Nunes
 
QA-2023-qualityassuranceequipe-teste_v3.pptx
QA-2023-qualityassuranceequipe-teste_v3.pptxQA-2023-qualityassuranceequipe-teste_v3.pptx
QA-2023-qualityassuranceequipe-teste_v3.pptxMaryanaFeijo
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixCris Fidelix
 
Engenharia de Software: A ponte para um código sustentável
Engenharia de Software: A ponte para um código sustentávelEngenharia de Software: A ponte para um código sustentável
Engenharia de Software: A ponte para um código sustentávelFernando Pontes
 
Estratégias e Técnicas de Testes - Parte1
Estratégias e Técnicas de Testes - Parte1Estratégias e Técnicas de Testes - Parte1
Estratégias e Técnicas de Testes - Parte1Lorena Caldas
 
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software Cloves da Rocha
 
Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Elaine Cecília Gatto
 
Qualidade de Software
Qualidade de SoftwareQualidade de Software
Qualidade de SoftwareJoão Rolim
 
SonarQube
SonarQubeSonarQube
SonarQubeCDS
 
Aula - Modelos de Processos de Desenvolvimento de Software / Mobile App
Aula - Modelos de Processos de Desenvolvimento de Software / Mobile AppAula - Modelos de Processos de Desenvolvimento de Software / Mobile App
Aula - Modelos de Processos de Desenvolvimento de Software / Mobile AppCloves da Rocha
 
Gerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptxGerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptxRoberto Nunes
 
Áreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de SoftwareÁreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de SoftwareElaine Cecília Gatto
 

Semelhante a Desenvolvendo software com qualidade e agilidade (20)

Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
QA-2023-qualityassuranceequipe-teste_v3.pptx
QA-2023-qualityassuranceequipe-teste_v3.pptxQA-2023-qualityassuranceequipe-teste_v3.pptx
QA-2023-qualityassuranceequipe-teste_v3.pptx
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
 
Engenharia de Software: A ponte para um código sustentável
Engenharia de Software: A ponte para um código sustentávelEngenharia de Software: A ponte para um código sustentável
Engenharia de Software: A ponte para um código sustentável
 
Estratégias e Técnicas de Testes - Parte1
Estratégias e Técnicas de Testes - Parte1Estratégias e Técnicas de Testes - Parte1
Estratégias e Técnicas de Testes - Parte1
 
Continuous Deployment
Continuous DeploymentContinuous Deployment
Continuous Deployment
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Aula - Teste de Software
Aula - Teste de SoftwareAula - Teste de Software
Aula - Teste de Software
 
Aula 2 - Processos de Software
Aula 2 - Processos de SoftwareAula 2 - Processos de Software
Aula 2 - Processos de Software
 
SAPO Session: Continuous Integration
SAPO Session: Continuous IntegrationSAPO Session: Continuous Integration
SAPO Session: Continuous Integration
 
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
Aula Modelos de Processos Tradicionais para Desenvolvimento de Software
 
ES4.ppt
ES4.pptES4.ppt
ES4.ppt
 
Qualidade do Software
Qualidade do SoftwareQualidade do Software
Qualidade do Software
 
Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1Modelos de Processo de Software Parte 1
Modelos de Processo de Software Parte 1
 
Qualidade de Software
Qualidade de SoftwareQualidade de Software
Qualidade de Software
 
SonarQube
SonarQubeSonarQube
SonarQube
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Aula - Modelos de Processos de Desenvolvimento de Software / Mobile App
Aula - Modelos de Processos de Desenvolvimento de Software / Mobile AppAula - Modelos de Processos de Desenvolvimento de Software / Mobile App
Aula - Modelos de Processos de Desenvolvimento de Software / Mobile App
 
Gerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptxGerenciamento da Qualidade de Software 3.pptx
Gerenciamento da Qualidade de Software 3.pptx
 
Áreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de SoftwareÁreas de Conhecimento da Engenharia de Software
Áreas de Conhecimento da Engenharia de Software
 

Desenvolvendo software com qualidade e agilidade

  • 1. 1 Desenvolvendo software com qualidade e agilidade Diogo Augusto Pereira
  • 2. Tópicos 2 • DevOps • Continuous Integration • Continuous Delivery • Peer review • Git-flow • SonarQube • Métricas e indicadores
  • 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 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
  • 7. 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
  • 8. DevOps e métodos ágeis 8
  • 9. 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
  • 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 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 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
  • 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
  • 23. 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
  • 28. Métricas e indicadores 28 Indicador Meta % cobertura de testes unitários > 75% % conformidade regras (Sonar) > 95% % código duplicado < 5%