Aprendizado de padrões sintáticos utilizando histórico de versão para sugestão automatizada de modificações de código

Carregando...
Imagem de Miniatura

Data

2021-01-26

Autores

Cayres, Leandro Ungari [UNESP]

Título da Revista

ISSN da Revista

Título de Volume

Editor

Universidade Estadual Paulista (Unesp)

Resumo

Uma característica de sistemas de software é o seu constante estado de evolução, em que diferentes tipos de modificações são aplicadas, as quais podem aumentar a complexidade do código-fonte, e consequentemente, reduzir a manutenabilidade do software. A refatoração de software é uma prática amplamente reconhecida para a redução de complexidade e reestruturação do código-fonte. Contudo, as abordagens existentes de identificação de oportunidades de refatorações apresentam diversas limitações, tanto em relação ao número de técnicas de refatoração disponíveis quanto à complexidade de modificações contempladas, o que pode não suprir as reais necessidades por parte dos desenvolvedores. Nesse sentido, este trabalho propõe um processo de aprendizado de modificações de código-fonte baseado em exemplos, com o intuito de identificar padrões sintáticos de modificações que propiciem a melhoria contínua do código-fonte, para que esses possam ser reaproveitadas e replicados no mesmo e em outros repositórios. O processo de aprendizado de modificações foi conduzido de modo individualizado em cada um dos repositórios. A partir dos resultados extraídos de um conjunto de repositórios, foi possível identificar um conjunto de instâncias de modificações simples, principalmente relacionadas com movimentação e renomeação de entidades de código-fonte, e também um conjunto de refatorações de software simples e compostas.
The continuous evolution state is a common to any software system, which developers conduct different types of code changes and may increase code complexity, resulting in the reduction of software maintainability. Software refactoring is a widely known practice to the reduction of complexity by the reestructuring of source code. However, the existing approaches to identify opportunities of refactorings present plenty of limitations, such as the number of available refactorings techniques and the complexity of their transformations, which may not supply the indeed needs of developers. From that, this study proposes a process of learning source code changes based on examples, to identify code patterns which further the continuous improvement of source code, and they allow the reuse and replication of them through the same and other repositories. We conducted this process trough each repository separately. From the obtained results, we identify a set of simple code changes, mainly related to move and rename modifications of code entities, and also, some of simple and composed software refactorings.

Descrição

Palavras-chave

Histórico de versão, Padrões de modificação de código-fonte, Manutenabilidade de software, History version, Patterns of source code changes, Software maintainability

Como citar