Você está na página 1de 41

DÊNIO BATISTA BRASILEIRO BEZERRA

ANÁLISE DO IMPACTO DO USO DA
ESTRATÉGIA DE BRANCHING EM DEVOPS

Orientador: Prof. Dr. Vinicius Cardoso Garcia
Coorientador: Prof. José Fernando Carvalho

RECIFE
2017
ROTEIRO
- Introdução
● - Contexto
● - Motivação
● - Objetivos

Fundamentação Teórica

Pesquisa
- - Formulário Online

Análise dos Resultados

Conclusão e Trabalhos Futuros
INTRODUÇÃO
CONTEXTO
- Tecnologia está avançando cada vez mais

os softwares se tornaram essenciais para a
sociedade
Usuários exigindo cada vez mais softwares de qualidade

Indústria de TI buscando qualidade desde o desenvolvimento
até a operação

As práticas utilizadas no desenvolvimento de SW, também
avançaram.
CONTEXTO

Softwares estão tendo que realizar cada vez mais mudanças,
causando problemas durante o desenvolvimento

Grande parte dos problemas tem como causa a falta de trabalho
colaborativo entre o time de desenvolvimento e o time de operações

- Para conseguir fazer a integração entre estes dois times, foi criado
em 2009, o movimento DEVOPS
MOTIVAÇÃO

O advento do Devops trouxe a necessidade de investigar os tipos
de técnicas existentes, e quais impactos são causados a ele.

Branching
OBJETIVOS
- Geral
compreender e analisar conceitos e práticas pertinentes ao uso
da técnica de branching em Devops, especialmente sobre o impacto
causado pelos anti-padrões desta técnica definidos por appleton et. al. no
processo de desenvolvimento de software nas empresas que utilizam
esta prática.
Específicos
- Apresentar os conceitos encontrados na literatura sobre branching
e DevOps

- Averiguar a incidência dos anti-padrões de branching no
desenvolvimento de software

- Identificar os relacionamentos existentes entre a técnica e seus
anti-padrões e a cultura DevOps

- Investigar e analisar o impacto da técnica de branching na cultura
DevOps
FUNDAMENTAÇÃO TEÓRICA
DESENVOLVIMENTO
DE SOFTWARE
“É uma sequência de atividades que leva à produção de
um produto de software.”
(Somerville, 2011)

Modelos Tradicionais

Cascata Espiral Incremental Evolucionário

Muita Documentação
DESENVOLVIMENTO
DE SOFTWARE
“É uma sequência de atividades que leva à produção de
um produto de software.”
(Somerville, 2011)

Modelos Tradicionais

Cascata Espiral Incremental Evolucionário

Lento para mudanças
DESENVOLVIMENTO
ÁGIL
Lentidão dos modelos tradicionais

Surgimento do manifesto ágil

Menos tempo gasto com documentação e planejamento
Primeira lei da Engenharia de Software
Não importa onde você esteja no ciclo de vida do sistema, o sistema mudará
e o desejo de alterá-lo persistirá através de todo o ciclo de vida.
(Pressman, 2006)

Desenvolvimento de Software Mudanças

Confusão
GERÊNCIA DE
CONFIGURAÇÃO

“A arte de coordenar desenvolvimento de software para minimizar
a confusão é chamada de gestão de configuração.”
(Babich, 1986)

Sua ausência torna o desenvolvimento em um caos

Qualidade Prazo de entrega
REPOSITÓRIO

O processo de desenvolvimento de software gera um grande
volume de informações a serem armazenadas.

Para um melhor gerenciamento do repositório é
imprescindível o uso de um sistema de controle de versão,
como o GitHub.
BRANCHING
Permite que o desenvolvimento do software seja feito pelos
integrantes de uma equipe de forma paralela, isolada e independente
das modificações de outros desenvolvedores.

Cópia de certo ponto da linha principal
BRANCHING

(Dantas, 2006)
BRANCHING

