Le Fasi del Ciclo di Sviluppo Agile PDF

Document Details

CostEffectiveThorium1709

Uploaded by CostEffectiveThorium1709

University of Milan

Tags

Agile development Project Management Software Development Business

Summary

This document discusses the phases of the Agile development cycle, including planning, requirements analysis, design, implementation, testing, and distribution. It also covers agile project lifecycles and how to handle uncertainty and risk in projects.

Full Transcript

**Le Fasi del Ciclo di Sviluppo Agile** Facciamo adesso un passo ulteriore verso la vostra padronanza dell'Agile Project Management. Consideriamo che i progetti possono assumere varie forme ed esistono diversi modi per affrontarli. I Team di Progetto devono essere consapevoli delle peculiarità del...

**Le Fasi del Ciclo di Sviluppo Agile** Facciamo adesso un passo ulteriore verso la vostra padronanza dell'Agile Project Management. Consideriamo che i progetti possono assumere varie forme ed esistono diversi modi per affrontarli. I Team di Progetto devono essere consapevoli delle peculiarità del progetto e delle opzioni gestionali disponibili per selezionare l\'approccio prevedibilmente migliore per il successo del progetto in base alla situazione. Qui di seguito vi illustro le Fasi del Ciclo di Sviluppo Agile. È importante notare che queste fasi non dovrebbero verificarsi in successione; sono flessibili e in continua evoluzione. Molte di queste fasi si verificano in parallelo. **Pianificazione**: una volta che un\'idea è ritenuta fattibile e praticabile, il team di progetto si riunisce e lavora per identificare le funzionalità. L\'obiettivo di questa fase è di suddividere l\'idea in parti di lavoro più piccole (le funzionalità), quindi di stabilire le priorità per ciascuna funzionalità e assegnarla a un\'iterazione. **Analisi dei requisiti**: questa fase prevede molti incontri con manager, stakeholder e utenti per identificare i requisiti aziendali. Il team deve raccogliere informazioni come chi utilizzerà il prodotto e come lo utilizzerà. Questi requisiti devono essere quantificabili, pertinenti e dettagliati. **Progettazione**: il sistema e la progettazione del software vengono preparati in base ai requisiti identificati nella fase precedente. Il team deve pensare a come sarà il prodotto o la soluzione. Il team di test elabora anche una strategia o un piano di test per procedere. **Implementazione, codifica o sviluppo**: questa fase riguarda la creazione e il test delle funzionalità e la pianificazione delle iterazioni per la distribuzione (seguendo l\'approccio di Sviluppo Iterativo e Incrementale \[IID\]). La fase di sviluppo inizia con l\'iterazione **0**, perché non ci sono funzionalità in fase di distribuzione. Questa iterazione getta le basi per lo sviluppo, con attività come la finalizzazione dei contratti, la preparazione degli ambienti e il finanziamento. **Test**: una volta sviluppato il codice, viene testato in base ai requisiti per assicurarsi che il prodotto risolva effettivamente le esigenze dei clienti e corrisponda alle storie degli utenti. Durante questa fase, vengono eseguiti test unitari, test di integrazione, test di sistema e test di accettazione. **Distribuzione**: dopo il test, il prodotto viene consegnato ai clienti affinché possano utilizzarlo. Tuttavia, la distribuzione non è la fine del progetto. Una volta che i clienti iniziano a utilizzare il prodotto, potrebbero imbattersi in nuovi problemi che il team di progetto dovrà affrontare. **Cicli di vita dei Progetti gestiti con Agile** Adesso che conosciamo le fasi di Sviluppo dei Cicli di vita Agile possiamo procedere nella scoperta dei diversi Cicli di Vita di Progetto, tra i quali possiamo scegliere. Per arrivare a saper scegliere il Ciclo di Vita adatto ai vostri Progetti prendiamo adesso confidenza con le **caratteristiche** di **[incertezza]** e di **[rischio]** comuni a tutti i Progetti. Alcuni progetti si contraddistinguono per una considerevole incertezza dei requisiti di progetto e su come soddisfare tali requisiti utilizzando la conoscenza e la tecnologia attuali. Queste incertezze possono determinare alti tassi di cambiamento e di complessità del progetto. Man mano che l\'incertezza del progetto aumenta, lo stesso accade per il rischio di rilavorazione e per la necessità di adottare un approccio differente. Per mitigare l\'impatto di tali rischi, i Team scelgono i cicli di vita che consentono loro di gestire i progetti a elevata incertezza attraverso piccoli incrementi del lavoro. Quando utilizzano piccoli incrementi, i Team possono verificare il proprio lavoro e modificare i passi successivi. Quando i Team generano piccoli incrementi, sono in grado di comprendere meglio i veri requisiti del cliente e di farlo in modo più rapido e preciso rispetto all\'uso di specifiche scritte statiche. I Team possono pianificare e gestire con poca difficoltà progetti che presentano requisiti stabili e chiari e sfide tecniche conosciute. Tuttavia, man mano che l\'incertezza nel progetto aumenta, cresce anche la probabilità di cambiamenti, di lavoro sprecato e di rilavorazione, dispendiosi in termini di tempo e di denaro. Alcuni Team hanno evoluto i cicli di vita del progetto verso approcci iterativi e incrementali. Molti altri Team scoprono che, quando esplorano i requisiti in modo iterativo e procedono a rilasci incrementali più frequenti, si adattano ai cambiamenti più facilmente. Questi approcci iterativi e incrementali riducono gli sprechi e la rilavorazione perché i Team possono contare su feedback. Questi approcci utilizzano: - Cicli di feedback molto brevi; - Frequente adeguamento dei processi; - Riassegnazione delle priorità; - Aggiornamento regolare dei piani; - e Rilascio frequente. Questi approcci iterativi, incrementali e agili funzionano bene per progetti che hanno a che fare con nuovi strumenti, tecniche, materiali o campi di applicazione. Funzionano bene anche per i progetti che: - Richiedono ricerca e sviluppo; Hanno alti tassi di cambiamento; - Hanno requisiti poco chiari o ignoti, incertezza o rischio, - o Hanno un obiettivo finale difficile da descrivere. Creando un piccolo incremento e poi testandolo e rivedendolo, il Team può esplorare l\'incertezza a basso costo e in breve tempo, ridurre il rischio e massimizzare il valore. Questa incertezza può riferirsi a: - appropriatezza e requisiti (si sta realizzando il prodotto giusto?), - alla fattibilità tecnica e alle prestazioni (questo prodotto può essere costruito in questo modo?) - o al processo e alle persone (è un modo efficace di lavorare per il Team?). Tutte e tre queste caratteristiche, specifiche del prodotto, capacità di produzione e idoneità del processo, hanno solitamente elementi di alta incertezza. Tuttavia, gli approcci iterativi e incrementali hanno propri limiti di applicabilità. Quando sia l\'incertezza tecnologica che quella legata ai requisiti sono molto elevate, il progetto va oltre la complessità e diventa caotico. Affinché il progetto diventi attendibilmente fattibile, una delle variabili di incertezza deve essere limitata. Ma è probabile che vi stiate chiedendo, cosa significano progetti semplici, complicati e complessi? Per darci una risposta chiara, prendiamo in considerazione grandi progetti, come il progetto di costruzione chiamato "**Boston Big Dig**" (o Grande Scavo). A prima vista il progetto sembrava piuttosto semplice: spostare l\'autostrada sopraelevata in un tunnel. Vi era scarsa incertezza su come il progetto sarebbe andato avanti fino a che non iniziò. Come accade per molti progetti di grandi dimensioni, il progetto incontrò delle sorprese lungo il percorso. Quando il Team lavora su un progetto in cui vi è scarsa opportunità di creare deliverable intermedi o prototipi, esso probabilmente adotterà un ciclo di vita predittivo per gestire il progetto. Il Team può adattarsi a ciò che scopre, ma non sarà in grado di utilizzare approcci agili per gestire i requisiti scoperti iterativamente o i *deliverable* incrementali destinati alla raccolta di feedback. Il progetto ***Big Dig*** non è stato assolutamente semplice. Tuttavia, molti progetti che si collocano inizialmente nella parte inferiore sinistra del Modello della Complessità di Stacey non hanno mezzi reali per passare ad altri approcci. Va valutato il progetto, sia da un punto di vista dei requisiti che nelle sue modalità di rilascio, per determinare il miglior approccio al ciclo di vita da adottare. Allora adesso, possiamo andare a scoprire quali sono i diversi Cicli di Vita che sono definiti come segue: - Ciclo di vita **Predittivo**. Un approccio più tradizionale, con la maggior parte della pianificazione svolta in anticipo, poi l\'esecuzione avviene in un unico passaggio; un processo sequenziale. - Ciclo di vita **Iterativo**. Un approccio che consente che feedback sul lavoro non ancora completato, possano migliorarlo e modificarlo. - Ciclo di vita **Incrementale**. Un approccio che fornisce deliverable finiti che il cliente può utilizzare immediatamente. - Ciclo di vita **Agile**. Un approccio al tempo stesso iterativo e incrementale per perfezionare parti di lavoro e consentire rilasci frequenti. È importante notare che tutti i progetti presentano queste caratteristiche: nessun progetto è completamente privo di considerazioni riguardanti requisiti, rilasci, cambiamenti e obiettivi. Le caratteristiche intrinseche di un progetto determinano il miglior ciclo di vita per il progetto in questione. Un altro modo per comprendere come variano i Cicli di vita del progetto è quello di utilizzare un intervallo continuo che va dai cicli predittivi a un\'estremità ai cicli agili all\'altra estremità, con cicli più iterativi o incrementali al centro. Ora, è importante ricordare sempre che nessun ciclo di vita può essere la soluzione ottimale per tutti i progetti. Al contrario, ogni progetto si posiziona in un punto del continuum che rappresenta il bilanciamento ottimale delle caratteristiche in riferimento al suo contesto. Vediamo, meglio nello specifico, i diversi Cicli di Vita: **Cicli di Vita Predittivi**. Sfruttano elementi noti e comprovati. Queste incertezze e complessità ridotte, consentono ai Team di scomporre il lavoro in una sequenza di blocchi prevedibili. **Cicli di Vita Iterativi**. Consentono la raccolta di feedback sul lavoro non ancora completato al fine di migliorarlo e modificarlo. **Cicli di Vita Incrementali**. Forniscono deliverable finiti che il cliente può utilizzare immediatamente. **Cicli di Vita Agili.** Sfruttano sia le caratteristiche iterative che quelle incrementali. Quando i Team utilizzano approcci agili, reiterano lo sviluppo del prodotto per creare deliverable finiti. Il Team riceve feedback anticipati e genera visibilità per il cliente, fiducia e controllo sul prodotto. Dal momento che il Team è in grado di effettuare rilasci progressivi, il progetto può fornire un ritorno anticipato sull\'investimento in quanto il Team rilascia prima di tutto il lavoro di massimo valore. Prima di procedere all'analisi dettagliata di ognuno dei Cicli di vita permettetemi di chiedere di concentrare la vostra attenzione e il vostro impegno sulla **Pianificazione**! Vi chiedo uno sforzo particolare ad accogliere e fare completamente vostra la inderogabile necessità di dedicare il tempo, tutto quello necessario, le energie e le altre risorse, ad una dettagliata e attenta Pianificazione. È fondamentale ricordare che ogni ciclo di vita condivide l\'elemento della Pianificazione. Ciò che differenzia un ciclo di vita non è lo svolgimento o meno della pianificazione ma la relativa entità e tempistica. All\'estremità predittiva del continuum, è il piano a guidare il lavoro. La maggior parte della pianificazione si svolge per quanto possibile in anticipo. I requisiti vengono identificati nel modo più dettagliato possibile. Il Team effettua una stima di quando potrà rilasciare determinati deliverable e svolge tutte le necessarie attività di approvvigionamento. Negli approcci iterativi, vengono pianificati anche prototipi e prove, ma gli output che ne derivano sono finalizzati a modificare i piani inizialmente creati. Revisioni intermedie del lavoro non ancora completato contribuiscono a migliorare il lavoro futuro del progetto. Iniziative incrementali, invece, mirano a fornire in progressione parti del progetto complessivo. I Team possono pianificare più rilasci successivi in anticipo, oppure solo uno alla volta. I rilasci forniscono informazioni per il lavoro futuro del progetto. Anche i progetti agili prevedono una pianificazione. La differenza principale è che il Team pianifica e ripianifica man mano che diventano disponibili maggiori informazioni a seguito della revisione dei frequenti rilasci. Fatte vostro questo che è più di una tecnica o un compito da svolgere, ma è un valore per la vostra professione capace di determinare il vostro successo o insuccesso: **Indipendentemente dal ciclo di vita, il Progetto richiede una Pianificazione.**

Use Quizgecko on...
Browser
Browser