Sviluppo

I sistemi IT costituiscono oggi il cuore delle moderne organizzazioni ed i progetti di sviluppo di nuovo software e di mantenimento del portafoglio delle applicazioni sono critici per la produttività e la redditività del business.

L’innovazione tecnologica negli ultimi 20 anni ha prodotto soluzioni software e hardware con crescenti livelli di complessità e questa complessità finisce per propagarsi nei progetti sotto forma di aumento dei rischi connessi allo sviluppo. La figura riportata a fianco è il risultato di recenti ricerche sugli esiti dei progetti svolti in ambito IT.

Pertanto, tutti i progetti software presentano implicitamente dei rischi dovuti essenzialmente a:

  • tendenza ad inflazionare il numero dei requisiti;
  • cambiamenti nelle tecnologie impiegate;
  • cambiamenti frequenti nei requisiti e nelle specifiche di progetto;
  • cambiamenti nei sistemi esterni con cui i nuovi software debbono operare.

Da ciò nasce la necessità di una gestione continuativa dei rischi in un progetto software.

Ma questo cosa comporta? Qual è l’impatto sulla gestione di un progetto software in termini di modelli di project management?

Come Project Manager si può essere tentati di attuare una politica di gestione che tenda a limitare le modifiche attraverso una determinazione ed analisi accurata dei requisiti senza le quali non può essere avviato il disegno funzionale e tecnico di un’applicazione secondo lo schema tipicamente Waterfall (a cascata).

Un approccio di questo tipo appare ragionevole nella maggior parte dei progetti, ma lo sviluppo software è un processo che presenta ampi margini di variazione con nuove release e versioni.

Il risultato è che un approccio waterfall non riesce a mitigare in modo efficace i rischi suddetti.

Peggio ancora, alimenta nelle fasi iniziali del progetto un falso senso di sicurezza e certezza organizzativa che si trasforma spesso in frustrazione quando si incontrano le prime difficoltà.

Ciò è particolarmente vero quando nella gestione di un progetto software non è prevista l’adozione di un sistema di configuration management per il controllo delle modifiche, in modo da proceduralizzare le modalità per il censimento, la qualificazione e l’attuazione delle modifiche da introdurre “on-going” al progetto originale.

In questo caso è presente un elevato livello di rischio fino alla fase di codifica del software con il risultato di dover rifare buona parte del lavoro a fronte di una revisione dei requisiti che emerge in questa fase.

Appare quindi più logico adottare un modello di sviluppo che preveda una modalità iterativa in cui ogni progetto è legato ad una release o versione dello stesso software e le modifiche sono affidate ad un nuovo progetto relativo allo sviluppo della successiva release o versione.

Ciò consente di stabilizzare il lavoro da svolgere secondo delle finestre temporali in cui ogni progetto intermedio viene sviluppato “al meglio” tenendo conto delle specifiche iniziali.

La metodologia Agile consente proprio questa possibilità che ben si presta alla gestione di un progetto software.

Perché questo modello operativo possa funzionare è opportuno quindi che:

  1. venga adottato un approccio di sviluppo iterativo e funzionale alla mitigazione dei rischi (in particolare quelli contrattuali);
  2. il management sia fortemente impegnato e coinvolto nell’assicurare supporto ai team di sviluppo;
  3. esista un forte livello di comunicazione e collaborazione tra i membri del team;
  4. i componenti del team siano altamente competenti;
  5. lo sviluppo sia guidato da use cases o prototipi concordati con la committenza;
  6. venga implementata una procedura rigorosa per il controllo delle modifiche.

In queste condizioni si assiste ad un andamento diverso e più vantaggioso della curva di rischio associata alla gestione di un progetto software.

Inoltre questo modello incide positivamente non solo sui costi di sviluppo, ma anche su quelli di manutenzione.

E’ infatti noto che i costi di manutenzione nel tempo costituiscono la porzione maggiore dei costi di gestione delle applicazioni software.

Il fatto di sviluppare in modo organico release software che sono continuamente aggiornate rispetto a ciò che l’utente desidera consente di ridurre i costi di manutenzione spostandoli verso l’implementazione di nuove funzionalità a totale beneficio dello sviluppo del business.