Análise de Desempenho dos sistemas de controle de versão SVN e Git Felipe Buarque, Felype Santiago, Liliane Sheyla Justificativa Alguém já sobrescreveu o código de outra pessoa por acidente e acabou perdendo as alterações? Você sabe quem e em que momento e em que parte um artefato foi alterado? Tem dificuldade em recuperar o código de uma versão anterior que está em produção? Uso de Sistema de controle de versão Gerenciar artefatos produzidos por uma equipe de desenvolvimento de software Abordagem Centralizada ou distribuída? Sistema de Controle de Versão Centralizado Armazenamento centralizado Histórico Universal de Revisões Trabalho cooperativo Ramificações Análise de diferenças entre versões SVN(Subversion) Sistema de Controle de Versão Distribuído Rapidez Autonomia Redução de custos com o servidor Confiabilidade Git; Mercurial Problema Visando maior produtividade e eficiência na usabilidade dos controles de versão no decorrer do projeto, é mais vantajoso que uma equipe que utiliza um controle de versão centralizado (SVN) migrar para um distribuído(Git) ou permanecer com um centralizado? Objetivo da Pesquisa Analisar a utilização das ferramentas SVN e Git, com o propósito de definir qual o sistema de controle de versão é mais eficiente em relação a sua usabilidade. Especificação da Amostra 32 amostras: Alunos da Disciplina de Engenharia de Software Experimental e convidados. 2 Grupos Divisão em 2 grupos aleatoriamente Mais de 1 ano de experiência Treinamento para ambos os times Análise exploratória Verificar normalidade dos dados Teste de Aderência Análise do Histogramas Análise dos Boxplots Análise dos gráficos do Quartis Teste de Aderência H0: Os dados não seguem uma distribuição normal H1: Os dados seguem uma distribuicao normal Análise dos Histogramas Análise dos Boxplots Análise dos Gráficos dos Quartis Metodologia Formulação das Hipóteses Projeto do Experimento Análise Estatística Métricas Medir usabilidade definida na ISO 9241-11 Observar a interação do usuário com a ferramenta de controle de versão TCA - Tempo de Configuração de Ambiente TCB - Tempo de criação de branch TIB - Tempo de Integração de branch TIL - Tempo de Integrar as mudanças Locais ao Tronco Formulação da hipóteses Hipótese Alternativa (H01...4): Os tempos definidos pelas métricas são iguais utilizando-se SVN ou Git como sistema de controle de versão. Em complemento, hipóteses alternativas são definidas para serem aceitas quando a hipótese nula correspondente for negada. Formulação da hipóteses Hipótese Alternativa (H11...4): Os tempos definidos pelas métricas utilizando-se SVN como controle de versão são menores do que os tempos coletados utilizando-se Git. Formulação da hipóteses Hipótese Alternativa (H11...4): Os tempos definidos pelas métricas utilizando-se SVN como controle de versão são maiores do que os tempos coletados utilizando-se Git. Projeto do Experimento Experimento com um fator e dois tratamentos Dois grupos de 16 pessoas cada um Tags do software Jajuk As atividades a serem executadas descritas Tempos armazenados em planilha eletrônica Eclipse Plugin Subclipse/Repositório Google Code Plugin eGit/Repositório Gitorius Estatística t-teste Análise dos Resultados Análise dos Resultados Conclusões Usabilidade da ferramenta Git se faz mais eficiente do que a ferramenta SVN, pois a mesma apresenta melhor desempenho no que se diz respeito à realização das atividades de criação de branch, integração de branch e integração de mudanças locais ao tronco, enquanto que o SVN só foi mais eficiente na realização da atividade de configuração do ambiente