Approfondimenti25/10/2024

La qualità by design nel processo di sviluppo software

pragmatic agile

L'attività di controllo di qualità del software in un progetto gestito in modalità waterfall è prevista come una fase conclusiva di verifica e collaudo, in cui il software viene testato e validato solo dopo che tutte le altre fasi di sviluppo sono state completate e la soluzione è pronta per la consegna. Questo approccio è guidato dall’idea che un’autorità centrale possa avere il quadro completo per garantire la conformità del prodotto. Questo tipo di approccio, consolidato in contesti gerarchici e con una gestione progettuale tradizionale, evidenzia alcuni limiti: 

  • essendo concentrato alla fine del processo, causa inevitabilmente alti costi di correzione nel caso in cui si verifichino non conformità; 
  • essendo la valutazione delegata ad un team apposito, questa viene svolta in un intervallo di tempo contenuto, limitandosi ad individuare le più evidenti non conformità, tralasciando l’enorme contributo di valore che potrebbe venire da un uso estensivo dei reali utenti cui il software è destinato.

Questo approccio, se da un lato può aumentare l’efficienza all’interno di processi di produzione consolidati e standardizzati, concentrando le attività e le competenze di qualità, dall’altro lato mostra le sue debolezze quando si tratta di gestire la qualità di processi di sviluppo software, caratterizzati da incertezza e costanti cambiamenti: quando la qualità è gestita in modo rigido, ogni modifica o innovazione rischia di diventare un ostacolo, e ciò che potrebbe essere una rapida evoluzione si trasforma in un processo lento e costoso. Inoltre, la complessità crescente della base di codice e la necessità di apportare modifiche future richiede un controllo continuo della qualità lungo tutto il ciclo di sviluppo, dalla progettazione, al deployment, al monitoraggio, e non può essere solo delegata alla fine del processo.

Infine, si tralasciano i reali contributi che possono pervenire solo dagli utenti, coloro che utilizzano effettivamente il prodotto. Spesso, i feedback più preziosi per il miglioramento di un software arrivano proprio da chi ne fa uso quotidianamente e può offrire una prospettiva reale su cosa funziona e cosa necessita di ottimizzazione. Includere i feedback nel processo di sviluppo rende il software non solo più utile e pratico, ma capace di rispondere in modo preciso alle esigenze e necessità degli utenti, sostenendo concretamente la produttività e l’innovazione e creando un valore autentico che si riflette positivamente su tutta l’organizzazione.

Per generare valore nel lungo termine e gestire il rischio in modo efficace, l'attenzione deve spostarsi sulla qualità vista come principio fondante (quality by design). Invece di affidarsi a controlli spot, è fondamentale integrare la qualità all’interno del processo di sviluppo fin dal principio. Ciò richiede che ogni fase del ciclo di vita del prodotto sia progettata tenendo conto della qualità. Significa sviluppare sistemi che monitorino costantemente le performance, adottando pratiche moderne come lo sviluppo guidato dai test e il monitoraggio continuo attraverso pipeline automatizzate. 

Promuovere la qualità by design non è solo una questione tecnica, ma richiede un cambiamento culturale all'interno dell'azienda. Implica una maggiore collaborazione e responsabilizzazione tra i team e la capacità di prendere decisioni rapide e informate durante lo sviluppo del prodotto. Questo approccio consente di individuare e correggere eventuali difetti già nelle prime fasi del processo, evitando che diventino problemi critici nelle fasi finali o, peggio, dopo il rilascio in produzione.

Naturalmente, adottare la qualità by design comporta un investimento iniziale maggiore. Questo significa adottare un approccio proattivo, monitorando costantemente la qualità attraverso strumenti e pratiche come: DoD (Definition of Done), CI/CD (Continuous Integration/Continuous Delivery), TDD (Test-Driven Development), TE2E (Test End-to-End), KPI di qualità. Tuttavia, questo investimento viene ampiamente ripagato nel lungo periodo, in termini di riduzione dei costi legati a bug, riscritture di codice, correzioni e interventi post-produzione.

L’adozione di un approccio decentralizzato alla qualità, dove ogni team è responsabile della propria fase del processo di sviluppo, rende l'intero sistema più resiliente, innovativo e capace di affrontare le sfide del futuro. Alla base dell’Agilità c’è proprio la qualità del software. Nonostante non sia esplicitamente citata nell’Agile Manifesto, la qualità è strettamente necessaria per soddisfare uno dei suoi principi fondamentali: generare il massimo valore per l’utente. Questo si traduce nell’ottimizzare le risorse e il tempo di progetto e coinvolgere attivamente tutti gli stakeholder nelle fasi di sviluppo, generando reale valore attraverso l’implementazione della qualità by design. La seguente figura evidenzia come la qualità del software sia implicita nei principi che guidano l’Agile:

In conclusione, per assicurarsi la maggior creazione di valore e il contenimento di tempi e costi, è essenziale adottare la metodologia Agile e il principio della qualità by design. Questo approccio integra la qualità in ogni fase del processo di sviluppo attraverso iterazioni frequenti, feedback costanti e adattamenti rapidi alle esigenze in evoluzione del cliente. Invece di attendere un unico momento finale per la verifica, la qualità viene costruita e confermata progressivamente, garantendo che il prodotto finale sia allineato alle aspettative attuali e non solo a quelle iniziali. Così, si assicura una maggiore flessibilità e una qualità superiore senza la necessità di un collaudo tradizionale alla fine del progetto.