Branch & Merge Claudio Leite.

Slides:



Advertisements
Apresentações semelhantes
Metodologia R/XP.
Advertisements

Gerência de Projetos Introdução A Crise do Software
Leo Silva Leonardo Murta
Sistema Gerenciador de Ocorrências
Tópicos Motivação para teste Por que algumas empresas não testam
Rational Unified Process(RUP)
Gerenciamento de Configuração
Modelos de processo de software:
Collective Code Ownership Leonardo Pereira Demilis.
Ci&T SPIN – Campinas Equipe de testes em projetos com CI e TDD.
CONCEITOS E APLICAÇÕES DO PLANEJAMENTO ESTRATÉGICO DE MARKETING.
TIPOS DE TESTES APLICÁVEIS E NÃO APLICÁVEIS AO PROJETO
Gestão de Defeitos Vanilson Burégio.
Análise e Gerenciamento de Requisitos com Casos de Uso
Engenharia de Software
Gerência de Configuração
Configuração de manutenção
Gerência de Configuração de Software
DOCUMENTO CONFIDENCIAL DA MICROSOFT Set 2009 | Página 1 | Apresentação para BDMs.
Aferindo a qualidade do serviço com testes de desempenho Igor Abade V.
MVP Virtual Conference 2013
Gerenciamento de Configuração
O Fluxo de Implementação
Conceitos.
Gestão de Configuração de Software
Gerenciamento de Dados
Objetivos das Atividades de Implementação • Implementar as classes do modelo de projeto em termos de componentes (código fonte ou executável, etc.) •
Fevereiro/ Resultado dos Projetos de Software Pesquisa Motivação.
Prototipagem rápida de gameplay
Um Framework Para Testes
Projeto de Banco de Dados
MVP Virtual Conference 2013
Cristiano Soares Rafael di Lego Roberto Nemirovsky Thiago Nascimento
Gerência de Configuração - GC
OBSERVAÇÃ O: Para mudar a imagem deste slide, selecione a imagem e exclua-a. Em seguida, clique no ícone Imagens do espaço reservado para inserir sua própria.
Aluno: Cristiano Levi Arnold Orientador: Alexandre Luís Franco 2009
CONSTRUÇÃO DE CENÁRIOS
Teste de Software Conceitos iniciais.
Teste de Software: Manual sim, amador, jamais! André Dias.
Processos.
S ISTEMA DE C ONTROLE DE V ERSÃO : B AZAAR Carolina Ramalho Priscilla Gonçalves.
Controle de versão. Política trava-modifica-destrava Nessa política, o sistema de controle de versão permite que apenas um desenvolvedor por vez altere.
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Conceitos Básicos Introdução.
XI Jornada de Informática Controlando Projetos com Netbeans e Subversion.
SCRUM Processo de Desenvolvimento de Software
ABC reuso Modeling and Using Product Line Variability in Automotive Systems Steffen Thiel and Andreas Hein, Robert Bosch Corporation.
Engenharia de Software
Planejamento e Gerência de Projeto Plácido Antonio de Souza Neto
Concurrent Versions System (CVS) Alexandre Monteiro.
MVP Virtual Conference 2013 Eliminando o cenário “no repro bug” Márcio Sete.
Métodos Ágeis e Programação Extrema (XP)
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína ANA PAULA LIMA.
Engenharia de Software
Controle de Versão com SubVersion
CVS – Gerenciamento de Versões
Programação Pragmática Carla Maria Pinheiro. 05/11/2004 Tópicos Avançados Engenharia de Software 3 Agenda O que é Programação Pragmática? Programador.
SISTEMA DE MONITORAMENTO DA TECNOLOGIA DA INFORMAÇÃO.
Memória de Aula 1 Prof Alfredo Senger
Linguagem Técnica II SCM Software Configuration Management Aula 03 Prof. Renato Novais
Ferramentas e Tecnologias para o Trabalho Distribuído e Colaborativo
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína XP (EXTREME PROGRAMMING) Pós-Graduação em Engenharia de Software Metodologias.
Prof. Fernando Penteado
PADROES DE PROJETO PROF. OSIEL MARLON. PADRÕES DE PROJETO INTRODUÇÃO Padrões de projeto têm emergido como uma das mais promissoras abordagens para a melhoria.
J U nit Um Framework Para Testes. Motivação  Todos os programadores sabem que devem testar seu código  Quanto mais curto o prazo menos testes são realizados.
Metodologia de Desenvolvimento de Software Alexandre Vasconcelos, André Santos, Augusto Sampaio, Hermano Moura, Paulo Borba © Centro de Informática Universidade.
18/09/ /12/20082 Testes Baseados Em Modelo Diana Rúbia Paulo César Qualidade, Processos e Gestão de Software Alexandre Vasconcelos {drrr, pco,
Agile Modeling Júlio Lins – Junho / 22 Agile Alliance Em 2001, reune-se um grupo de representantes das metodologias eXtreme Programming, SCRUM,
Subversion- Treinamento Básico Controle de versões de Arquivos na Acropolis Atualizado em
Prof. Fernando Penteado Kaizen significa melhoria contínua. Para se tornar uma ferramenta efetiva, o Kaizen deve envolver todos os empregados da empresa.
Transcrição da apresentação:

Branch & Merge Claudio Leite

Sobre http://blog.lambda3.com.br/ @claudiobernardo

O que estratégias de Branch tentam resolver ? Agenda Conceitos Básicos O que estratégias de Branch tentam resolver ? Estratégias de Branch: Por Release Estratégias de Branch: Por Qualidade Estratégias de Branch: Por Feature Demonstração

Cenário “Uma empresa de médio porte está em franco crescimento, aproveitando oportunidades do mercado. Suas aplicações estão se tornando mais complexas e o time de desenvolvedores está crescendo. Nos últimos anos, a empresa tem sofrido com uma demanda crescente por suporte, devido constantes falhas no software em produção. A qualidade do software gerado pelos times é sofrível e essa percepção tem crescido no mercado. A empresa espera continuar crescendo, mas precisa corrigir e evitar novos problemas com a gestão de seu processo de desenvolvimento de software. Recentemente, a empresa ouviu falar sobre as novas tendências no desenvolvimento ágil e os benefícios da abordagem para Modern Apps.”

Conceitos Básicos

Controlador de Versão É um repositório que contém os arquivos necessários para o desenvolvimento do seu projeto Mantém Controle sobre quais mudanças ocorreram: Quem ? O que ? Quando ? Porque ? É um dos princípios básicos do ciclo de desenvolvimento de software e que ajuda para que os desenvolvedores trabalhem colaborativamente Usa conceitos básicos como check-out, check-in, get latest, labeling ...

Branch Branch permite que seja realizado desenvolvimento em paralelo Implementando features diferentes em branches diferentes com a mesma base de código Mantém diferentes releases em branches diferentes Branch == Isolar / Isolamento Estratégias Comuns: Branch por Release Branch por Feature Branch por Time Branch por Qualidade Regra Básica: NÃO CRIE BRANCH! Apenas quando necessário (KISS) Branch não é Label!

Merge Merge é uma operação de reconciliação de código. Possibilidade de Merge automático Merge permite que você passe as mudanças de um branch para o outro Forward Integration Reverse Integragion Main R1 R1.1 R2 R2.1 FI for Release

O que Branch tenta resolver ?

O que Branch Tenta Resolver ? Release Code When it is Ready Independent Construction of Features Suspension of Coding Know what code is Released Quando o código de Release está Pronto Construção Independente de Features Suspensão de Código – Code Freezen Saber Qual Código foi liberado para Release

Branch por release

Branch por Release (Staircase) Test Produção R2 C2 B Test Produção R3 Test

? ? Bugs R1 R2 R3 Test Produção Test Produção Test C1 B C3 RI C4 RI C6

Pros & Cons Pros : Modelo mais simples de ser usado Modelo mais simples para manter uma única versão Mesmo processo para hotfix ou acertos da release Menor gerência de Branches Cons : Não é muito flexível quanto os outros padrões Quanto mais release ativos, mais complicado realizar FI Necessidade de multiplos ambientes de testes Não suporta desenvolvimento em paralelo Necessidade de recriação de builds para cada release

Branch por qualidade

Branch por Qualidade (Basic Plan) Dev B QA B RI Prod

Branch por Qualidade (Safe Keeping) main B test B RI prod B B  Safe Keeping R1  Safe Keeping R2

Bugs no Branch de QA Prod QA HF dev Rx RI QA L1 L1 L2 B RI BUG B RI FI RI RI B HF FI dev FI Se vc não tiver sob uma politica de compliance, como a SOX por exemplo, você pode liberar o acesso do desenvolvedor no ambiente de QA e isso facilita muito a vida, mas se vc tem que seguir as regras da SOX, você tem que saber quem fez a requisição de promoção do código para QA, quem autorizou, quem fez a promoção para PROD entre várias outras regras. Então nesse modelo o melhor é criar um Branch de HOT-FIX e arrumar.

Bugs no Branch de Produção RI Bug RI B L-QA2 L-QA2 QA L-QA1 L-QA3 L-QA5 RI FI RI B RI FI RI FI FI FI B L-QA4 HF dev Release 1 Release 2 Release 3 RI

Pros & Cons Pros : Permite maior Flexibilidade Facilidade para trabalhar com multiplos Branches Cons : Dependendo da estrutura elaborada pode ser muito complexa Requer uma pessoa dedica para gerenciar sua estrutura e compilação Sem documentação, você pode ser perder e não saber mais onde está o seu código.

Branch por feature

Branch por Feature feature 4 feature 3 feature 2 feature1 main FI RI FI FI feature 2 RI FI FI feature1 RI FI main B Fazer uma compilação, após fazer uma FI de main

Bug feature 4 feature 3 feature 2 feature1 main FI RI FI FI feature 2 RI FI FI feature1 RI FI main B Bug Após fazer o merge da Feature 1 para Main e for achado um bug, esse bug tem que ser corrigido em main porque se você já jogou em DEV, está sendo considerado que essa feature será colocada na próxima release. Isso ocorre no caso de o bug não ter sido introduzido no ultimo check-in, pois fazer um rollback para versões antigas é complicado e você terá que saber quais features já integraram e levaram o bug junto.

Pros & Cons Pros : Separa o desenvolvimento das features Permite uma flexibilidade para escolher o que vai no seu release Facilita o debug (problema em uma feature não afeta outra) Ajuda no trabalho com features que dependem de um tempo maior de desenvolvimento Cons : Pode ficar muito complicado Os times responsáveis pelas features devem sempre lembrar de sincronizar com o Branch de DEV Pode complicar um pouco a vida de desenvolvedores que estão trabalhando em mais de uma feature Exige pelo menos um ambiente de testes por cada feature As vezes pode ser necessário mais de um Branch de Integração

Demonstração Branch por feature VS2012

Obrigado !