● Permite que os desenvolvedores trabalhem em novos recursos
de forma isolada, reduzindo o risco de substituir as mudanças de
outro desenvolvedor.

● Permite aos desenvolvedores executar experimentos, trabalhando
com versões variadas do código-fonte.

● Permite uma recuperação rápida e fácil de falhas.

● Permite o isolamento do código de produção, reduzindo ou
eliminando a confusão ao determinar qual código foi implantado.

.
ANTI-PADRÕES
● Merge Paranóia - É quando se tem medo de realizar o merge, geralmente devido ao
medo das conseqüências.
● Merge Mania - Gasta muito tempo na fusão do código em vez de desenvolvê-lo.
● Big Bang Merge - É quando se tenta juntar várias branchs de uma vez só.
● Never-Ending Merge - Uma operação de merge que nunca termina, pois sempre existe
algo para ser feito o merge
● Wrong-Way Merge - É quando o merge é realizado na branch errada.
● Branch Mania - Branchs são criadas mais do que o necessário.
● Cascading Branches - Os ramos são criados a vários níveis mas nunca voltam a linha
principal do código.
● Mysterious Branches - Branchs são criadas sem necessidade.
● Runaway Branches - A finalidade da branch acaba mudando durante seu
desenvolvimento e perdendo sua importância.
● Volatile Branches - branchs são criadas com arquivos que dependem de outras
branchs que não são estáveis.
● Development Freeze - Outras atividades são paralisadas para ser feito o merge.
● Integration Wall - Em vez de dividir o trabalho, as branchs acabam por tirar a
colaboratividade do time. de desenvolvimento.
● Spaghetti Branching - Mudanças são realizadas entre branchs que não se relacionam

(Appleton et. al., 1998)
Conflito
Desenvolvimento Operações

Desenvolvimento
É responsável por criar novos produtos e aplicações,
adicionar funcionalidades ou corrigir bugs.

Operações
Possui a responsabilidade de cuidar desses produtos e
aplicações em produção, prezando pela estabilidade.
DEVOPS
Surgiu em 2009

Dev Ops

Conjunto de práticas destinadas a reduzir o tempo entre
cometer uma mudança para um sistema e a mudança sendo
colocada em produção normal

Melhorar a integração entre desenvolvedores e o time de
operações
INTEGRAÇÃO CONTÍNUA
Prática essencial para o DevOps

Teve origem na metodologia XP

Cada desenvolvedor deve integrar seu trabalho
frequentemente
Testes são executados a cada mudança

Encontra erros mais rapidamente

reduz o tempo para lançar novas atualizações de software

melhora a qualidade
PROBLEMAS
ENFRENTADOS
Equipes de TI cada vez maiores

Aumento do desenvolvimento em paralelo

Branching
PROBLEMAS
ENFRENTADOS
Falta de colaboração entre o time de desenvolvimento e o de
operações

Desenvolvimento Operações

DevOps
PROBLEMAS
ENFRENTADOS

Branching DevOps
METODOLOGIA
Questionário
- Português
- Divulgado por email, mensagens pessoais e em encontros
presenciais
- 23 questões
- 4 Sessões
- Perguntas pessoais
- Perguntas relacionadas a organização
- Perguntas relacionadas ao time de desenvolvimento
- Perguntas relacionadas ao gerenciamento de configuração

Etapas de pesquisa
- Levantamento do referencial teórico
- Extração dos resultados
- Análise dos resultados
HIPÓTESES DE PESQUISA
- HP01: Times com poucos integrantes e que usam metodologia ágil não usam
branching durante o desenvolvimento.
- HP02: As organizações que possuem a cultura DevOps são as que possuem
menos idade.
- HP03: A maior incidência de anti padrões de branching ocorrem em projetos
que possuem várias branchs no seu desenvolvimento.
- HP04: Quando muito tempo é utilizado para merge e para as operações
relacionadas a branching a incidência de anti-padrões é maior.
- HP05: A prática de integração contínua extingue a possibilidade de anti-
padrões de branching.
- HP06: Os líderes de times de desenvolvimento consideram grande o impacto
que a técnica de branching tem na produtividade do time.
PERFIL DOS
ENTREVISTADOS
Função Quantidade

