Molti sviluppatori hanno già cominciato a esplorare le potenzialità dell'intelligenza artificiale per generare codice e velocizzare così il processo di sviluppo, testing e messa in produzione del software.
Sebbene i copiloti di IA stiano dimostrando capacità sempre più avanzate nella generazione di codice, essi sono proni a numerosi errori e, se il loro lavoro non viene monitorato, possono introdurre nella codebase una serie di problemi che minano la sicurezza, la qualità e l'affidabilità dei software.
Bernd Greifeneder, CTO e fondatore di Dynatrace, spiega che uno dei motivi per i quali il codice generato dall'IA può essere pericoloso è perché i modelli si basano sull'"apprendimento probabilistico", ovvero combinano in maniera probabilistica le fonti da cui hanno "imparato" a programmare.
Queste fonti però potrebbero avere contenuti obsoleti e in ogni caso la loro combinazione potrebbe non essere ottimale. Se adesso le codebase da cui attinge l'IA sono di qualità accettabile, man mano che gli sviluppatori generanno codice tramite IA il valore del codice generato calerà, riducendo la qualità complessiva del software.
Greifeneder sottolinea inoltre che l'IA aumenta i problemi legati al copia/incolla incontrollato, poiché di fatto i chatbot non fanno che automatizzare questo processo su larga scala. Copiare e incollare porzioni di codice senza controllarne la qualità deteriora il software e riduce la manutenibilità della codebase.
Ormai è la normalità per i team di sviluppo aver a che fare con tempistiche molto strette che impediscono la review del codice, e non hanno di certo tempo per controllare manualmente l'output dell'IA generativa. In molti casi gli sviluppatori usano dei tool aggiuntivi per controllare il codice generato, rifattorizzarlo e fixarlo, ma visto che i modelli seguono tutti un modello di apprendimento probabilistico, anche i tool di monitoraggio sono soggetti agli stessi errori degli altri.
I tool di IA aumentano anche la frequenza dei cosiddetti code churn, ovvero la continua scrittura e cancellazione di codice che, alla lunga, riduce la qualità dell'output. Rimaneggiando lo stesso codice più volte si aumenta il rischio di introdurre bug e GitClear prevede che nel 2024, a causa dell'uso diffuso e non supervisionato dell'IA, il volume di codice aggiornato o su cui viene fatto roll back raddoppierà.
Affidarsi completamente all'IA per la generazione di codice significa aumentare il rischio di diffusione di nuove vulnerabilità ed errori, mettendo in pericolo utenti e aziende.
Gestire i rischi del codice generato da IA
Per proteggersi dai rischi derivanti dalla generazione di codice tramite IA, Greifeneder sottolinea l'importanza di immunizzare le applicazioni dal codice vulnerabile; il modo più efficace per farlo è automatizzare il processo di individuazione delle vulnerabilità, definire delle categorie di rischio e delle priorità e applicare policy che proteggono dall'esecuzione di codice dannoso.
Le organizzazioni che usano copiloti di IA per il processo di sviluppo dovrebbero potenziare la visibilità sulle applicazioni per rispondere alle anomalie prima che causino problemi, individuando cioè tutti quei potenziali vettori d'attacco e risolvendoli prima del rilascio in produzione.
Greifeneder suggerisce anche di utilizzare diversi tipi di IA nello stesso framework, iniziando per esempio con l'introduzione dell'IA causale che offre visibilità in tempo reale sugli eventi del flusso e sul comportamento del codice tra i vari componenti del software.
L'IA predittiva, inoltre, permette di anticipare i cambiamenti futuri nel comportamento del software basandosi sui pattern dei dati storici in modo che gli sviluppatori possano anticipare i problemi.
L'IA diventerà ben presto un alleato fondamentale per lo sviluppo software, ma è importante che le organizzazioni impostino controlli efficaci e robusti per prevenire errori e vulnerabilità, proteggendosi dai rischi dell'automazione.