11.0 Gestione del progetto a cascata e ciclica (parte 4) – Ciclo di vita e risultati del progetto

Metodi di gestione del progetto che sono ciclici #

A causa dei problemi discussi sopra, negli ultimi anni si sono sviluppate una varietà di tecniche alternative di gestione dei progetti. Queste tecniche sono particolarmente adatte per iniziative di sviluppo della tecnologia dell’informazione.

Gestione ciclica del progetto è un metodo per raggiungere l’obiettivo del progetto attraverso una serie di cicli brevi e sequenziali. Ogni ciclo è breve, idealmente della durata di meno di un mese. Ogni ciclo completa una parte del progetto. Ogni ciclo include analisi, progettazione, implementazione e test. Questo è significativamente diverso dall’approccio a cascata, in cui ciascuna di queste attività si verifica in una propria fase distinta. Inoltre, l’approccio a cascata specifica un numero limitato di momenti distinti per l’ideazione, la progettazione, l’implementazione e il test. Ciò accade molte volte di seguito nell’approccio ciclico.

Comprensione Software di gestione dei progetti Ciclo #

Vari componenti software sono implementati durante i cicli, che sono quindi autonomi. Ogni ciclo viene valutato dopo il completamento. Se emergono esigenze nuove o alternative per il progetto come risultato di una maggiore comprensione, le attività dei cicli futuri vengono adattate per includerle.

Un ciclo inizia con l’istituzione o la modifica di un programma. Successivamente, vengono valutate le esigenze di output del ciclo. Un progetto viene sviluppato, codificato e convalidato. Successivamente, avviene la valutazione e, in alcuni casi, il nuovo programma viene implementato. Successivamente, può iniziare il ciclo successivo per completare le componenti successive del progetto. (Per una discussione più dettagliata delle tecniche cicliche e delle loro distinzioni, si veda, ad esempio, Kroll, 2004; Chromatic, 2003; Stapleton, 2002.)

Di seguito sono riportati i principali vantaggi dell’utilizzo del metodo ciclico:

  • Miglioramento della qualità del prodotto e implementazione delle funzionalità;
  • Miglioramento della qualità del prodotto e implementazione delle funzionalità;
  • Stime più realistiche di tempi e costi;
  • Meno sforzo per il team di progetto;
  • Qualità migliore.

I capitoli precedenti mostrano quanto sia difficile o impossibile definire correttamente le capacità richieste nelle prime fasi di un progetto. Le tecniche cicliche implementano la funzionalità richiesta in una serie di brevi cicli. Ogni ciclo non solo indaga, ma progetta, implementa e testa anche una piccola parte delle funzionalità richieste. La rapida successione di progettazione, esecuzione e test è fondamentale per il miglioramento della qualità. Di conseguenza, le squadre sono in grado di apportare modifiche. Se un progetto non funziona nella realtà, diventa evidente durante tutto il ciclo, consentendo modifiche. Inoltre, questo tipo di operazione consente ai consumatori di richiedere modifiche.

Mantenimento della qualità #

Un altro motivo per cui la gestione ciclica del progetto migliora la qualità è che ogni ciclo richiede un’intensa cooperazione tra il cliente, i progettisti e i programmatori. Un team multidisciplinare sviluppa ed esegue soluzioni insieme. Il cliente è principalmente impegnato all’inizio, nello sviluppo dei requisiti; successivamente, i progettisti creano un progetto e, infine, i programmatori creano il software. Il capo progetto funge da collegamento tra tutte le diverse parti ed è responsabile di garantire che le informazioni fornite siano consegnate al destinatario appropriato. In realtà, molti programmatori e designer non incontrano mai il cliente, che riappare solo durante il processo di sviluppo del software.

Le tecniche cicliche di project management sono particolarmente adatte a progetti in cui l’obiettivo finale non può essere chiaramente definito in anticipo, come iniziative artistiche o di ricerca. Lavorare in cicli con un team diversificato che include utenti finali consente al team di determinare il vero scopo del progetto e il modo migliore per realizzarlo. Ogni ciclo offre una possibilità di riflessione e correzione.

