software per aziende

Come l’IA generativa aiuta a ridurre il time-to-market dei prodotti digitali



Indirizzo copiato

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

Pubblicato il 6 giu 2023

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



Automation,Software,To,Archiving,And,Efficiently,Manage,And,Information,Files.

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.

RETEX_WP_The Voice of customer China

L’obiettivo principale è quello di fornire supporto IA programmatori, aiutandoli a creare software in modo più rapido ed efficiente.

L’IA come partner “creativo” degli sviluppatori

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:

  1. 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
  2. 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
  3. 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.
  4. 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.

EU Stories - La coesione innova l'Italia

Tutti
Iniziative
Analisi
Iniziative
Parte la campagna di comunicazione COINS
Analisi
La politica di coesione europea: motore della transizione digitale in Italia
Politiche UE
Il dibattito sul futuro della Politica di Coesione
Mobilità Sostenibile
L’impatto dei fondi di coesione sul territorio: un’esperienza di monitoraggio civico
Iniziative
Digital transformation, l’Emilia-Romagna rilancia sulle comunità tematiche
Politche ue
Fondi Coesione 2021-27: la “capacitazione amministrativa” aiuta a spenderli bene
Finanziamenti
Da BEI e Banca Sella 200 milioni di euro per sostenere l’innovazione di PMI e Mid-cap italiane
Analisi
Politiche di coesione Ue, il bilancio: cosa ci dice la relazione 2024
Politiche UE
Innovazione locale con i fondi di coesione: progetti di successo in Italia
Iniziative
Parte la campagna di comunicazione COINS
Analisi
La politica di coesione europea: motore della transizione digitale in Italia
Politiche UE
Il dibattito sul futuro della Politica di Coesione
Mobilità Sostenibile
L’impatto dei fondi di coesione sul territorio: un’esperienza di monitoraggio civico
Iniziative
Digital transformation, l’Emilia-Romagna rilancia sulle comunità tematiche
Politche ue
Fondi Coesione 2021-27: la “capacitazione amministrativa” aiuta a spenderli bene
Finanziamenti
Da BEI e Banca Sella 200 milioni di euro per sostenere l’innovazione di PMI e Mid-cap italiane
Analisi
Politiche di coesione Ue, il bilancio: cosa ci dice la relazione 2024
Politiche UE
Innovazione locale con i fondi di coesione: progetti di successo in Italia

Articoli correlati