Gerente 9

Líder técnico 10

Desenvolvedor 4

Analista/Engenheiro de Software 9
USO DE BRANCHING

HP01: Times com poucos integrantes e que usam metodologia ágil não usam
branching durante o desenvolvimento.
USO DE BRANCHING

confrontando a afirmação de Dantas (2006) em que o uso de branching
aumentou times grande, isso nos mostra que o aumento dessa técnica aumentou
também em times pequenos mostrando que branching está inserido na indústria
como um todo, independente do tamanho da equipe.
ORGANIZAÇÕES QUE
UTILIZAM DEVOPS
HP02: As organizações que possuem a cultura DevOps são as que
possuem menos idade.

Confrontando a afirmação de Rebellabs de que o grande aumento do
uso da cultura DevOps se dá por meio de empresas com pouco tempo de
existência e que estariam mais abertas às mudanças propostas pelo
movimento DevOps.
ANTI-PADRÕES DE
BRANCHING
HP03: A maior incidência de anti padrões de branching ocorrem em
projetos que possuem várias branchs no seu desenvolvimento.

Segundo Bird e Zimmermman, projetos que possuem um número
elevado de branchs com seus desenvolvedores, acabam por obter um maior
número de anti-padrões
ANTI-PADRÕES DE
BRANCHING
HP04: Quando muito tempo é utilizado para merge e para as operações
relacionadas a branching a incidência de anti-padrões é maior.

100%

Confirmando o que Herskisov disse em sua pesquisa que times que
gastam muito tempo com merge e com operações de branching durante o
mês, possuem anti-padrões no seu desenvolvimento.
ANTI-PADRÕES DE
BRANCHING
HP04: Quando muito tempo é utilizado para merge e para as operações
relacionadas a branching a incidência de anti-padrões é maior.
ANTI-PADRÕES DE
BRANCHING
HP05: A prática de integração contínua extingue a possibilidade de anti-padrões
de branching.
14 times afirmaram possuir práticas de integração contínua

5 times Anti-padrões de branching

9 times Anti-padrões de branching
ANTI-PADRÕES DE
BRANCHING
HP05: A prática de integração contínua extingue a possibilidade de anti-padrões
de branching.
14 times afirmaram possuir práticas de integração contínua

5 times Never Ending Merge
IMPACTO DE BRANCHING

HP06: Os líderes de times de desenvolvimento consideram grande o
impacto que a técnica de branching tem na produtividade do time.
PRÁTICAS PARA O
SUCESSO

Uso de uma estratégia formal de Branching

1. Utilização de Metodologia Ágil

2. Utilização de Sistemas de Controle de Versão

3. Utilizar 5 ou menos Branchs

4. Integração Contínua
CONCLUSÃO

É grande incidência de anti-padrões de branching em times de
desenvolvimento.

A utilização de práticas e ferramentas da cultura DevOps
diminuem bastante a incidência de anti-padrões de branching.

Um modelo bem definido de branching diminuem tempo gasto
com operações de branching e com merge, aumentando assim a
produtividade do time.

Os líderes de times de desenvolvimento consideram grande o
impacto de branching na produtividade do time.
CONCLUSÃO

As limitações do estudo incluem itens como:

A escassez de insumo falta de acesso

Por ser um tema novo, não concentrou estudos voltados para
esse tipo de análise .
TRABALHOS FUTUROS

● Busca de casos de uso reais relacionados ao tema

● Comparação da técnica de branching em relação
às outras a outras técnicas

● Definição de modelo para aplicação real na indústria
de TI
Obrigado!

Dênio Batista Brasileiro Bezerra
dbbb@cin.ufpe.br