Melhorar a qualidade e a agilidade do desenvolvimento de software através de métodos inteligentes e ciência de dados.
Produzir sistemas de software cada vez maiores e mais complexos em maior velocidade é um grande desafio para a indústria. Essa demanda ocasiona defeitos de software que têm um impacto significativo na aceitação do produto. Estima-se que correções em softwares custam mundialmente 381 bilhões de dólares anualmente. Reduzir e corrigir defeitos de software são problemas importantes, ainda mais com a forte pressão para produção de soluções rápidas. Essa velocidade das entregas faz com que desenvolvedores priorizem determinadas partes do código-fonte para inspeção e teste. A qualidade dessa priorização pode levar ao sucesso ou à falha no desenvolvimento de um sistema de software.
Nesse contexto, várias abordagens de aprendizado de máquina foram propostas para prever mudanças críticas (indutoras de defeitos) no código-fonte assim que essas mudanças são implementadas. Tais métodos podem ajudar desenvolvedores a identificar as partes do código-fonte mais suscetíveis a defeitos e alocar mais recursos para testá-las.
No entanto, as predições produzidas por essas abordagens podem não ser confiáveis devido a mudanças no processo subjacente de geração de defeitos que foi aprendido, pois tal processo pode ter desvios de conceitos, o que torna as predições obsoletas. Como esses desvios de conceitos podem acontecer a qualquer momento, os desenvolvedores não têm confiança se o modelo aprendido está atualizado ou não, o que pode causar erros graves de predição e levar a atrasos nas entregas.
Esta pesquisa irá estudar novos algoritmos de aprendizado de máquina online para acelerar a adaptação a desvios de conceito na predição de mudanças críticas em softwares. As soluções encontradas por este projeto, quando integradas a sistemas de controle de versão de software, fornecerão alertas precoces, confiáveis e automatizados de alterações indutoras de defeitos ao longo da vida útil dos projetos de software.
Utilizando inteligência artificial e o algoritmo SZZ, o Learning from Commits analisa o histórico de commits do seu projeto para prever quais alterações têm maior probabilidade de introduzir defeitos. Essa abordagem permite identificar potenciais problemas antes que eles afetem o produto final, possibilitando ações corretivas antecipadas e reduzindo custos com correções tardias.
Ao destacar commits com maior risco de introduzir bugs, o Learning from Commits auxilia as equipes de desenvolvimento a priorizar suas revisões de código de forma mais eficiente. Isso resulta em um processo de revisão mais focado e eficaz, melhorando a qualidade do software entregue e aumentando a produtividade da equipe.