← Ultimi articoli
💻 computer science

Beyond Resolved Rate: A Non-Functional Quality Study

Questo studio rivela che, sebbene i nuovi modelli di IA risolvano un numero maggiore di compiti di programmazione a livello di repository rispetto alle versioni precedenti, essi non dimostrano miglioramenti costanti nelle metriche di qualità non funzionali, quali l'analisi statica, la complessità del codice o l'uso delle risorse, nei compiti che entrambe le generazioni risolvono con successo.

Autori originali: Xin Sun, Daniel Ståhl, Kristian Sandahl, Christoph Kessler

Pubblicato 2026-07-22
📖 5 min di lettura🧠 Approfondimento

Autori originali: Xin Sun, Daniel Ståhl, Kristian Sandahl, Christoph Kessler

Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo

Immaginate un mondo in cui i computer hanno imparato a scrivere codice, agendo come instancabili programmatori junior capaci di correggere bug, costruire funzionalità e persino rifattorizzare interi progetti software. Questo è il regno dei Large Language Models (LLM) nell'ingegneria del software. Per molto tempo, l'unico modo in cui abbiamo giudicato questi programmatori digitali è stato porre una domanda semplice: "Hanno risolto il bug?". Se il codice superava i test, riceveva una stella d'oro. Questo è chiamato "correttezza funzionale". Ma solo perché il motore di un'auto si accende, non significa che i freni funzionino, che la vernice sia resistente o che l'efficienza del carburante sia buona. Nel mondo reale, il software deve essere sicuro, facile da aggiornare in seguito e abbastanza veloce da non far crashare il computer. Queste sono le "qualità non funzionali". La grande domanda che i ricercatori si pongono ora è: man mano che questi modelli di IA diventano più intelligenti e nuovi, stanno solo diventando più bravi a risolvere il problema immediato, o stanno anche scrivendo codice più pulito, sicuro ed efficiente?

Questo articolo, intitolato "Beyond Resolved Rate", si addentra proprio in questo mistero. Gli autori, un team dell'Università di Linköping in Svezia, hanno deciso di smettere di contare semplicemente quanti bug l'IA ha risolto e hanno iniziato a ispezionare come li ha risolti. Hanno trattato i modelli di IA come concorrenti in una competizione culinaria. I giudici (i ricercatori) hanno dato loro un compito specifico: correggere una ricetta rovinata (un bug in un progetto software). I modelli più vecchi erano i veterani, e i modelli più recenti erano le stelle emergenti. L'obiettivo non era solo vedere chi riusciva a servire un piatto dal sapore corretto (superamento dei test), ma vedere se i nuovi chef stessero usando ingredienti migliori, creando meno sprechi e rendendo la cucina più sicura per il cuoco successivo.

I ricercatori hanno allestito un esperimento rigoroso utilizzando un popolare benchmark chiamato SWE-bench Lite, che contiene compiti di riparazione software reali. Hanno messo a confronto due generazioni di modelli l'una contro l'altra provenienti da due diverse famiglie: la famiglia commerciale "Claude" e la famiglia open-source "DeepSeek". Hanno preso le patch (le correzioni del codice) generate dai modelli più vecchi e dai più recenti e le hanno sottoposte a una batteria di ispezioni altamente tecnologiche. Hanno utilizzato strumenti come CodeQL e CodeScene per scansionare rischi di sicurezza, strutture di codice disordinate e problemi di manutenibilità. Hanno anche cronometrato quanto tempo il codice impiegava per essere eseguito e hanno misurato quanta memoria consumava, trattando il computer come una bestia affamata che deve essere nutrita in modo efficiente.

I risultati sono stati un colpo di scena. I modelli più nuovi, "più intelligenti", hanno sicuramente risolto più bug. Hanno risolto più istanze rispetto ai loro fratelli maggiori, ottenendo un "tasso di risoluzione" più elevato. Tuttavia, quando i ricercatori hanno esaminato la qualità del codice per i compiti che entrambi i modelli sono riusciti a risolvere, la storia è cambiata. I modelli più recenti non hanno mostrato alcun miglioramento costante nelle qualità non funzionali. Infatti, i dati suggeriscono che i modelli più nuovi sono altrettanto propensi a introdurre "code smells", rischi di sicurezza o problemi di prestazione rispetto a quelli precedenti.

Nello specifico, lo studio ha rilevato che per i compiti risolti da entrambi i modelli, i nuovi modelli non hanno prodotto codice significativamente più pulito. Gli strumenti di analisi statica hanno mostrato che il numero di nuovi problemi introdotti era approssimativamente lo stesso per entrambe le generazioni. In termini di prestazioni, i modelli più recenti sono stati leggermente più "avidi" con le risorse. Nei compiti comuni, il modello Claude più recente ha utilizzato circa 0,048 secondi in più di tempo CPU e circa 4,5 MiB di memoria di picco rispetto al precedente. Il modello DeepSeek più recente ha utilizzato circa 0,5 MiB di memoria in più. Sebbene questi numeri siano piccoli, indicano che diventare più bravi a risolvere il bug non ha automaticamente significato diventare migliori nello scrivere codice efficiente.

Gli autori hanno anche esaminato il "gusto" del codice. Hanno controllato se i modelli più recenti evitassero abitudini specifiche errate, come nomi di variabili confondenti o importazioni disordinate. I risultati sono stati misti e incoerenti; a volte il modello più nuovo era migliore in una specifica regola, a volte lo era quello vecchio, ma non c'era una tendenza chiara che rendesse la nuova generazione universalmente superiore nella qualità del codice.

In definitiva, l'articolo suggerisce che, sebbene i modelli di IA stiano diventando migliori nel "cosa" (risolvere il bug), non stanno necessariamente diventando migliori nel "come" (scrivere codice di alta qualità e manutenibile) solo in virtù del fatto di essere più recenti. Gli autori avvertono che un tasso di successo più elevato nella risoluzione dei bug non garantisce un migliore ingegneria del software nel complesso. Sostengono che dobbiamo guardare oltre il semplice punteggio pass/fail e iniziare a misurare i costi nascosti del codice generato dall'IA, come i rischi di sicurezza e i problemi di manutenzione, per capire davvero come questi assistenti digitali stiano performando nel mondo reale.

Sommerso dagli articoli nel tuo campo?

Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.

Prova Digest →