Machine learning for change-prone class prediction : a history-based approach
Resumo
Resumo: À medida que os projetos de software evoluem, novos artefatos são criados, modificados ou removidos. Um dos principais artefatos gerados no desenvolvimento de software orientado a objetos é a classe. A classe tem um ciclo de vida muito dinâmico em projetos de software orientados a objetos. Classes são criadas, modificadas ou removidas devido a diferentes motivos, como por exemplo a necessidade de refatoração, resultando em custos adicionais ao projeto. Uma maneira de mitigar isso é detectar, logo nos estágios iniciais do projeto, classes que estão propensas a mudanças. Isso pode impactar positivamente na produtividade da equipe, na alocação de recursos e na qualidade do software desenvolvido. Vários trabalhos na literatura tentam prever a propensão a mudanças de uma classe. Alguns deles adotam abordagens baseadas em estatística, outros usam aprendizado de máquina (AM), muitas vezes coletando métricas de classe ou informações relacionadas a code smells como base para previsões. O problema com essas abordagens tradicionais é que elas não consideram a dependência temporal entre diferentes versões da classe ao longo do projeto, isto é, elas consideram que as instâncias de treinamento são independentes. Para preencher essa lacuna, este trabalho apresenta uma abordagem para predizer classes propensas a mudanças baseada no histórico de mudanças da classe. A abordagem utiliza o método de janela deslizante e adota como preditores, métricas estruturais, evolutivas, bem como frequência e diversidade de code smells. O trabalho também explora algumas técnicas de resample que geram dados sintéticos para aumentar o conjunto de dados e melhorar a capacidade preditiva dos modelos. Cinco projetos e quatro algoritmos de AM são usados na avaliação. Na grande maioria dos casos, a abordagem proposta supera a abordagem tradicional considerando a maioria dos indicadores. Além disso, observa-se que as medidas evolutivas desempenham um papel importante na predição de mudança em classes. Entre os quatro algoritmos de AM testados, Random Forest apresenta o melhor desempenho, e o uso de informações relacionadas aos code smells não impacta os resultados. Abstract: As software projects evolve, new artifacts are created, modified or removed. One of the main artifacts generated in the development of object-oriented software is the class. Classes have a very dynamic life cycle in object-oriented software projects. They can be created, modified or removed due to different reasons, e.g. need of refactoring, which results in additional costs to the project. One way to mitigate this is to detect, in the early stages of the project, classes that are prone to change. This can positively impact the team’s productivity, the allocation of resources and the quality of the software developed. To predict the change proneness of a class, most works in the literature adopt approaches based on statistics, others use machine learning (ML), often collecting class metrics or smells information as the basis for predictions. The problem with these traditional approaches is that they do not consider the temporal dependency between different versions of the class throughout the project, that is, they consider the training instances are independent. To fill this gap, this work presents an approach for predicting class change proneness, based on the history of the class changes. The approach uses the sliding window method and adopts structural and evolutionary metrics as predictors, as well as the frequency and diversity of code smells. The work also explores some resample techniques to generate synthetic data to increase the dataset and improve the predictive ability of the models. Five projects and four ML algorithms are used in the evaluation. In the great majority of the cases, our approach overcomes the traditional approach considering most of the indicators. We also highlight that evolutionary measures play an important role in class change-prone prediction. Among the four ML algorithms tested, Random Forest has the best performance, and the use of smell-based information does not impact the results.
Collections
- Dissertações [355]