Eventos

Eventos

Defesa de Tese de Doutorado - Nº 481: Towards Requirements for Merge Conflict Avoidance Strategies

18 de Fevereiro de 2020 às 13:44:05

Pós-Graduação em Ciência da Computação – UFPE
Defesa de Tese de Doutorado Nº 481

Aluno: Klissiomara Lopes Dias
Orientador: Prof.  Paulo Henrique Monteiro Borba
Título: Towards Requirements for Merge Conflict Avoidance Strategies
Data: 20/02/2020
Hora/Local: 9h – Centro de Informática - Auditório
Banca Examinadora:
Prof. Vinicius Cardoso Garcia (UFPE/Centro de Informática)

Prof. Kiev Santos da Gama (UFPE/Centro de Informática)

Prof. Leonardo Gresta Paulino Murta (UFF / Instituto de Computação)
Prof. Eduardo Santana de Almeida (UFBA/ Deptº de Ciência da Computação)
Prof. Rodrigo Bonifacio de Almeida (UnB / Deptº de Ciência da Computação)
 


RESUMO:


Conflitos de integração frequentemente ocorrem quando os desenvolvedores mudam os mesmos artefatos de código. Tais conflitos podem ser comuns na prática, e resolvê-los pode ser uma atividade custosa e propensa a erros.


Para minimizar esses problemas reduzindo os conflitos de integração, é importante entender melhor como os conflitos de integração são afetados por fatores técnicos e organizacionais. Dessa forma, poderemos derivar um conjunto de fatores que as equipes de desenvolvimento poderão ficar atentas para evitar conflitos. Além de entender melhor fatores associados à conflitos de integração de código, também queremos investigar outras formas de auxiliar desenvolvedores a evitar ou reduzir conflitos.


Com esse objetivo, investigamos sete fatores relacionados à modularidade, tamanho e tempo das contribuições dos desenvolvedores. Para isso, reproduzimos e analisamos 73504 cenários de integração de código em repositórios GitHub de projetos Ruby e Python desenvolvidos usando o framework MVC disponível para essas linguagens (Ruby on Rails and Django, respectivamente). Para avaliar qualitativamente nossos resultados e explorar outras formas de evitar conflitos de integração, reali-zamos 16 entrevistas exploratórias semi-estruturadas com profissionais de 13 empresas, entre elas 4 empresas globais. Primeiro, tentamos aprender sobre contextos onde conflitos de integração são mais críticos, explorando com que frequência os conflitos de integração ocorrem e quais fatores poderiam estar mais relacionados à integrações de código mais complexas. Em seguida, tentamos investigar outros fatores que os profissionais consideram relevantes para causar conflitos de integração, com o objetivo de obter um conjunto mais sólido de fatores que os desenvolvedores precisam prestar atenção para evitar conflitos. Além disso, tentamos entender quais práticas os desenvolvedores mais usam para evitar conflitos. Finalmente, também investigamos como os desenvolvedores poderiam ser assistidos na prevenção de conflitos, explorando a utilidade de uma ferramenta hipotética para alertar o risco de conflito integração de código.


Nossos resultados trazem evidências quantitativas de que 6 dos 7 fatores de modularidade, tamanho e tempo que investigamos estão mais associados a conflitos de integração de código. Observamos que a maioria dos entrevistados percebe uma associação entre a ocorrência de conflitos de integração e cada fator que investigamos no estudo quantitativo. Ao todo, observamos 21 fatores de conflitos de integração (5 deles já investigamos durante o estudo quantitativo) que são considerados importantes pelos entrevistados e 12 práticas que eles utilizam para evitar conflitos. Além disso, os conflitos de integração são observados com taxas de frequência variadas, dependendo características contextuais de cada projeto, como frequência de integração de código, tamanho da equipe e tamanho da tarefa. Além disso, os entrevistados dizem que a maioria dos conflitos integração são simples para resolver (por exemplo, devido ao pequeno tamanho de mudanças conflitantes); exceções, para mencionar alguns, envolvem conflitos causados por refatorações globais. Outro exemplo mencionado como integração complexa é quando as mudanças estão relacionadas de maneiras não triviais, exigindo a compreensão semântica das mudanças. Além disso, de acordo com alguns entrevistados, conflitos de integração se tornam mais complexos também, dependendo da fase do projeto. Finalmente, a maioria dos entrevistados considera uma ferramenta para alerta do risco de conflito de integração útil para variados propósitos.  Por exemplo, para ajudar desenvolvedores menos experientes e facilitar o trabalho do integrador ou DevOps no monitoramento precoce de potenciais problemas de integração do código. Além disso, um dos entrevistados fornece informações sobre contextos de projetos de desenvolvimento onde esse tipo de ferramenta não se aplicaria, por exemplo, em projetos que seguem políticas rigorosas para evitar conflitos.
Nossos resultados trazem evidências quantitativas relacionadas à hipóteses e recomendações para a redução de conflitos levantados, mas não empiricamente avaliados por trabalhos anteriores, e também vamos além explorando novas hipóteses relacionadas à modularidade da contribuição e atraso de conclusão.  Ao encontrar 16 novos fatores de conflito de integração em relação ao estudo quantitativo realizado e entender como os entrevistados percebem sua importância, derivamos um conjunto de requisitos mais robusto para o desenvolvimento de modelos de previsão de conflitos mais precisos. Tais modelos poderiam então ser usados como base para o gerenciamento de projetos e ferramentas assistivas que poderiam ajudar as equipes a lidar melhor com conflitos de integração. As equipes de desenvolvimento poderiam se beneficiar desses resultados, melhorando as recomendações e diretrizes para evitar conflitos. Também fornecemos ideias sobre a utilidade e características desejáveis para o desenvolvimento de uma ferramenta para alertar o risco de conflito.


Palavras-chave: Integração de código. Conflitos de integração. Modularidade. Desenvolvimento colaborativo. Estudos empíricos.