Negli ultimi anni i grandi modelli di linguaggio (LLM) hanno conquistato il mondo della programmazione. Oggi non solo scrivono codice, ma stanno anche iniziando a controllarlo. Ma come funziona davvero? In pratica, gli LLM possono essere usati come assistenti per la verifica del software, cioè per trovare errori, vulnerabilità o comportamenti inattesi. Alcuni ricercatori li hanno collegati a strumenti tradizionali di analisi statica, come i linters, oppure a verificatori formali che dimostrano matematicamente la correttezza di un programma. Il trucco sta nel “prompt engineering”: si formula una domanda precisa al modello, ad esempio “cerca tutti i possibili overflow in questa funzione”, e il modello restituisce suggerimenti o addirittura codice corretto.
Un altro aspetto importante è la verifica del codice generato dagli stessi LLM. Quando un modello scrive una funzione, è fondamentale capire se è sicura. Alcuni studi hanno creato pipeline che, subito dopo la generazione, passano il codice attraverso scanner di vulnerabilità o sistemi di patch automatiche. In questo modo, l’LLM non è solo l’autore, ma anche il revisore.
Le ricerche mostrano che le soluzioni ibride – LLM più strumenti tradizionali – funzionano meglio di ciascuna parte da sola. Tuttavia, restano sfide: i modelli possono inventare bug, le loro risposte non sono sempre spiegabili e la scalabilità su progetti enormi è ancora un problema. Il futuro sembra puntare su una stretta collaborazione tra intelligenza artificiale e ingegneria del software, con l’obiettivo di rendere il codice più sicuro e affidabile.
