L’IA generativa può essere utilizzata per generare codice sorgente, documentazione, casi di test e molte altre risorse che possono essere utilizzate dagli sviluppatori. Ma per usarla in modo produttivo serve una formazione adeguata
Senior IT Architect, Boston Consulting Group Platinion
Un’IA generativa è una tecnologia che permette di creare nuovi dati o contenuti da dati di input esistenti, quindi, teoricamente è in grado di portare valore nel ciclo produttivo dei prodotti digitali. Come?
Nel contesto dello sviluppo di prodotti digitali, l’intelligenza artificiale generativa può essere utilizzata per generare codice sorgente, documentazione, casi di test e molte altre risorse che possono essere utilizzate dagli sviluppatori.
L’obiettivo principale è quello di fornire supporto IA programmatori, aiutandoli a creare software in modo più rapido ed efficiente.
Uno sviluppatore potrebbe utilizzare i nuovi tool per generare documentazione senza dover eseguire questa attività, come programmatore di coppia per eseguire unit test o come generatore di codice specifico.
Figura 1 – Esempio di generazione di codice SQL per rappresentare tre tabelle in relazione tra loro
L’intelligenza artificiale generativa può essere vista come un partner creativo, quindi, che aiuta gli sviluppatori a produrre software in modo più rapido e accurato in un rapporto collaborativo. Può suggerire idee, soluzioni e alternative IA programmatori, che possono quindi valutarle e adattarle alle loro esigenze, sia dal punto di vista del codice che del processo. L’intelligenza artificiale generativa può analizzare il codice esistente e suggerire modifiche o miglioramenti. Inoltre, può suggerire righe di codice che risolvono problemi specifici, fornire suggerimenti su come ottimizzare il codice o persino creare nuove funzionalità per il prodotto digitale, che il programmatore utilizza quindi per inserirlo nel contesto dell’applicazione.
Figura 2 – Esempio di codice python che fornisce metodi per interrogare il database ed esporre i dati ad un frontend html
L’IA generativa per la creazione di documentazione software
Un altro esempio di utilizzo dell’IA generativa è la creazione di documentazione software. In questo caso, l’intelligenza artificiale generativa può analizzare il codice sorgente e generare automaticamente la documentazione che descrive le funzioni del software, i parametri di input e output e altre informazioni pertinenti.
Tuttavia, il lavoro degli sviluppatori non può essere sostituito: sebbene l’IA possa fornire idee e suggerimenti utili, gli sviluppatori sono responsabili della valutazione e dell’adattamento di queste idee alle loro esigenze specifiche.
Figura 3 – Una domanda troppo generica produrrà una risposta generica dando dettagli tipicamente di processo
Risolvere i problemi tecnici e migliorare la sicurezza del software con l’IA
Un altro vantaggio dell’utilizzo dell’intelligenza artificiale generativa nello sviluppo di prodotti digitali è che può aiutare a risolvere i problemi tecnici in modo più rapido ed efficiente. Ad esempio, può essere utilizzata per creare automaticamente casi di test riducendo il tempo e gli sforzi necessari per testare manualmente il software. Inoltre, può essere utilizzato per identificare e risolvere problemi di codice sorgente, consentendo agli sviluppatori di correggere rapidamente eventuali errori o bug o persino di creare i propri script per il rilascio automatizzato dell’infrastruttura o per eseguire automazioni specifiche.
L’intelligenza artificiale generativa, con richieste adeguatamente formulate e tutti gli input necessari, può aiutare a migliorare la sicurezza del software. Per identificare potenziali vulnerabilità note nel codice sorgente e suggerire soluzioni per risolverle. Infine, può essere utilizzato per creare sistemi di monitoraggio e analisi dei dati in tempo reale, che consentono di rilevare eventuali problemi di sicurezza prima che diventino critici.
Un modello condiviso
In definitiva, l’uso dell’IA generativa nello sviluppo del software può offrire molti vantaggi all’interno del processo di produzione. Potremmo utilizzare un modello condiviso da chi produce software o prodotti digitali e pensare in modo pragmatico. Il risultato è un’eccellente crescita della produttività.
Figura 4 – Modello di delivery tradizionale e cambiamenti attesi
Questo modello prevede che qualsiasi progetto per lo sviluppo di una soluzione digitale sia formato da fasi, che tipicamente hanno un peso diverso sull’intero programma:
Fase di analisi: in questa fase il requisito viene analizzato e formalizzato per cristallizzare tutti i passaggi e le fasi che verranno implementate. In genere, questa fase consiste nel 20% dello sforzo totale del progetto
Fase di sviluppo: in questa fase vengono realizzati tutti i componenti software che sono stati descritti nell’analisi; Durante questa fase, gli sviluppatori devono eseguire i primi test specifici chiamati unit test. In genere, questa fase consiste nel 50% dello sforzo totale del progetto
Fase di test: Durante questa fase viene testato il software. Il test è suddiviso in molte sottofasi a seconda del tipo di test da eseguire, test di sistema, test di integrazione ed eventuali test di prestazione. Questa fase difficile consiste in genere nel 25% dello sforzo totale del progetto.
Fase di rilascio: durante questa fase i vari componenti software vengono impacchettati per essere poi rilasciati in un insieme di moduli che possono essere interpretati dalla piattaforma individuata per creare il prodotto digitale. Questa fase consiste tipicamente nel 5% dello sforzo totale
Dato l’importante aiuto che un’IA generativa fornisce, mediamente uno sviluppatore può ridurre del 50% lo sforzo necessario per costruire un oggetto che sia in grado di comunicare in modo efficace, spiegando le proprie esigenze. Se l’analisi è fatta bene ed è tecnicamente valida, puoi dare il documento di analisi all’IA generativa e lasciare che faccia il resto. Ciò che sarà quindi fondamentale è che il programmatore comprenda nel dettaglio ciò che viene generato per ottimizzarlo o integrarlo in un altro. Passaggio di fondamentale importanza perché un’IA generativa non può sostituire il lavoro di un programmatore umano.
Come anticipato, durante la fase di test l’IA può creare un vantaggio, in quanto è in grado di preparare script di test o rilasciare o distribuire descrittori di infrastrutture come coda. Ciò potrebbe ridurre la fase di test di un altro 25%.
Per concludere, che per utilizzare l’IA generativa in modo produttivo, questa richiede una formazione adeguata. Un’IA generativa è come un programmatore di coppia che aiuta lo sviluppatore stesso ad essere più efficace e veloce nella produzione di software di qualità.
Ciò che abbiamo visto implica la necessità di definire un nuovo modo di lavorare per le persone che partecipano a un progetto IT. Questo modello operativo dovrà considerare il contributo dei contenuti da parte di una IA generativa e utilizzarlo per aumentare la produttività del gruppo di progetto stesso. È ancora presto per definire il vantaggio competitivo che avrà chi lo implementerà, ma siamo ormai ad un passo dalla scoperta.
Figura 5 – Linguaggi imperativi estremamente adatti alle caratteristiche dell’IA generativa
Quello che abbiamo affermato finora è vero per i cosiddetti linguaggi imperativi, come java, c, c++, c#, python, sql, Pl/Sql; Questi linguaggi hanno tutti una cosa in comune: spiegano in modo preciso e inequivocabile ciò che la macchina deve fare per raggiungere un determinato obiettivo. Tuttavia, ci sono linguaggi più avanzati di questi, chiamati “estensibili”, che si basano cioè sulla descrizione formale di una data sequenza di istruzioni. Questa differenza rappresenta il limite dell’IA generativa.
Figura 6 – I linguaggi descrittivi o metalinguaggi rappresentano un limite dell’attuale IA generativa
Quando il codice sorgente può essere scritto in modalità dichiarativa e non univoca, ad esempio utilizzando un metalinguaggio estensibile come XML (eXtensible Markup Language), allora l’output fornito dalla GenAI potrebbe utilizzare i “propri” elementi non accettati dagli interpreti standard del codice sorgente.
In questo modo, il meta-linguaggio (XML) è un formalismo in grado di rappresentare i linguaggi, e la presenza della parola “meta” infastidisce l’IA generativa.
Figura 7 – Esempi di tecnologie di sviluppo 5G che non si sposano con l’utilizzo dell’IA generativa
Chiedendo ad una IA generativa di costruire un elemento software appartenente ad una piattaforma 5G, comprendendo il compito assegnatogli, genererà un output concettualmente corretto, ma costruito secondo un proprio dialetto interno non più compatibile con la piattaforma selezionata dal punto di vista programmatico; pertanto, non utilizzabile. Gli sviluppatori di questi tipi di codice non saranno in grado di beneficiare dell’aiuto dell’IA generativa.
Conclusioni
In definitiva, possiamo concludere che il mercato della produzione di software potrà trarre beneficio dall’IA generativa per essere in grado di aumentare la produttività di determinati strumenti che richiedono un livello di dettaglio molto elevato dal punto di vista della programmazione e hanno una natura imperativa. Probabilmente il prossimo passo evolutivo di questo tipo di IA sarà proprio quello di renderle capaci di molteplici livelli di astrazione concettuale.
Come l’intelligenza artificiale generativa può aiutare le aziende moderne a ridurre il time-to-market dei loro prodotti digitali
Autori:
Roberto Bosisio, Managing Director e Partner, Boston Consulting Group
Riccardo Pallozzi, Principal, Boston Consulting Group Platinion
Andrea Testa, Senior IT Architect, Boston Consulting Group Platinion
Un’IA generativa è una tecnologia che permette di creare nuovi dati o contenuti da dati di input esistenti, quindi, teoricamente è in grado di portare valore nel ciclo produttivo dei prodotti digitali.
Come?
Nel contesto dello sviluppo di prodotti digitali, l’intelligenza artificiale generativa può essere utilizzata per generare codice sorgente, documentazione, casi di test e molte altre risorse che possono essere utilizzate dagli sviluppatori. L’obiettivo principale è quello di fornire supporto IA programmatori, aiutandoli a creare software in modo più rapido ed efficiente. Uno sviluppatore potrebbe utilizzare i nuovi tool per generare documentazione senza dover eseguire questa attività, come programmatore di coppia per eseguire unit test o come generatore di codice specifico.
Figura 1 – Esempio di generazione di codice SQL per rappresentare tre tabelle in relazione tra loro
L’intelligenza artificiale generativa può essere vista come un partner creativo, quindi, che aiuta gli sviluppatori a produrre software in modo più rapido e accurato in un rapporto collaborativo. Può suggerire idee, soluzioni e alternative IA programmatori, che possono quindi valutarle e adattarle alle loro esigenze, sia dal punto di vista del codice che del processo. L’intelligenza artificiale generativa può analizzare il codice esistente e suggerire modifiche o miglioramenti. Inoltre, può suggerire righe di codice che risolvono problemi specifici, fornire suggerimenti su come ottimizzare il codice o persino creare nuove funzionalità per il prodotto digitale, che il programmatore utilizza quindi per inserirlo nel contesto dell’applicazione.
Figura 2 – Esempio di codice python che fornisce metodi per interrogare il database ed esporre i dati ad un frontend html
Un altro esempio di utilizzo dell’IA generativa è la creazione di documentazione software. In questo caso, l’intelligenza artificiale generativa può analizzare il codice sorgente e generare automaticamente la documentazione che descrive le funzioni del software, i parametri di input e output e altre informazioni pertinenti.
Tuttavia, il lavoro degli sviluppatori non può essere sostituito: sebbene l’IA possa fornire idee e suggerimenti utili, gli sviluppatori sono responsabili della valutazione e dell’adattamento di queste idee alle loro esigenze specifiche.
Figura 3 – Una domanda troppo generica produrrà una risposta generica dando dettagli tipicamente di processo
Un altro vantaggio dell’utilizzo dell’intelligenza artificiale generativa nello sviluppo di prodotti digitali è che può aiutare a risolvere i problemi tecnici in modo più rapido ed efficiente. Ad esempio, può essere utilizzata per creare automaticamente casi di test riducendo il tempo e gli sforzi necessari per testare manualmente il software. Inoltre, può essere utilizzato per identificare e risolvere problemi di codice sorgente, consentendo agli sviluppatori di correggere rapidamente eventuali errori o bug o persino di creare i propri script per il rilascio automatizzato dell’infrastruttura o per eseguire automazioni specifiche.
L’intelligenza artificiale generativa, con richieste adeguatamente formulate e tutti gli input necessari, può aiutare a migliorare la sicurezza del software. Per identificare potenziali vulnerabilità note nel codice sorgente e suggerire soluzioni per risolverle. Infine, può essere utilizzato per creare sistemi di monitoraggio e analisi dei dati in tempo reale, che consentono di rilevare eventuali problemi di sicurezza prima che diventino critici.
In definitiva, l’uso dell’IA generativa nello sviluppo del software può offrire molti vantaggi all’interno del processo di produzione. Potremmo utilizzare un modello condiviso da chi produce software o prodotti digitali e pensare in modo pragmatico. Il risultato è un’eccellente crescita della produttività.
Figura 4 – Modello di delivery tradizionale e cambiamenti attesi
Questo modello prevede che qualsiasi progetto per lo sviluppo di una soluzione digitale sia formato da fasi, che tipicamente hanno un peso diverso sull’intero programma:
Fase di analisi: in questa fase il requisito viene analizzato e formalizzato per cristallizzare tutti i passaggi e le fasi che verranno implementate. In genere, questa fase consiste nel 20% dello sforzo totale del progetto
Fase di sviluppo: in questa fase vengono realizzati tutti i componenti software che sono stati descritti nell’analisi; Durante questa fase, gli sviluppatori devono eseguire i primi test specifici chiamati unit test. In genere, questa fase consiste nel 50% dello sforzo totale del progetto
Fase di test: Durante questa fase viene testato il software. Il test è suddiviso in molte sottofasi a seconda del tipo di test da eseguire, test di sistema, test di integrazione ed eventuali test di prestazione. Questa fase difficile consiste in genere nel 25% dello sforzo totale del progetto.
Fase di rilascio: durante questa fase i vari componenti software vengono impacchettati per essere poi rilasciati in un insieme di moduli che possono essere interpretati dalla piattaforma individuata per creare il prodotto digitale. Questa fase consiste tipicamente nel 5% dello sforzo totale
Dato l’importante aiuto che un’IA generativa fornisce, mediamente uno sviluppatore può ridurre del 50% lo sforzo necessario per costruire un oggetto che sia in grado di comunicare in modo efficace, spiegando le proprie esigenze. Se l’analisi è fatta bene ed è tecnicamente valida, puoi dare il documento di analisi all’IA generativa e lasciare che faccia il resto. Ciò che sarà quindi fondamentale è che il programmatore comprenda nel dettaglio ciò che viene generato per ottimizzarlo o integrarlo in un altro. Passaggio di fondamentale importanza perché un’IA generativa non può sostituire il lavoro di un programmatore umano.
Come anticipato, durante la fase di test l’IA può creare un vantaggio, in quanto è in grado di preparare script di test o rilasciare o distribuire descrittori di infrastrutture come coda. Ciò potrebbe ridurre la fase di test di un altro 25%.
Per concludere, che per utilizzare l’IA generativa in modo produttivo, questa richiede una formazione adeguata. Un’IA generativa è come un programmatore di coppia che aiuta lo sviluppatore stesso ad essere più efficace e veloce nella produzione di software di qualità.
Ciò che abbiamo visto implica la necessità di definire un nuovo modo di lavorare per le persone che partecipano a un progetto IT. Questo modello operativo dovrà considerare il contributo dei contenuti da parte di una IA generativa e utilizzarlo per aumentare la produttività del gruppo di progetto stesso. E’ ancora presto per definire il vantaggio competitivo che avrà chi lo implementerà, ma siamo ormai ad un passo dalla scoperta.
Figura 5 – Linguaggi imperativi estremamente adatti alle caratteristiche dell’IA generativa
Quello che abbiamo affermato finora è vero per i cosiddetti linguaggi imperativi, come java, c, c++, c#, python, sql, Pl/Sql; Questi linguaggi hanno tutti una cosa in comune: spiegano in modo preciso e inequivocabile ciò che la macchina deve fare per raggiungere un determinato obiettivo. Tuttavia, ci sono linguaggi più avanzati di questi, chiamati “estensibili”, che si basano cioè sulla descrizione formale di una data sequenza di istruzioni. Questa differenza rappresenta il limite dell’IA generativa.
Figura 6 – I linguaggi descrittivi o metalinguaggi rappresentano un limite dell’attuale IA generativa
Quando il codice sorgente può essere scritto in modalità dichiarativa e non univoca, ad esempio utilizzando un metalinguaggio estensibile come XML (eXtensible Markup Language), allora l’output fornito dalla GenAI potrebbe utilizzare i “propri” elementi non accettati dagli interpreti standard del codice sorgente.
In questo modo, il meta-linguaggio (XML) è un formalismo in grado di rappresentare i linguaggi, e la presenza della parola “meta” infastidisce l’IA generativa.
Figura 7 – Esempi di tecnologie di sviluppo 5G che non si sposano con l’utilizzo dell’IA generativa
Chiedendo ad una IA generativa di costruire un elemento software appartenente ad una piattaforma 5G, comprendendo il compito assegnatogli, genererà un output concettualmente corretto, ma costruito secondo un proprio dialetto interno non più compatibile con la piattaforma selezionata dal punto di vista programmatico; pertanto, non utilizzabile. Gli sviluppatori di questi tipi di codice non saranno in grado di beneficiare dell’aiuto dell’IA generativa.
In definitiva, possiamo concludere che il mercato della produzione di software potrà trarre beneficio dall’IA generativa per essere in grado di aumentare la produttività di determinati strumenti che richiedono un livello di dettaglio molto elevato dal punto di vista della programmazione e hanno una natura imperativa. Probabilmente il prossimo passo evolutivo di questo tipo di IA, sarà proprio quello di renderle capaci di molteplici livelli di astrazione concettuale.
Su questo sito utilizziamo cookie tecnici necessari alla navigazione e funzionali all’erogazione del servizio.
Utilizziamo i cookie anche per fornirti un’esperienza di navigazione sempre migliore, per facilitare le interazioni con le nostre funzionalità social e per consentirti di ricevere comunicazioni di marketing aderenti alle tue abitudini di navigazione e ai tuoi interessi.
Puoi esprimere il tuo consenso cliccando su ACCETTA TUTTI I COOKIE. Chiudendo questa informativa, continui senza accettare.
Potrai sempre gestire le tue preferenze accedendo al nostro COOKIE CENTER e ottenere maggiori informazioni sui cookie utilizzati, visitando la nostra COOKIE POLICY.
ACCETTA
PIÙ OPZIONI
Cookie Center
ACCETTA TUTTO
RIFIUTA TUTTO
Tramite il nostro Cookie Center, l'utente ha la possibilità di selezionare/deselezionare le singole categorie di cookie che sono utilizzate sui siti web.
Per ottenere maggiori informazioni sui cookie utilizzati, è comunque possibile visitare la nostra COOKIE POLICY.
ACCETTA TUTTO
RIFIUTA TUTTO
COOKIE TECNICI
Strettamente necessari
I cookie tecnici sono necessari al funzionamento del sito web perché abilitano funzioni per facilitare la navigazione dell’utente, che per esempio potrà accedere al proprio profilo senza dover eseguire ogni volta il login oppure potrà selezionare la lingua con cui desidera navigare il sito senza doverla impostare ogni volta.
COOKIE ANALITICI
I cookie analitici, che possono essere di prima o di terza parte, sono installati per collezionare informazioni sull’uso del sito web. In particolare, sono utili per analizzare statisticamente gli accessi o le visite al sito stesso e per consentire al titolare di migliorarne la struttura, le logiche di navigazione e i contenuti.
COOKIE DI PROFILAZIONE E SOCIAL PLUGIN
I cookie di profilazione e i social plugin, che possono essere di prima o di terza parte, servono a tracciare la navigazione dell’utente, analizzare il suo comportamento ai fini marketing e creare profili in merito ai suoi gusti, abitudini, scelte, etc. In questo modo è possibile ad esempio trasmettere messaggi pubblicitari mirati in relazione agli interessi dell’utente ed in linea con le preferenze da questi manifestate nella navigazione online.