← Últimos artigos
🤖 AI

Automated Classification of Source Code Changes Based on Metrics Clustering in the Software Development Process

Este artigo apresenta um método automatizado que utiliza o algoritmo k-means com similaridade cosseno em onze métricas de código para agrupar mudanças de software em clusters, os quais são posteriormente mapeados por especialistas para classes pré-definidas, reduzindo significativamente o tempo de revisão e demonstrando alta pureza de classificação em cinco sistemas validados.

Autores originais: Evgenii Kniazev

Publicado 2026-02-17
📖 4 min de leitura☕ Leitura rápida

Autores originais: Evgenii Kniazev

Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

Imagine que você é o gerente de uma grande fábrica de software. Todos os dias, centenas de operários (os programadores) enviam pequenas correções, melhorias e novas peças para a linha de montagem. O problema é que o volume é tão grande que ninguém consegue revisar cada peça manualmente antes de ela ser usada. Se um operário colocar uma peça errada, a máquina inteira pode quebrar.

O trabalho de Evgenii Knyazev, apresentado neste artigo, é como criar um sistema inteligente de triagem para essa fábrica. Em vez de um humano revisar cada uma das milhares de peças, o sistema organiza as peças em caixas baseadas no "formato" delas, e um especialista só precisa olhar rapidamente para dizer o que tem em cada caixa.

Aqui está a explicação passo a passo, usando analogias do dia a dia:

1. O Problema: A Montanha de Mudanças

No desenvolvimento de software, o código muda o tempo todo. Às vezes, alguém adiciona uma nova função (como colocar um novo motor no carro). Outras vezes, alguém conserta um erro (como apertar um parafuso solto). E às vezes, alguém apenas reorganiza a bagunça sem mudar nada (como arrumar a garagem).

Revisar tudo manualmente é lento e cansativo. Os revisores ficam sobrecarregados e podem deixar passar erros importantes.

2. A Solução: A "Balança de Medidas" (Métricas)

Knyazev propõe não ler o código palavra por palavra, mas sim medir as mudanças. Ele criou uma lista de 11 medidas (como uma ficha técnica) para cada mudança enviada:

  • Quantas linhas de código foram adicionadas ou apagadas?
  • A complexidade aumentou ou diminuiu?
  • Quantos arquivos ou classes foram tocados?

Imagine que cada mudança no código é um pacote de encomenda. Em vez de abrir o pacote para ver o que tem dentro, o sistema pesa o pacote, mede o tamanho e conta quantos lados ele tem.

3. O Segredo: O "Agrupamento por Semelhança" (Clustering)

Aqui entra a mágica da matemática. O sistema pega todas essas "fichas técnicas" e usa um algoritmo chamado k-means (que funciona como um organizador de armário muito eficiente).

  • A Analogia da Festa: Imagine que você tem 2.000 convidados numa festa e quer separá-los em grupos sem saber quem eles são. Você olha para o que eles estão vestindo e o que estão segurando.
    • O sistema percebe que 500 pessoas estão todas de terno e segurando maletas (grupo "Correção de Bugs").
    • Outras 300 estão de camiseta e segurando ferramentas (grupo "Novas Funcionalidades").
    • Outras 200 estão apenas trocando de lugar na sala (grupo "Refatoração/Reorganização").

O sistema agrupa automaticamente as mudanças que parecem "iguais" em termos de medidas. Ele não sabe o nome do grupo, apenas que "esses aqui são parecidos entre si".

4. O Toque Humano: O "Tradutor" (Mapeamento)

O sistema é inteligente, mas não é um gênio. Ele sabe que "o grupo A" é diferente do "grupo B", mas não sabe que o "grupo A" significa "Consertar Bug".

Aqui entra o especialista humano (o revisor). Ele olha para apenas um ou dois exemplos de cada grupo que o sistema criou e diz:

  • "Ah, esse grupo aqui é de Conserto de Bugs."
  • "Esse outro é de Novas Funcionalidades."

Depois que o especialista dá o nome aos grupos, o sistema aplica esse rótulo a todas as mudanças daquele grupo automaticamente.

5. Por que isso é incrível? (O Resultado)

No estudo de caso com o projeto NHibernate (um software famoso), os números foram impressionantes:

  • Havia 2.069 mudanças para revisar.
  • Sem o sistema, um humano teria que ler e classificar todas as 2.069.
  • Com o sistema, o humano só precisou classificar 73 mudanças (apenas para ensinar o sistema a reconhecer os grupos).
  • O sistema fez o resto sozinho, com 75% de precisão.

Isso significa que a equipe economizou horas e horas de trabalho chato, permitindo que os revisores focassem apenas nas mudanças que realmente importam ou que o sistema teve dúvida.

Resumo em uma frase

O trabalho de Knyazev é como criar um robô organizador que separa a "sujeira" do código em pilhas baseadas no tamanho e formato delas, e pede a um humano apenas para dar um nome a cada pilha, economizando tempo e evitando erros humanos por cansaço.

Palavras-chave da ideia:

  • Métricas: A "ficha técnica" da mudança.
  • Clustering (Agrupamento): Colocar coisas parecidas na mesma caixa.
  • Mapeamento: O humano dizendo o que tem na caixa.
  • Resultado: Menos trabalho manual, mais qualidade e menos erros.

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →