Nelle attività di sviluppo software, il release management, ossia il processo di gestione dei rilasci di nuove versioni di una data applicazione software, gioca un ruolo particolarmente critico su almeno tre aspetti chiave: riduzione del rischio di progetto, controllo ottimale della creazione del valore e ottimizzazione dell’efficienza dello stesso processo di rilascio dei software. È dunque fondamentale organizzare il release management, facendo ricorso a tutte le pratiche e gli strumenti che possono favorire il suo miglioramento.
Release management, quali fasi controlla
Il release management è un processo di supervisione di una serie di attività, che non riguardano il solo rilascio finale della release, ma partono dalla fase di sviluppo del codice, e proseguono con la fase di test e di distribuzione per arrivare fino alla fase di supporto, che viene fornito per una data applicazione software. Da una prospettiva più ampia, il release management si può osservare come un processo che presiede il flusso di lavoro che va, dalla fase di progettazione, a quella di pubblicazione del software.
Oggi, il release management, fondendosi con le pratiche di sviluppo agile del software, diventa anche un flusso di lavoro coordinato da team interfunzionali, collaborativi, quindi un processo iterativo in cui tutte le fasi menzionate (sviluppo, test, distribuzione, rollout) sono sottoposte a verifiche e feedback continui, sia sui requisiti del software, sia sui risultati attesi. Tutto ciò, all’interno del processo, permette di correggere subito errori, apportare modifiche e rilasciare più velocemente release software corrette, e in grado di soddisfare le aspettative degli utenti a cui sono destinate.
Test e release management
Grazie all’approccio iterativo, e all’interno di un processo di release management ben strutturato, è possibile ridurre il rischio di sviluppare un prodotto software con bug e difetti che ne pregiudicano il successo, ma anche arrivare alla creazione di valore attraverso un percorso puntuale e sistematico. Quando poi il processo di release management si armonizza con un paradigma di sviluppo e distribuzione del software come DevOps, si può raggiungere anche il massimo beneficio in termini di riduzione del tempo, e di aumento della frequenza dei rilasci delle release software.
Nel release management, la fase di ricezione della richiesta dei requisiti, delle caratteristiche richieste per il software è seguita da quelle di pianificazione, design, sviluppo. All’interno del ciclo, una fase particolarmente importante è quella di test. Le tipologie di verifiche e collaudi da eseguire sono numerosissime, anche perché il software di norma viene rilasciato in ambienti IT differenti, tra cui, semplificando, quelli principali si possono identificare con gli ambienti di sviluppo, test, staging, produzione.
Crowdtesting, uno strumento per facilitare il release management
Nel quadro di attuale complessità degli ambienti IT appena richiamata, e della numerosità di test da eseguire, il release management deve affrontare sfide progettuali che possono portare a sforamenti del budget, rischi e ritardi nelle tempistiche stabilite per i rilasci delle release. In aggiunta, la gestione dei rilasci può anche impattare sull’operatività degli utenti dell’applicazione, ad esempio quando i server vengono messi offline per eseguire un dato rilascio software.
“In tali contesti, il crowdtesting può essere inserito, e portare benefici, in qualsiasi fase del processo di release management” spiega Federico Pontelli, Agile Coach della piattaforma di crowdtesting UNGUESS. “Nella fase di richiesta dei requisiti del software, il rapido feedback fornito dal crowd può dare al team di ingegneri una chiara indicazione sulla validità dell’idea di modifica che hanno in mente per l’applicazione in questione, oppure confermare loro che devono imboccare una strada diversa. Nella fase di pianificazione, invece, il crowd aiuta a stabilire da dove cominciare con il lavoro, quindi la priorità, l’ordine con cui implementare determinate caratteristiche del software. Il crowd fornisce un orientamento anche nelle fasi di design e sviluppo, ed è utilissimo in quelle di rilascio in produzione e di post distribuzione”.
In produzione, ad esempio, è possibile eseguire immediatamente test di carico dell’applicazione, senza dover attendere la disponibilità dei tester ordinari.
‘Superpoteri’ del crowdtesting
In virtù di quale ‘superpotere’ la comunità di crowdtesting è però in grado di fornire tutte queste preziose indicazioni? “Il vantaggio del crowd è quello di visualizzare e utilizzare le funzionalità software dal punto di vista dei reali utenti, e far emergere subito problemi ed errori, anche macroscopici, che, altrimenti, il team di sviluppo, viziato dai propri bias cognitivi, non noterebbe nemmeno” chiarisce Pontelli.
In quest’ottica, il crowdtesting, oltre a permettere di eseguire con flessibilità e rapidità test utili per validare o meno un’idea, in qualunque fase del ciclo di creazione del software, consente anche di fare ricerca. “In UNGUESS, tramite i feedback del crowd possiamo anche far affiorare, e scoprire, nuove idee. Idee che poi possono anche servire a eliminare alcuni bias nella preparazione dei test automatici, arricchendoli di continuo con casi di test che non si era previsto potessero esistere”.
E poi c’è la velocità. “In aggiunta, all’interno di un processo iterativo e agile, dove le iterazioni sono tante, la raccolta di idee, feedback o la correzione di eventuali bug ed errori diventano ancora più semplici e veloci. Dunque, il crowd accelera ulteriormente un processo di release management che, già di per sé, ha l’obiettivo di essere rapido” conclude Pontelli.