L'intelligenza artificiale generativa ha dato il via a una nuova ondata di soluzioni innovative, destinate a snellire molti degli aspetti manuali, noiosi e dispendiosi del processo di sviluppo e distribuzione del software, accelerando di conseguenza i flussi di lavoro DevSecOps. Tuttavia, per realizzare il pieno potenziale dell'IA generativa, la tecnologia deve essere distribuita non solo nel momento della creazione del codice, bensì ovunque.
Secondo il nostro sondaggio del 2024 rivolto a oltre 5.000 professionisti DevSeOps (disponibile in inglese), la fase di scrittura del codice riguarda meno del 25% del lavoro di uno sviluppatore. Sono tantissime le attività essenziali, svolte dal primo commit alla messa in produzione del codice, che potrebbero beneficiare dell'intervento dell'IA.
L'intelligenza artificiale può essere integrata in ogni fase dal concepimento dell'idea fino alla distribuzione del software, per renderlo più sicuro ed efficiente in meno tempo. Ad esempio, un'attività banale come l'esame di una build non riuscita può essere ottimizzata utilizzando l'IA per individuare il problema e capire come risolverlo. Sebbene l'IA non sia in grado di eliminare del tutto l'attività, permette di snellire i passaggi e ridurre il tempo necessario per completarla.
Ecco cosa può fare il tuo team DevSecOps per iniziare a comprendere e a misurare l'impatto dell'IA generativa.
Il primo passo: eseguire una valutazione dei flussi di lavoro
Per poter comprendere appieno l'impatto dell'IA è necessario giocare d'anticipo, anche se potrebbe essere necessario rivedere in toto i flussi di lavoro. È fondamentale capire quale sia il flusso di lavoro ideale che ti permetterebbe di adottare un approccio coerente all'utilizzo dell'IA e implementare misure di protezione adeguate per mitigare eventuali rischi correlati all'integrazione dell'intelligenza artificiale.
Ad esempio, se il tuo team scrive codice sfruttando l'IA generativa, parte di quel codice potrebbe essere inficiato da vulnerabilità di sicurezza. È così che funziona. Pertanto, avrai bisogno di un flusso di lavoro che ti permetta di rilevare tali vulnerabilità e ridurre le possibilità che sfuggano ed entrino in produzione. Una volta consolidato il flusso di lavoro, puoi iniziare a integrare diverse funzionalità di intelligenza artificiale in modo più coerente al fine di aumentare la velocità di sviluppo.
Ecco un esempio di come la valutazione anticipata del flusso di lavoro possa apportare maggiori benefici nell'ambito dell'utilizzo dell'IA. Sebbene l'intelligenza artificiale permetta di creare test in modo automatico, ciò non dovrebbe avvenire dopo la creazione del codice. Gli sviluppatori non fanno parte del team di controllo qualità perché si occupano di testare solo il codice scritto in prima persona. Poiché l'IA generativa agisce in modo simile, è necessario che il flusso di lavoro per un test generato dall'intelligenza artificiale inizi in anticipo. Così facendo, gli sviluppatori possono utilizzare i dettagli dei ticket per elaborare in modo interattivo test unitari per il codice che vogliono scrivere. Considerando il flusso di lavoro, gli sviluppatori possono dapprima creare le richieste di merge con il test e successivamente, al momento di eseguire il pull del ramo per iniziare a lavorare sull'implementazione, i loro suggerimenti di codice saranno più pertinenti perché il contesto includerà test adeguati e la precisione delle risposte sarà molto maggiore.
Non potendo rinnovare tutti i flussi di lavoro contemporaneamente, ti suggeriamo di concentrarti su quelli inerenti alle maggiori problematiche di sviluppo e distribuzione del software, come la modernizzazione delle basi di codice legacy, la gestione di un aumento dei ticket di sicurezza o l'utilizzo di budget e personale sempre più ridotti.
Creare misure protettive per l'IA
Prendi in considerazione i rischi dell'adozione dell'IA dal punto di vista dell'interazione con i dati e metti in atto sistemi di protezione per mitigare tali rischi e soddisfare le esigenze di conformità della tua organizzazione. Valuta se l'archivio di dati a cui fai riferimento è adatto a gestire i dati vettoriali necessari per il funzionamento e il miglioramento dei modelli di intelligenza artificiale che stai utilizzando, specialmente mentre lavori con modelli linguistici di grandi dimensioni (LLM, acronimo di "large language models").
Coinvolgi i team specializzati nella conformità, in ambito giuridico e nel DevSecOps per sottoporre queste delicate questioni ai tuoi fornitori di soluzioni basate sull'IA. Troverai alcune indicazioni utili nell'AI Transparency Center di GitLab e nel post del nostro blog dedicato alla creazione di una strategia incentrata sulla trasparenza nell'ambito dell'utilizzo dell'intelligenza artificiale.
Fra le misure protettive da implementare, dovrai necessariamente ottimizzare la suite di strumenti di intelligenza artificiale che utilizzi durante l'intero ciclo di sviluppo del software e a ogni livello dell'organizzazione. Maggiore è il numero di strumenti utilizzati, più complicata sarà la gestione con conseguenti problemi operativi, difficoltà di controllo e rischi per la sicurezza, senza contare l'incremento dei costi generali.
Misurare l'impatto dell'IA
Valutare i cambiamenti nella produttività e altre metriche chiave sarà essenziale per comprendere veramente l'impatto dell'IA nella tua organizzazione. In genere, le organizzazioni esaminano l'output in base alla frequenza con cui inviano il codice in produzione, alle quattro metriche DORA o al tempo necessario per correggere i bug. Tuttavia, questo approccio non offre un quadro olistico della situazione.
In GitLab misuriamo l'impatto dell'IA standardizzando i flussi di lavoro all'interno della nostra struttura gerarchica formata da gruppi e progetti, in modo da poter aggregare le metriche acquisite partendo dai team fino ad arrivare alle unità aziendali e analizzando infine tali risultati direttamente all'interno dell'interfaccia utente.
Quando si integra l'intelligenza artificiale in una struttura già esistente è possibile riscontrare un aumento della velocità del processo di sviluppo, che include il tempo necessario per risolvere le vulnerabilità e verificare che le richieste di merge siano valutate dai giusti revisori e con test adeguati, abbreviando in tal modo le tempistiche necessarie per la revisione del codice. Ogni fase è visibile all'interno di GitLab, comprese le dipendenze e il delta necessario al team di sviluppo per proseguire durante tutte quelle fasi. Le dashboard mostrano una rappresentazione visiva della velocità, permettendoti di cambiare rotta sulla base dei dati a disposizione. Ad esempio, puoi decidere se rilasciare il software in produzione.
Utilizzi pratici di un assistente IA nel ciclo di distribuzione software
Ecco alcuni metodi per utilizzare gli assistenti IA come GitLab Duo in ogni fase del ciclo di sviluppo del software.
-
Scrivere le descrizioni delle richieste di merge: automatizza la creazione di descrizioni esaustive per le richieste di merge e sintetizza in modo rapido e preciso gli elementi più rilevanti di una serie di commit per una RM. In questo modo è possibile rilevare e segnalare le attività mancanti, basandoti sul codice scritto e sull'obiettivo del ticket correlato alla richiesta di merge.
-
Spiegare il codice in linguaggio naturale: i professionisti del controllo qualità possono utilizzare le spiegazioni del codice per comprenderlo facilmente e in tempi brevi. Ad esempio, se un RM include codice scritto in Rust e un insieme complesso di metodi, il tecnico incaricato può evidenziarli e ottenere un riassunto in linguaggio naturale che spiega la finalità della modifica. In questo modo si possono scrivere scenari di test di gran lunga più accurati per coprire un ampio spettro di circostanze, siano esse ottimali o problematiche.
-
Analisi della causa principale degli errori della pipeline: se le pipeline diventano più grandi e si prova a eseguire il refactoring, potrebbe verificarsi un malfunzionamento e tale circostanza può essere difficile da correggere, soprattutto se si eseguono una serie di script bash o un'immagine Docker sfruttando i comandi interni all'immagine. Puoi eseguire gli errori in cui ti imbatti tramite l'IA generativa, che ti indicherà una possibile causa principale e suggerirà una soluzione da copiare e incollare direttamente nel job di CI.
-
Risoluzione delle vulnerabilità: data l'urgenza di implementare un approccio Shift Left, i tecnici hanno dovuto acquisire rapidamente le competenze necessarie nell'ambito della sicurezza. Grazie all'IA generativa, possono accedere alla chat, individuare la vulnerabilità nel codice e persino aprire una RM automatizzata con una possibile correzione, il tutto all'interno della finestra di sviluppo e senza cambi di contesto.
GitLab Duo: il tuo unico punto di riferimento per funzionalità basate sull'IA generativa
Stiamo sviluppando GitLab Duo, il nostro toolbox sempre più ricco di funzionalità di intelligenza artificiale per la piattaforma DevSecOps, con potenti modelli di IA generativa e le tecnologie all'avanguardia di fornitori di servizi cloud su larga scala. Oggi, GitLab Duo offre una serie di funzionalità disponibili in diverse fasi di sviluppo (generale, beta e sperimentale), che vanno dai suggerimenti di codice all'assistente di chat conversazionale, passando per lo strumento di spiegazione delle vulnerabilità. Se utilizzato in modo coerente durante tutto il ciclo di sviluppo software, GitLab Duo è in grado di velocizzare di dieci volte le tempistiche, permettendo alle organizzazioni di ottimizzare le risorse e ai dipendenti di dedicarsi alle attività più produttive.
Secondo il report "Omdia Market Radar: AI-Assisted Software Development, 2023-24", GitLab Duo rappresenta uno dei prodotti "più adatti per lo sviluppo di applicazioni di livello aziendale" e i suoi "strumenti di assistenza basati sull'IA sono integrati in tutta la pipeline del SDLC".
Ecco una panoramica delle funzionalità di GitLab Duo in azione:
Capire come implementare l'IA in un ambiente DevSecOps
Scopri i risultati del nostro sondaggio rivolto a oltre 5.000 professionisti DevSecOps in tutto il mondo (disponibile in inglese) e ottieni informazioni utili su come le organizzazioni stanno incorporando l'IA nel ciclo di sviluppo software.
Leggi il report