Ferramenta

Identificar a dívida técnica auto-admitida no código-fonte é um dos desafios presentes no desenvolvimento de software contemporâneo. Essa dívida reflete compromissos na qualidade do código, frequentemente decorrentes de decisões de design ou implementação tomadas rapidamente e de forma temporária. O FindDT é uma ferramenta de Machine Learning desenvolvida para identificar dívida técnica Auto-Admitida em código-fonte.

Baseando-se em um trabalho prévio disponível no GitHub (Li, Soliman e Avgeriou, 2022), a ferramenta utiliza um modelo pré-treinado e uma base de dados extraída desse trabalho como ponto de partida. Além disso, foi desenvolvido um modelo adicional utilizando SVM (Support Vector Machine) para identificação dos diferentes tipos de dívida técnica. Usando 80% da base de dados para o treinamento e 20 % para teste o modelo SVM atingiu uma Accuracy de 65% e um F1-Score de 64.13%.

Funcionalidades

Identificação Automatizada​

Utiliza um modelo CNN pré-treinado para analisar os comentários e identificar possíveis áreas de dívida técnica no Código-Fonte

Classificação por Tipos​

Aplica um modelo SVM para classificar os diferentes tipos de dívida técnica encontrados, como código complexo, falta de documentação, entre outros.

Relatórios Detalhados​

Gera relatórios detalhados sobre a localização, natureza e gravidade da dívida técnica identificada, facilitando o planejamento e a priorização das atividades de refatoração

Implementação​

1

Análise e Entendimento do Problema

Nesta fase foi crucial entender o problema da dívida técnica e como ela afeta o desenvolvimento de software, por isso foi realizada uma Revisão Rápida, onde Identificamos os diferentes tipos de dívida técnica e suas causas comuns.

2

Aquisição Dataset e Modelo

Após a primeira fase, tivemos acesso ao modelo CNN pré-treinado e os dados, identificamos a necessidade de pré-processamento, incluindo limpeza, tratamento de valores ausentes e remoção de duplicatas. Ao finalizar esse processo, refinamos o conjunto de dados para focar em apenas cinco tipos de dívida técnica detectáveis via código fonte.

3

Treinamento e Avaliação do Modelo

Para a realização do treinamento utilizamos estruturas como TensorFlow, FastText e joblib. Etapa onde o modelo SVM foi treinado usando a base de dados pré-processada. A avaliação do desempenho do modelo foi feita usando métricas apropriadas, como precisão, recall e F1-score.

4

Implementação da Ferramenta

O próximo passo foi integrar o modelo CNN e o modelo SVM em uma ferramenta. Assim não só identificando se há dívida técnica no código fonte, mas o tipo, a linha do código. Refinando mais a ferramenta foi possível fazê-la reconhecer mais de um tipo de linguagem de programação.

5

Testes e Depuração

Na fase de Testes e Depuração da ferramenta FindDT, foram realizados procedimentos abrangentes para garantir o seu desempenho e funcionamento adequado em diversos tipos de identificação de Dívida técnica e tipos de código-fonte. Ao realizar esses procedimentos de testes de forma abrangente e eficaz, garantimos que a ferramenta esteja executando da melhor forma possível, assim ajudando desenvolvedores na identificação eficaz da Dívida técnica Auto-Admitida em Código Fonte.

Relatório Completo​

Para acessar o relatório completo da Plataforma Code Debt e da Ferramenta FindDT, clique no botão abaixo para fazer o download.

Quer Saber Mais?

Nós desenvolvemos um tutorial sobre como usar a ferramenta, explicando passo a passo seu funcionamento, bem como fazer o download gratuito dos modelos pré-treinados e do dataset utilizado.

Referência​

Li, Y.; Soliman, M. e Avgeriou, P. (2022). Identifying Self-Admitted Technical Debt in Issue Tracking Systems Using Machine Learning. Empirical Software Engineering, v. 27, n. 131.