Use este identificador para citar ou linkar para este item:
https://repositorio.ufpe.br/handle/123456789/44697
Compartilhe esta página
Registro completo de metadados
Campo DC | Valor | Idioma |
---|---|---|
dc.contributor.advisor | BORBA, Paulo Henrique Monteiro | - |
dc.contributor.author | OLIVEIRA, Matheus Barbosa de | - |
dc.date.accessioned | 2022-06-09T18:45:23Z | - |
dc.date.available | 2022-06-09T18:45:23Z | - |
dc.date.issued | 2022-02-23 | - |
dc.identifier.citation | 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. | pt_BR |
dc.identifier.uri | https://repositorio.ufpe.br/handle/123456789/44697 | - |
dc.description.abstract | 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. | pt_BR |
dc.description.sponsorship | FACEPE | pt_BR |
dc.language.iso | por | pt_BR |
dc.publisher | Universidade Federal de Pernambuco | pt_BR |
dc.rights | openAccess | pt_BR |
dc.rights | Attribution-NonCommercial-NoDerivs 3.0 Brazil | * |
dc.rights.uri | http://creativecommons.org/licenses/by-nc-nd/3.0/br/ | * |
dc.subject | Engenharia de software e linguagens de programação | pt_BR |
dc.subject | Substituir atribuição | pt_BR |
dc.subject | Conflitos de integração de código | pt_BR |
dc.subject | Desenvolvimento colaborativo | pt_BR |
dc.title | Detecção de conflitos semânticos via análise estática de substituição de atribuição | pt_BR |
dc.type | masterThesis | pt_BR |
dc.contributor.advisor-co | ALMEIDA, Rodrigo Bonifacio de | - |
dc.contributor.authorLattes | http://lattes.cnpq.br/0987601661627331 | pt_BR |
dc.publisher.initials | UFPE | pt_BR |
dc.publisher.country | Brasil | pt_BR |
dc.degree.level | mestrado | pt_BR |
dc.contributor.advisorLattes | http://lattes.cnpq.br/9395715443254344 | pt_BR |
dc.publisher.program | Programa de Pos Graduacao em Ciencia da Computacao | pt_BR |
dc.description.abstractx | The current software development process, except in special cases, is done collaboratively. As new requirements are raised, new tasks are defined and allocated to different developers. Developers, as far as they are concerned, add their modifications to separate and isolated repositories or versions of the code, and later these modifications need to be integrated into a central repository or version. This code integration process is error prone, especially if changes in different branches conflict. Some of these conflicts are simpler and can be detected by current version control tools like Git, however they still require human intervention to resolve them, which affects team productivity. But that’s not the only problem, there are also semantic conflicts that require understanding the behavior of software, which is beyond the capabilities of most existing merge tools. These conflicts are hardly noticed by reviews or detected in tests, reaching the end-user as a software defect. This type of conflict occurs when, in the integrated code, changes introduced by one developer’s version unexpectedly interfere with changes intro- duced by another developer’s version, causing a contract intended by one of the versions to be unfulfilled. Therefore, tools are needed that can detect conflicts of this type in the integration process, in order to avoid bugs and facilitate their resolution. In this sense, this work proposes an analysis of assignment substitution (Override an Assignment (OA)), which aims to detect interference between changes introduced by two different developers, where recording paths, without intermediate assignments, to a target common indicate interference. The implementa- tion and evaluation of two approaches (interprocedural and intraprocedural) for the proposed analysis was also carried out. To evaluate the implementations of the proposed analysis, a set of 78 code integration scenarios was used, in which both integrated versions modified the same method. These scenarios were extracted from open-source Java projects, mined by Github’s integration scenario mining tool. The results show that the proposed analysis was able to de- tect scenarios with assignment substitutions and with locally observable interference between the contributions, however, it had a considerable amount of false negatives, which indicates that it is not sufficient to detect scenarios with interference. reliably. However, the proposed analysis could be combined with other analyzes to compose a more robust tool for detecting semantic integration conflicts. | pt_BR |
dc.contributor.advisor-coLattes | http://lattes.cnpq.br/0368311142108150 | pt_BR |
Aparece nas coleções: | Dissertações de Mestrado - Ciência da Computação |
Arquivos associados a este item:
Arquivo | Descrição | Tamanho | Formato | |
---|---|---|---|---|
DISSERTAÇÃO Matheus Barbosa de Oliveira.pdf | 2,1 MB | Adobe PDF | ![]() Visualizar/Abrir |
Este arquivo é protegido por direitos autorais |
Este item está licenciada sob uma Licença Creative Commons