Versionamento Ágil com Git



Documentos relacionados
Controle de Versão com CVS

Controle de versão e fluxo de trabalho em projetos de desenvolvimento de software

Controle de Versão de Software. Luiz Jácome Júnior

@georgeguimaraes. Integração Discreta. melhorando a Integração Contínua e ganhando em colaboração

Controle de Versão com GIT

Gerenciamento de configuração. Gerenciamento de Configuração. Gerenciamento de configuração. Gerenciamento de configuração. Famílias de sistemas

Versionamento de Código. Núcleo de Desenvolvimento de Software

TUTORIAL PRÁTICO SOBRE Git. Versão 1.1

PROJETO CEMEA. Um trabalho educacional

Controle de Versão. Prof. Msc. Bruno Urbano Rodrigues.

Gerência de Configuração. Professor: Dr. Eduardo Santana de Almeida Universidade Federal da Bahia

Manifesto Ágil e as Metodologias Ágeis (XP e SCRUM)

Salvando modificações localmente (commit) Enviando modificações para o servidor (push) Sinalizando versão estável (tag)

EXIN Agile Scrum Fundamentos

MPSP Projeto ALM/Scrum. Diretoria de Sistemas de Informação

Caso Prático: Java como ferramenta de suporte a um ambiente realmente colaborativo no método Scrum de trabalho

Java Programação para Fábrica de Software. Fernando Lozano Consultor 4Linux

Engenharia de Software I. Aula 15: Metodologias Ágeis. Prof. Márcio D. Puntel

Introdução ao Git. Laboratório de Programação. Luísa Lima, Pedro Vasconcelos, DCC/FCUP. Março 2015

SCRUM: UM MÉTODO ÁGIL. Cleviton Monteiro

Quais são as características de um projeto?

Tutorial SVN Básico Engenharia de Software. Denise Notini Nogueira

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 06 PROFª BRUNO CALEGARO

Francielle Santos

Introdução ao Git. Introdução ao GIT. Anderson Moreira. Baseado nos slides disponíveis em http//free electrons.com

Um case de sucesso em equipe ágil, dedicada e remota com evolução adaptativa e gradativa do Scrum.

Desenvolvimento Ágil de Software

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Desenvolvimento Ágil Modelos Ágeis. Profª Esp.: Maysa de Moura Gonzaga

XP extreme Programming, uma metodologia ágil para desenvolvimento de software. Equipe WEB Cercomp

Engenharia de Software II: SCRUM na prática. Ricardo de Sousa Britto

Capítulo 25. Gerenciamento de Configuração. Engenharia de Software Prof. Flávio de Oliveira Silva, Ph.D.

Agenda. Gerência de Configuração de Software. Atividade Sala. Quais os problemas? P1) Duplicidade de Trabalho. P2) Trabalhos Sobrepostos

3 Estudo de Ferramentas

Scrum em Ação. Gerenciamento e Desenvolvimento Ágil de Projetos de Software. Andrew Pham Phuong-Van Pham. Novatec