Un obiettivo è definito in anticipo per i progetti a cascata. La riflessione sull’obiettivo iniziale è meno probabile. L’obiettivo inizialmente formato non è mai (completamente) realizzato, ed è probabile che né l’obiettivo originariamente concepito né l’obiettivo realizzato siano esattamente ciò che era previsto.

Infine, i metodi di gestione ciclica del progetto forniscono risultati superiori poiché il cliente conduce i test di accettazione. Inoltre, la qualità viene migliorata includendo i test come criterio per funzionalità ad alte prestazioni fin dall’inizio. Pertanto, i programmatori devono creare “test non riusciti” (o unit test) prima di scrivere il codice. Viene considerato accettabile solo il codice che supera il test fallito.

Test coerenti #

Il lavoro orientato ai test richiede ai programmatori di dimostrare che il nuovo codice è privo di bug prima di scriverlo. Lo fanno creando un test (test fallito) che identificherà eventuali potenziali difetti prima di iniziare a codificare. Si consideri il caso in cui è necessario sviluppare un software per determinare la giusta quantità di resto da ricevere da una macchina per dolciumi. Per cominciare occorre verificare la presenza di una funzione in grado di provocare il cambiamento. Questa funzione può essere denominata “dare resto”. Un semplice test potrebbe essere eseguito e rivelerebbe che la funzione “dare resto” non esiste ancora. Il test sarà superato se il programmatore crea la funzione ma non le fornisce ancora alcuna sostanza.

Il passaggio successivo consiste nel determinare se la macchina restituisce la quantità di denaro corretta quando viene acquistato un articolo. Inserisci sessanta centesimi nella macchina e acquista un articolo da cinquanta centesimi. Il test avrà esito negativo poiché la funzione rimane vuota. Successivamente, il programmatore scrive il codice. Specifica nella funzione ‘restituisci resto’ che la quantità di resto da restituire è pari alla quantità di denaro messo nella macchina, meno il costo della caramella selezionata. Il test dovrebbe ora essere superato con successo. Questa procedura deve essere ripetuta per ogni componente del programma.

Non solo il codice deve essere testato tecnicamente; anche le funzioni devono essere testate (es. test di accettazione). Prima di iniziare a codificare, il cliente stabilisce i criteri in base ai quali le capacità da sviluppare possono essere approvate (ad esempio, quanto velocemente un computer deve reagire a una determinata azione dell’utente). Prima di allora, la definizione dei criteri in base ai quali la capacità aggiuntiva può essere approvata si è rivelata molto complessa e dispendiosa in termini di tempo. Tuttavia, il coinvolgimento attivo dei consumatori nei test è fondamentale per il successo del progetto.

Stime di tempo e denaro #

La comprensione delle funzioni da implementare non è predeterminata all’inizio di un progetto ciclico. Viene indicato il tempo a disposizione. Vengono raggiunti accordi sulla direzione del progetto e, durante tutto il processo, viene stabilito ciò che è realmente richiesto, vantaggioso e fattibile in termini di programma da creare. Poiché le funzioni da implementare non sono obiettivi prefissati, i progetti ciclici riducono al minimo il pericolo che le ore richieste, e quindi il denaro, possano sfuggire al controllo. Per evitare questo scenario, il tempo a disposizione viene utilizzato come punto di partenza e durante il processo viene stabilito ciò che è ragionevole prevedere in quel lasso di tempo.

Inoltre, le tecniche di gestione ciclica del progetto sono notevolmente più appetibili per il team di progetto. Il team fa tutto il possibile entro il lasso di tempo assegnato, ma non viene sollecitato a raggiungere scadenze irragionevoli o a operare con un budget insufficiente.

Inoltre, le tecniche cicliche semplificano l’amministrazione dei fornitori esteri. Con l’approccio a cascata, un progetto può dipendere da un singolo fornitore fino al completamento del progetto, indipendentemente dalle prestazioni del fornitore. È teoricamente possibile stipulare nuovi accordi per ogni ciclo o anche per ogni componente da fornire con una tecnica di lavorazione ciclica e, se necessario, cambiare fornitore.