Skip navigation
Por favor, use este identificador para citar o enlazar este ítem: https://repositorio.ufpe.br/handle/123456789/44697

Comparte esta pagina

Título : Detecção de conflitos semânticos via análise estática de substituição de atribuição
Autor : OLIVEIRA, Matheus Barbosa de
Palabras clave : Engenharia de software e linguagens de programação; Substituir atribuição; Conflitos de integração de código; Desenvolvimento colaborativo
Fecha de publicación : 23-feb-2022
Editorial : Universidade Federal de Pernambuco
Citación : OLIVEIRA, Matheus Barbosa de. Detecção de conflitos semânticos via análise estática de substituição de atribuição. 2022. Dissertação (Mestrado em Ciência da Computação) - Universidade Federal de Pernambuco, Recife, 2022.
Resumen : O processo de desenvolvimento de software atual, exceto em casos especiais, é feito de forma colaborativa. Na medida que novos requisitos são levantados, novas tarefas são definidas e alocadas a desenvolvedores diferentes. Os desenvolvedores, no que lhes concerne, adicionam suas modificações em repositórios ou versões separadas e isoladas do código, e posteriormente essas modificações precisam ser integradas em um repositório ou versão central. Esse processo de integração de código é propenso a erros, especialmente se as alterações em diferentes ra- mos entrarem em conflito. Alguns desses conflitos são mais simples e podem ser detectados pelas ferramentas atuais de controle de versão como o Git, no entanto, ainda necessitam de intervenção humana para resolvê-los, o que afeta a produtividade da equipe. Mas esse não é o único problema, existem também os conflitos semânticos que requerem a compreensão do comportamento do software, que está além dos recursos da maioria das ferramentas de mes- clagem existentes. Isso faz com que esses conflitos dificilmente sejam percebidos por revisões ou detectados em testes e chegam até o usuário final como defeito no software. Esse tipo de conflito ocorre quando, no código integrado, as mudanças introduzidas pela versão de um dos desenvolvedores interferem de forma inesperada com as mudanças introduzidas pela versão de outro desenvolvedor, fazendo com o que um contrato pretendido por uma das versões deixe de ser cumprido. Sendo assim, se fazem necessárias ferramentas que possam detectar conflitos desse tipo no processo de integração, de modo a evitar bugs e facilitar a resolução dos mesmos. Nesse sentido, esse trabalho propõe uma análise de substituição de atribuição (Override an Assignment (OA)), que visa detectar interferências entre as alterações introduzidas por dois desenvolvedores diferentes, onde caminhos de gravação, sem atribuições intermediárias, para um alvo comum indicam interferência. Também foi realizada a implementação e avaliação de duas abordagens (interprocedural e intraprocedural) para a análise proposta. Para avaliar as implementações da análise proposta foi usado um conjunto de 78 cenários de integração de código, em que ambas versões integradas modificaram o mesmo método. Esses cenários foram extraídos de projetos open-source Java, minerados por uma ferramenta de mineração de cená- rios de integração do Github. Os resultados mostram que a análise proposta se mostrou capaz de detectar cenários com substituições de atribuições e com interferência localmente observá- vel entre as contribuições, no entanto, teve uma quantidade considerável de falsos negativos, o que indica que ela não é suficiente para detectar cenários com interferência de forma confiável. No entanto, a análise proposta poderia ser combinada com outras análises para compor uma ferramenta mais robusta para detecção de conflitos de integração semânticos.
URI : https://repositorio.ufpe.br/handle/123456789/44697
Aparece en las colecciones: Dissertações de Mestrado - Ciência da Computação

Ficheros en este ítem:
Fichero Descripción Tamaño Formato  
DISSERTAÇÃO Matheus Barbosa de Oliveira.pdf2,1 MBAdobe PDFVista previa
Visualizar/Abrir


Este ítem está protegido por copyright original



Este ítem está sujeto a una licencia Creative Commons Licencia Creative Commons Creative Commons