Eventos

Eventos

Tese de Doutorado - Nº 480: Avoiding Merge Conflicts by Test-Based Task Prioritization

13 de Fevereiro de 2020 às 09:41:43

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


Aluna: Thaís Alves Burity Rocha
Orientador: Prof. Paulo Henrique Monteiro Borba
Título: Avoiding Merge Conflicts by Test-Based Task Prioritization
Data: 17/02/2020
Hora/Local: 9h – Centro de Informática - Anfiteatro
Banca Examinadora:

Prof.  Hermano Perrelli de Moura (UFPE / Centro de Informática)

Profa. Carla Taciana L. Lourenço Silva Schuenemann (UFPE / Centro de Informática)

Prof. Breno Alexandro Ferreira de Miranda (UFPE / Centro de Informática)
Prof. Alessandro Fabricio Garcia (PUC-RJ / Departamento de Informática)
Prof. Alfredo Goldman Vel Lejbman  (USP / Instituto de Matemática e Estatística)

RESUMO:


No contexto de desenvolvimento colaborativo, conflitos de integração podem comprometer a qualidade do software e a produtividade dos desenvolvedores.
Para reduzir conflitos, uma possibilidade seria evitar a execução paralela de tarefas de programação que irão alterar os mesmos arquivos.
Embora esperançosa, essa estratégia é desafiadora porque depende da predição dos arquivos que precisam ser alterados para concluir uma tarefa.
Como é difícil prever os arquivos alterados, investigamos sua viabilidade para projetos BDD (Behavior-Driven Development), que escrevem testes de aceitação automatizados antes de implementar funcionalidades.
Desenvolvemos uma ferramenta que, para uma determinada tarefa, analisa estaticamente os testes do Cucumber e infere as interfaces baseadas em testes ou TestI (arquivos que podem ser executados pelos testes), aproximando os arquivos que seriam alterados pela tarefa.
Para avaliar a confiabilidade dessa aproximação, medimos a precisão e a revocação de interfaces baseadas em teste de 513 tarefas de 18 projetos Rails no GitHub.
Também comparamos interfaces baseadas em testes com interfaces definidas aleatoriamente, interfaces obtidas pela similaridade textual das especificações de teste com tarefas anteriores e interfaces calculadas pela execução de testes.
Nossos resultados evidenciam que, no contexto específico de BDD, os testes do Cucumber podem ajudar a prever arquivos alterados pelas tarefas.

Em seguida, avaliamos se é possível prever o risco de conflitos de integração com base na interseção entre interfaces de tarefas baseadas em teste.
Para avaliar as previsões de risco de conflito, medimos a precisão e a revocação de 6.360 pares de tarefa de 19 projetos Rails no GitHub.
Dentre outras descobertas, nossos resultados confirmam que os testes do Cucumber podem ajudar a prever o risco de conflitos de integração, uma vez que a interseção entre interfaces de tarefas indica uma maior probabilidade das tarefas alterem algum arquivo em comum.
Uma interseção mínima prediz risco de conflito com 0,59 de precisão e 0,98 de revocação.
Além disso, quanto maior o tamanho da interseção, maior o número de arquivos alterados por ambas as tarefas.
Dessa forma, os desenvolvedores podem usar o tamanho da interseção entre TestI como grau de risco de conflito entre tarefas, priorizando a seleção de uma tarefa para executar cujo  TestI possui a menor interseção com as demais.
Finalmente, um preditor de risco de conflito baseado em interfaces de tarefa tem melhor performance que um preditor baseado em tarefas passadas similares.

Apesar dos resultados promissores, a interseção entre interfaces de tarefa muitas vezes não consegue acertar os arquivos conflitantes

 

 

Palavras-chave: Desenvolvimento colaborativo. Priorização de tarefas. Desenvolvimento Dirigido a Comportamento. Predição de mudança de arquivo. Predição de risco de conflito.