J820. Integração Contínua. com CVS, CruiseControl, Cruise Control. argonavis.com.br. AntHill Gump e Helder da Rocha (helder@acm.

Dinâmica em Grupo com o Framework SCRUM

Gerência de Configuração de Software Funções

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

7 Mudanças Realizadas

Melhoria no Desenvolvimento Ágil com Implantação de Processo de Integração Contínua Multiplataforma para Java e.net. Hudson

6 Infraestrutura de Trabalho

Bancos de Dados III. Replicação de Dados. Rogério Costa Replicação

Métodos Ágeis para Desenvolvimento de Software Livre

Governança de TI. ITIL v.2&3 parte 2

Engenharia de Software. Enunciado da Quarta Parte do Projecto

Scrum e CMMI no C.E.S.A.R Relato de Experiência

DevOps, Chef, Puppet, Ansible e como vender milhões na Black Friday com 100% de uptime

Sistemas de Informação I

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS APLICATIVOS HÍBRIDOS. Prof. Angelo Augusto Frozza, M.Sc.

Desenvolvendo Software Livre com Programação extrema

Guerra Civil. Variante da Guerra Civil. Resumo do Jogo. George R.R. Martin, O Festim dos Corvos

PLATAFORMA DE DESENVOLVIMENTO PINHÃO PARANÁ MANUAL DE UTILIZAÇÃO DO CVS NO ECLIPSE

Git e contribuição para projetos Open Source. Bruno Orlandi

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS - APLICATIVOS HÍBRIDOS. Prof. Angelo Augusto Frozza, M.Sc.

Engenharia de Software II

Sistemas de Controle de Versão ~Subversion~ Juliano Ferraz Ravasi UNESP Rio Claro

CBSOFT Praticando os princípios ágeis nas atividades de teste em projetos de aplicativos móveis"

Desenvolvimento de so-ware com Git. Leonardo Gresta Paulino Murta

Feature-Driven Development

Integração de Ferramentas de Apoio a Processos Outubro 2010 GUSTAVO VAZ NASCIMENTO

Géssica Talita. Márcia Verônica. Prof.: Edmilson

ScRUM na prática. Scrum no dia-a-dia. V Semana de Tecnologia da Informação

METODOLOGIAS ÁGEIS - SCRUM -

Introdução ao Controle de Versões. Leonardo Murta

USANDO O IZCODE PARA GERAR SOFTWARE RAPIDAMENTE

Gerência de Configuração. Profº Rômulo César

Desenvolvimento Ágil de Software em Larga Escala

Metodologias Ágeis. Aécio Costa

CONHEÇA. nosso. processo. Para você lançar sua Startup. Semana de descoberta. Semana de desenvolvimento. E depois de tudo pronto?

Frederico Aranha, Instrutor. Scrum 100 Lero Lero. Um curso objetivo!

Agenda. Aprendendo Git/GitHub. Definições. Git. História 31/05/2012. Vantagem de usar controle de versão

Wesley Torres Galindo

REVIEW. O ápice no ciclo do SCRUM. Rodrigo de Toledo (Cenpes, Petrobras) (How to fulfill PO s s Expectations) Maio 2009

Introdução à ES - Continuação

INTRODUÇÃO AOS MÉTODOS ÁGEIS

MSF- MICROSOFT SOLUTIONS FRAMEWORK. Cesar Eduardo Freitas Italo Alves

ELABORAÇÃO DE UM PRODUCT BACKLOG EFETIVO

Gerência de Configuração de Software Introdução

Wesley Torres Galindo.

SAIBA MAIS SOBRE O LINUX E DESCUBRA QUAL DISTRIBUIÇÃO É MELHOR PARA VOCÊ! CURSO

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

Tópicos. Métodos Ágeis. Histórico; Valores; Métodos Ágeis x Modelos Tradicionais; Exemplo: Referências Bibliográficas.

ESTUDO DE VIABILIDADE. Santander, Victor - Unioeste Aula de Luiz Eduardo Guarino de Vasconcelos

Sua indústria. Seu show. Seu Futuro

UNIDADE 4. Introdução à Metodologia de Desenvolvimento de Sistemas

2. GERÊNCIA DE CONFIGURAÇÃO DE SOTWARE

MÓDULO 8 ARQUITETURA DOS SISTEMAS DE BANCO DE DADOS

Vivendo o O ciclo de vida do pacote no Debian GNU/Linux

Processo de Desenvolvimento de Software Scrum. Prof. Antonio Almeida de Barros Jr.

GERÊNCIA DE CONFIGURAÇÃO. Isac Aguiar isacaguiar.com.br

Planejamento Iterativo

Sistema de Controle de Versão - CVS

Transcrição:

Versionamento Ágil com Git Como paramos de nos preocupar e aprendemos a amar versionamento ágil Brazil Scrum Gathering São Paulo, 13 de Maio de 2009

Quem? Tiago M. Jorge Agile Coach, WebCo Internet Ronaldo M. Ferraz Gerente de R&D, WebCo Internet

Por quê? * Uma dificuldade básica em projetos ágeis é decidir quando e como integrar uma estória. Se você separar as estórias, pode ter problemas ao integrar depois. Se não separar, pode ter problemas em tirar uma estória que não possa entrar ao final do sprint. Em todo caso, você também quer velocidade máxima de desenvolvimento.

Por quê? Ferramentas tradicionais oferecem pouco suporte a cenários mais sofisticados de versionamento. Branching e merging geralmente são trabalhosos e pouco confiáveis. Como, então, suportar um processo ágil de desenvolvimento que, ao mesmo tempo, permita os benefícios de integração contínua e reduza conflitos?

Por quê? * Agile Manifesto diz: Individuals and interactions over processes and tools E também diz: That is, while there is value in the items on the right, we value the items on the left more. Em outras palavras, processos que apóiam agilidade podem, e devem, ser considerados.

Agenda * Como fazíamos versionamento O problema dos processos tradicionais Vantagens de branches separados por estórias Como o Git se encaixa no processo Como fazemos versionamento ágil Situacões encontradas Desvantagens do processo Melhorias futuras

Como fazíamos, fase 1 Merges Merges Release

Como fazíamos, fase 1 Subversion Desenvolvimento direto no trunk Conflitos diários, vence o primeiro que fizer o commit Branch estável usando tags Histórico linear mas sem especificidade

Como fazíamos, fase 2 Trunk RC Merges Stable Merges

Como fazíamos, fase 2 Git Um branch para o desenvolvimento primário Branches ocasionais para desenvolvimento secundário Dois branches estáveis (release candidate, stable) com maior controle Redução de conflitos Histórico linear com mais especificidade

Problemas com o tradicional * Processos Um branch único: Favorece conflitos repetidos e freqüentes quebras do build Atrapalha o desenvolvimento paralelo entre times Atrapalha o desenvolvimento paralelo de estórias Não suporta uma code base continuamente releasable

Problemas com o tradicional Ferramentas CVS não é realmente um RCS Subversion Branching é pesado (cópia do branch original) Merging é limitado e trabalhoso Comerciais Geralmente bem limitados (vide locking strategies, por exemplo)

Branches separados (prós) * Paralelismo no desenvolvimento Não temos uma equipe de seis pessoas, e sim três equipes de duas. Granularidade em releases (depende ativamente da granularidade das estórias) Histórico impoluto e correto de desenvolvimento Fácil identificação da proveniência de bugs

Como o Git se encaixa Branches são essencialmente grátis; trabalho em pequenas unidades Merging extremamente poderoso (por padrão, 3-way recursive; podendo resolver múltiplos branches simultaneamente) Versionamento distribuído (commits locais, todo desenvolvedor tem o repositório inteiro, desenvolvimento ubíquo)

Como fazemos atualmente Story #1 Story #2 Story #3 Master Merges QA Merges Stable

Como fazemos atualmente Git Um branch por estória, derivado do branch lógico mais próximo Um branch para integração contínua (master) e um branch stable, com a versão do código que está em produção Integração de estórias após o done do time Integração contínua síncrona para a estória e assíncrona para o branch master

Como fazemos atualmente Tags regulares para QA baseados no master Tags lineares para deploy Histórico absoluto de desenvolvimento e produção de features Controle granular do que é releasable

Situações encontradas * Positivas Branch permanente para aumento de testes Migração paralela para o Rails 2.3 Remoção de estórias incompletas Negativas Desenvolvimento de um feature distante do dia-a-dia depende de rebases constantes

Desvantagens do processo * Curva de aprendizado mais íngreme (tanto do processo quanto do Git) Depende de estórias pequenas Funciona melhor com estórias auto-contidas Integração final acontece menos vezes dentro do sprint

Melhorias futuras Deploy contínuo e automatizado em QA Uso de tags assinados para garantia de versões releasable

Questões??