dc.contributorBORBA, Paulo Henrique Monteiro
dc.contributorhttp://lattes.cnpq.br/9619297279269411
dc.contributorhttp://lattes.cnpq.br/9395715443254344
dc.creatorROCHA, Thaís Alves Burity
dc.date2020-08-17T17:11:14Z
dc.date2020-08-17T17:11:14Z
dc.date2020-02-17
dc.date.accessioned2022-10-06T16:15:25Z
dc.date.available2022-10-06T16:15:25Z
dc.identifierROCHA, Thaís Alves Burity. Avoiding Merge Conflicts by Test-Based Task Prioritization. 2020. Tese (Doutorado em Ciência da Computação) - Universidade Federal de Pernambuco, Recife, 2020.
dc.identifierhttps://repositorio.ufpe.br/handle/123456789/37667
dc.identifier.urihttp://repositorioslatinoamericanos.uchile.cl/handle/2250/3982437
dc.descriptionIn a collaborative development context, merge conflicts might compromise software quality and developers’ productivity. To reduce conflicts, one could avoid the parallel execution of programming tasks that are likely to change the same files. Although hopeful, this strategy is challenging because it relies on the prediction of the required file changes to complete a task. As predicting file changes is hard, we investigate its feasibility for BDD (Behaviour-Driven Development) projects, which write automated acceptance tests before implementing features. We develop a tool that, for a given task, statically analyzes Cucumber tests and conservatively infers test-based interfaces or TestI (files that could be executed by the tests), approximating files that would be changed by the task. To assess the accuracy of this approximation, we measure precision and recall of test-based interfaces of 513 tasks from 18 Rails projects on GitHub. We also compare such interfaces with randomly defined interfaces, interfaces obtained by the textual similarity of test specifications with past tasks, and interfaces computed by executing tests. Our results give evidence that, in the specific context of BDD, Cucumber tests might help to predict files changed by tasks. We find that the better the test coverage, the better the predictive power. Next, we evaluate whether it is possible to predict the risk of a merge conflict when integrating the code produced by two programming tasks based on the intersection among their TestI. To assess the predictions of conflict risk, we measure precision and recall of 6,360 task pairs from 19 Rails projects on GitHub. Our results confirm that Cucumber tests might help to predict the risk of merge conflicts, given the intersection among interfaces denotes a higher probability that the tasks change some file in common. A minimal intersection predicts conflict risk with 0.59 of precision and 0.98 of recall. Also, the higher the intersection size, the higher the number of files changed by both tasks. This way, developers might use the intersection size between TestI as a degree of conflict risk between tasks, prioritizing the selection of a task to work on whose TestI has the lowest intersection with others. Finally, a predictor of conflict risk based on TestI outperforms a predictor based on similar past tasks.
dc.descriptionCNPq
dc.descriptionFACEPE
dc.descriptionNo 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, de maneira conservativa, 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.
dc.formatapplication/pdf
dc.languagepor
dc.publisherUniversidade Federal de Pernambuco
dc.publisherUFPE
dc.publisherBrasil
dc.publisherPrograma de Pos Graduacao em Ciencia da Computacao
dc.rightsopenAccess
dc.rightsAttribution-NonCommercial-NoDerivs 3.0 Brazil
dc.rightshttp://creativecommons.org/licenses/by-nc-nd/3.0/br/
dc.subjectEngenharia de software
dc.subjectDesenvolvimento colaborativo
dc.titleAvoiding merge conflicts by test-based task prioritization
dc.typedoctoralThesis


Este ítem pertenece a la siguiente institución