Tamanho da fonte:
ANÁLISE DE IMPACTO DE PROPAGAÇÃO DE MODIFICAÇÃO EM SOFTWARE ORIENTADO A OBJETOS
Última alteração: 2021-10-29
Resumo
https://youtu.be/JCc-59p6Kow
A propagação de modificação de software é o efeito que ocorre quando uma modificação em uma parte do software provoca modificações em outras partes dele. A análise de impacto de modificações consiste em estimar esse efeito. Esse é um problema complexo e sua solução é importante para a gestão da manutenção de sistemas. As abordagens propostas até então para análise de impacto de modificações têm limitações, tais como: alta complexidade, difícil implementação e não foram avaliadas ou consideraram uma amostra pequena de sistemas nas suas avaliações. Este trabalho foi realizado no âmbito de uma tese de doutorado cujo objetivo é propor uma abordagem de análise de impacto de modificações que se baseia em dados históricos de modificações e na análise da estrutura do software. O objetivo deste trabalho de Iniciação Científica é construir os programas necessários para coleta de dados históricos de modificações de software e de estrutura de software. Este trabalho se concentra na análise de software desenvolvido em Java por ser esta uma das linguagens de programação mais utilizadas. Foi construído um programa que analisa os arquivos modificados em cada commit e gera o que foi denominado matriz de co-change. Um commit é uma operação que registra uma modificação no repositório. Uma co-change corresponde a um grupo de arquivos que foram modificados em conjunto. A matriz de co-change foi implementada de acordo com duas abordagens propostas na literatura e pela abordagem proposta na tese de doutorado na qual este trabalho está inserido. Foi construído também um programa que gera o grafo de dependência de software. Com os programas, foram coletados dados de 60 softwares do GitHub, o repositório de software mais popular. Os programas construídos e o dataset gerado serão aplicados na tese de doutorado. Parte da análise dos dados já foi realizada e os resultados foram publicados em um artigo científico.
A propagação de modificação de software é o efeito que ocorre quando uma modificação em uma parte do software provoca modificações em outras partes dele. A análise de impacto de modificações consiste em estimar esse efeito. Esse é um problema complexo e sua solução é importante para a gestão da manutenção de sistemas. As abordagens propostas até então para análise de impacto de modificações têm limitações, tais como: alta complexidade, difícil implementação e não foram avaliadas ou consideraram uma amostra pequena de sistemas nas suas avaliações. Este trabalho foi realizado no âmbito de uma tese de doutorado cujo objetivo é propor uma abordagem de análise de impacto de modificações que se baseia em dados históricos de modificações e na análise da estrutura do software. O objetivo deste trabalho de Iniciação Científica é construir os programas necessários para coleta de dados históricos de modificações de software e de estrutura de software. Este trabalho se concentra na análise de software desenvolvido em Java por ser esta uma das linguagens de programação mais utilizadas. Foi construído um programa que analisa os arquivos modificados em cada commit e gera o que foi denominado matriz de co-change. Um commit é uma operação que registra uma modificação no repositório. Uma co-change corresponde a um grupo de arquivos que foram modificados em conjunto. A matriz de co-change foi implementada de acordo com duas abordagens propostas na literatura e pela abordagem proposta na tese de doutorado na qual este trabalho está inserido. Foi construído também um programa que gera o grafo de dependência de software. Com os programas, foram coletados dados de 60 softwares do GitHub, o repositório de software mais popular. Os programas construídos e o dataset gerado serão aplicados na tese de doutorado. Parte da análise dos dados já foi realizada e os resultados foram publicados em um artigo científico.
Palavras-chave
Manutenção de software. Análise de impacto - Modificações. GitHub. Mineração - Repositório de software.