Tamanho da fonte:
MINERAÇÃO DE DADOS DE PROPAGAÇÃO DE MODIFICAÇÕES EM SOFTWARE
Última alteração: 2023-09-05
Resumo
Softwares são constituídos por entidades denominadas módulos que interagem entre si. A modificação de um módulo pode demandar a modificação de outros módulos, sucessivamente. Esse processo é denominado propagação de modificação. Analisar e estimar o impacto de propagação de modificação em software é uma tarefa essencial para a realização de manutenções em software. Entretanto, é uma tarefa de alta complexidade e para a qual ainda não há técnicas e ferramentas consolidadas. Este trabalho de Iniciação Científica teve por objetivo a construção de um conjunto de dados sobre propagação de modificações de software. O trabalho foi realizado no contexto de uma pesquisa científica mais ampla, em nível de doutorado, que tem por objetivo definir um novo método para análise de impacto de propagação de modificações em software. Neste trabalho, foram aprimorados programas na linguagem Python que realizam a mineração de dados de modificações de software a partir do repositório GitHub. A unidade de base para coleta de dados de modificações foram os commits. Um commit é uma operação de gravação de modificações de arquivos do projeto no repositório. A partir dos dados coletados, os programas desenvolvidos calculam o impacto de propagação de modificação de cada módulo dos sistemas, considerando duas heurísticas propostas na literatura e a nova heurística proposta no trabalho de doutorado relacionado a este trabalho de Iniciação Científica. Foram coletados dados de 43 projetos de software hospedados no GitHub e desenvolvidos na linguagem Java. Os dados gerados como resultado deste trabalho foram aplicados na pesquisa sobre propagação de modificações, que está em andamento. Além disso, eles poderão ser aplicados em pesquisas futuras. Além disso, os programas desenvolvidos neste trabalho para mineração de dados de repositórios poderão ser estendidos e aplicados em trabalhos que demandem mineração de dados similares.
Palavras-chave
Manutenção de software. Mineração de repositórios. Propagação de modificações.