Era una delle
grandi sfide dell'intelligenza artificiale: rivoluzionare il Software Development Life Cycle (più brevemente, SDLC). Nel corso degli anni, con l’obiettivo di
automatizzare i compiti più ripetitivi, molti step del ciclo di vita dello sviluppo software sono stati potenziati
grazie all’utilizzo di tecniche rule-based. Non sempre però questo approccio si è dimostrato efficace, per l’estrema complessità di alcune attività. Che quindi necessitano di un approccio diverso, con integrazioni e dipendenza tra i diversi layer di funzionalità.
Ed è qui che l’intelligenza artificiale si è dimostrata una soluzione efficace: l’
apprendimento automatico a partire da grandi moli di dati e di esempi permette, infatti, di
superare le difficoltà introdotte dalla complessità del problema, risultando vincente nei casi in cui l’approccio rule-based non fornisca i risultati sperati.
Il trend emergente nell’ambito del SDLC, come sottolineato anche nell’Osservatorio Reply sugli AI-powered Software Development Tools, è decisamente uno
spostamento del lavoro dall’operatore umano a strumenti dedicati, ovviamente AI-Powered. Questa trasformazione, partita con la delega alla macchina dei task più ripetitivi grazie allo sfruttamento di tecniche rule-based, oggi permette di
estendere l’insieme dei compiti delegabili all’AI che vedono l’impiego di tecniche automatizzate al posto di skill ed expertise umane.
Gli ambiti di applicazione dell’AI al SDLC stanno registrando un’evoluzione molto rapida, e nel mercato stanno nascendo sempre più tool mirati a vari ambiti: raccolta e analisi requisiti, studio di fattibilità, progettazione, codifica, test, manutenzione.
Sapersi orientare fra le numerose possibilità offerte dagli strumenti di AI risulta decisivo all’interno di un panorama estremamente vasto e frammentato. Per farlo è necessario
essere sempre aggiornati sulle evoluzioni del mercato e
maturare una concreta esperienza sulle reali capacità che questi tool offrono. Per questo, ad esempio, al nostro interno abbiamo definito una metodologia che ci aiutasse a identificare l’insieme dei task delegabili all’AI anche per fasi del ciclo di vita dello sviluppo software.
In fase di
analisi e gestione dei requisiti, gli strumenti cosiddetti di AI-Powered Requirements Management permettono di affrontare alcune sfide complesse. Come l’efficacia della comunicazione fra utenti e analisti, il coinvolgimento degli stakeholder e la gestione dell’evoluzione dei requisiti durante il processo di analisi.
Durante la
pianificazione delle risorse e delle attività, poi, gli AI-Powered Project Management tool consentono di tracciare l’evoluzione delle singole attività ed estrapolare modelli predittivi sull’andamento del progetto in grado di supportare tutto il processo di decision making. Successivamente, permettono di automatizzare il planning delle attività ed eventualmente abilitare lo scaling automatico delle risorse da allocare.
Nel corso dell’
attività di progettazione e creazione di User Interface si ricorre agli AI-Powered Design tool, che sono in grado di convertire schizzi, disegni su carta, istruzioni vocali o qualsiasi altro input umano in codice, creando veri e propri prototipi. Sebbene l’interesse per questo ambito di applicazione sia molto alto, ci sono ancora
poche soluzioni sul mercato disponibili ed è indubbiamente un tema da tenere sotto osservazione per il prossimo futuro.
Al contrario,
la fase della codifica è quello in cui allo stato dell’arte è possibile sfruttare al meglio le capacità caratterizzanti l’AI: il riconoscimento di schemi e l’autoapprendimento. Gli strumenti detti di
MLonCode (Machine Learning on source Code) sfruttano l’intelligenza artificiale per eseguire automaticamente attività di scrittura del codice e
supportare gli sviluppatori nella creazione di software di alta qualità in modo facile e veloce. Eliminando attività ripetitive, ottimizzando la fase di correzione dei bug, intercettando eventuali vulnerabilità già sul nascere.
Il quinto stadio è quello relativo alla
fase di testing. Gli strumenti di AI-Powered Testing sono orientati all’automatizzazione delle fasi del test, con lo scopo di rendere tale attività più intelligente ed efficiente allo stesso tempo. Riducendo il tempo speso da operatori umani in attività ripetitive e quindi più inclini a subire errori, creando test più stabili e garantendo una release di software molto più veloce.
In ultimo, lo step di
manutenzione è coperto dalla famiglia dei tool di AI-Powered Ops che, grazie all’intrinseca capacità di identificare i pattern e quindi potenziali problemi a fronte di sintomi non necessariamente evidenti per un operatore umano, possono essere sfruttati per il dimensionamento delle risorse, il troubleshooting o il monitoring.
In generale la metodologia customer-centric sviluppata da Reply consente un’efficace e concreta valutazione e
pianificazione dell’adozione di un AI tool. L’avvento dell’intelligenza artificiale nel SDLC è certamente una soluzione efficace anche con il suo elevato grado di complessità. Ma solo se ci si saprà orientare tra le numerose soluzioni offerte si potranno cogliere appieno i vantaggi derivanti da tale rivoluzione.
Articolo a cura di Andrea Chiarentin e Ciro Lucio Tecce di Reply, AI Powerd Software Development Practice