Introduzione metodologia agile PDF
Document Details
Uploaded by TemptingRiemann5094
Tags
Summary
This document explores the evolution of industrial revolutions, highlighting the shift from traditional manufacturing to a more modern, personalized approach. It emphasizes the importance of collaboration and creativity in the current era, driven by advancements in technology and changing consumer preferences. The document introduces the topic of agile methodologies and provides key insights into implementing these methods in the business world.
Full Transcript
Lo sviluppo industriale è nato con la prima rivoluzione industriale nella fine del Settecento. Prima l’economia era di tipo artigianale. Successivamente, con la seconda rivoluzione industriale, le macchine e le stazioni di montaggio furono organizzate in base al flusso di produzione. Questa parcelli...
Lo sviluppo industriale è nato con la prima rivoluzione industriale nella fine del Settecento. Prima l’economia era di tipo artigianale. Successivamente, con la seconda rivoluzione industriale, le macchine e le stazioni di montaggio furono organizzate in base al flusso di produzione. Questa parcellizzazione del lavoro come noto portò alle prime catene di montaggio con Taylor e Ford. È nel periodo che segue, durato circa due secoli e comprendente la terza rivoluzione industriale, che si attua la fondamentale separazione tra pensatori ovvero il management ed esecutori ovvero gli operai. Si sviluppano piattaforme modulari di prodotto introdotte per primi dalla General Motors da ciascuna delle quali si ricavavano modelli diversi partendo da uno stesso insieme di elementi di base. successivamente si è arrivato a realizzare una linea di produzione più flessibile che consentisse la produzione di un numero finito di combinazioni di prodotto. La linea di montaggio e tutto il Just in Time sviluppato da Toyota sono stati pionieri di questo approccio produttivo. L'avvento della progettazione tridimensionale, che permette un'accurata simulazione che va dal comportamento strutturale a quello cinematico e dinamico, unitamente a nuovi software e a nuovi strumenti di produzione come la Additive Manufacturing, ha aperto la possibilità di sviluppare prodotti pensati e concepiti per essere personalizzati in funzione di ogni cliente. Questo ci consente di parlare quindi di "personalizzazione di massa", laddove i metodi produttivi votati all'efficienza - che hanno contraddistinto il sistema industriale fino alla fine del Novecento - si rivelano non più sufficienti. Il consumatore non deve accettare i prodotti messi sul mercato ma diventa prosumer ovvero partecipa attivamente al processo produttivo e di ideazione del prodotto prodotto. L'avvento della quarta rivoluzione industriale, in cui sistemi cyber-fisici interagiscono con l'uomo aprendo la porta alla personalizzazione di massa, introduce dunque una grande sfida. In un flusso di rinnovo dei prodotti sempre più rapido, la personalizzazione di massa richiede inevitabilmente un ripensamento anche della modalità di lavoro negli uffici e nelle fabbriche, laddove creatività e flessibilità nei confronti delle esigenze dei clienti non possono ancora essere risolte unicamente da un computer, seppur dotato del software più avanzato. In altre parole viene chiesta la flessibilità alle aziende in una economia che torna a essere creativa ma in una forma più moderna di quella artigianale di fine Settecento. In questa condizione i pensatori costruttori tornano a essere non più la stessa persona, ma lo stesso team. La sfida di sviluppare i prodotti e/o servizi che integrano tecnologie, strumenti di sviluppo avanzati sia software che hardware e conoscenze di processo è così complessa che non può essere più gestita da una sola persona, ma deve essere gestita da un Team. Lavorare in team diventa non più un'opzione ma una necessità. La creatività nell'Industria 4.0 La quarta rivoluzione industriale viene prevalentemente descritta come pervasa dalla presenza di sistemi cyber-fisici che interagiscono con l'uomo e che si occupano prevalentemente di efficientamento dei processi e di uso più consapevole dei macchinari. I sistemi di intelligenza artificiale - grazie all'elaborazione di una grande quantità di informazioni - aiutano l'operatore a prendere decisioni, e in diversi casi lo fanno in autonomia. Ma quindi ciò comporta la fine del lavoro dell' uomo? Non proprio, perché questi approcci che aumentano la capacità di produrre ci danno anche l'opportunità di differenziarci, in un mercato competitivo dove non è più sufficiente una produzione efficiente ma può fare la differenza poter sviluppare e produrre in modo sostenibile qualcosa di pensato per ogni specifico cliente. Sviluppare tali elementi personalizzati capaci di fare la differenza rispetto agli altri prodotti richiede invece, come mai prima d'ora, che la parte creativa torni ad avere un ruolo altrettanto importante di quella produttiva. Se un prodotto non si differenzia da un altro, l'unica dinamica consentita è infatti quella del costo e del prezzo. Un'economia creativa abilitata da tecnologie e strumenti come le stampanti 3D e nuovi software a supporto dello sviluppo prodotto non si sostituiscono all'uomo, ma ne rappresentano delle autentiche protesi. Pertanto la sfida maggiore è quella di costruire team che riescano a lavorare in modo creativo, perché solo in questo modo potranno trovare risposte nuove a problemi complessi. Paesi come l'Italia, che hanno un tessuto industriale costituito da piccole e media aziende capaci di sviluppare prodotti personalizzati che si differenziano da quelli di serie, possono (e devono) cogliere questa grande opportunità. La customizzazione di massa La creatività spesa per favorire - o ancor meglio abilitata da - questo contesto ci consente di pensare alla personalizzazione di massa come a un qualcosa di sostenibile. Contrariamente a quanto avveniva nel Novecento, si può oggi arrivare a concepire addirittura lo sviluppo di un prodotto personalizzato in quantità unica per il singolo cliente. Determinate tipologie di clienti apprezzeranno moltissimo questa possibilità, che consentirà loro di ottenere prodotti unici anche se a un prezzo maggiore. Un'economia di questo tipo, definibile appunto come un'economia creativa, è attualmente resa potenzialmente sostenibile dagli strumenti dell'Industria 4.0, unitamente a nuove modalità di lavoro in team e a processi di sviluppo prodotto sempre più flessibili. Il mondo VUCA e l'innovazione Perché siamo chiamati a modificare i nostri paradigmi di sviluppo di prodotti e servizi? Perché il mondo di oggi è caratterizzato da 4 elementi che vengono sintetizzati con l'acronimo inglese VUCA: V COME VOLATILE. La nostra attuale dimensione è caratterizzata da dinamicità e casualità. Le situazioni sono generalmente instabili e di breve durata. Viviamo in un mondo turbolento, con repentine fluttuazioni dei mercati. In un contesto di questo tipo, cogliere le opportunità appena appaiono - o ancor prima che si manifestino - rappresenta un evidente vantaggio competitivo. Queste nuove opportunità, non trovando tuttavia disponibili prodotti già esistenti, richiedono il rapidissimo sviluppo di nuovi prodotti. U COME UNCERTAIN, O INCERTO Le previsioni risultano sempre più difficili da effettuare per via delle turbolenze e dei continui colpi di scena. Le cause che producono gli effetti sono spesso sconosciute. o molto difficili da identificare In un mondo incerto essere flessibili e saper cambiare strada velocemente quando le previsioni si rivelano scorrette è una condizione necessaria. Richiede una capacità di correggere il tiro e di cambiare direzione non appena si scopre che quella scelta non è più valida o che è comunque sbagliata. L'alternativa è perdere delle opportunità perché non si è sufficientemente veloci. L'efficacia è importante quanto l'efficienza. Le pratiche valide negli scorsi anni di effettuare previsioni dei consumi futuri basandosi sui consumi passati oggi si rivelano fallaci. Possono valere solo in casi limitati, ragionando su intervalli temporali dell'ordine di qualche mese. C COME COMPLEX, O COMPLESSO Le variabili sono molte, così come molte sono le connessioni. II sistema è una vera e propria rete rappresentata da molte interazioni e dalle relative forze che si vengono a creare. Creandosi confusione fra cosa sia causa e cosa effetto, la relazione causa-effetto si può determinare solo a posteriori. Ripetere lo stesso esperimento o la stessa pratica produce risultati diversi.Anche in queste condizioni, occorre essere pronti a fronteggiare velocemente il cambiamento necessario. A COME AMBIGUOUS, O AMBIGUO La realtà non è così chiara come vorremmo. Le relazioni causa-effetto sono poco nitide e decisamente sfocate. Di fronte alla molteplicità di possibili significati e interpretazioni della realtà, le informazioni che possediamo non sono sufficienti per giungere a un' unica conclusione. Anche in questo caso, le decisioni prese e le azioni conseguenti dovranno essere corrette di frequente in corso d'opera. L'efficienza produttiva o "Exploitation" è stata al centro dell'attenzione in tutte le scuole di ingegneria e di management, che si sono focalizzate nella ricerca di sistemi e metodologie per essere più efficienti e per automatizzare i processi. Ma l'efficienza è picnamente possibile solo se un'operazione viene ripetuta più volte. Se mi trovo invece a fare un singolo prodotto o un singolo pezzo non ripetitivo - e quindi in un processo differente dal "One Piece Flow" in logica lean, pensato per la produzione di un pezzo noto in lotto unitario - l'efficienza da sola risulta solo parzialmente applicabile, e in alcuni casi per nulla. Lo sviluppo di un qualsiasi prodotto dall'idea alla sua produzione di serie passa in genere per alcune macro-fasi comuni. Tali fasi avvengono normalmente in sequenza temporale, ossia "a cascata": una dopo l'altra. Questo metodo prende quindi il nome di Waterfall. Per ridurre il tempo che va dall'ideazione all'inizio della produzione ripetitiva - a partire dalla quale l'azienda inizia a recuperare le spese sostenute e incassare dalla vendite - si pratica da tempo la sovrapposizione delle fasi. Dopo una fase iniziale all'interno della quale si verifica la fattibilità del prodotto/servizio o se ne costruisce una "Prova di Concezione" o Proof of Concept, le successive fasi di sviluppo si completano quando la fase successiva è già iniziata. Gestione di progetto Sviluppare un nuovo prodotto dall'idea iniziale fino alla sua produzione di serie è un'impresa di una certa durata che coinvolge persone e risorse. Secondo il PMI (Project Management Institute) un progetto è: "Uno sforzo temporaneo intrapreso per creare un prodotto, un servizio o un risultato unico. La natura temporanea del progetto indica che esso ha un inizio e una fine definiti." Quindi per sviluppare un'idea e trasformarla in un prodotto occorrono un metodo di gestione progetti e il giusto approccio mentale. Abbiamo visto in precedenza che gestire lo sviluppo di nuovi prodotti in un ambiente VUCA richiede una pianificazione "adattiva", ossia che si adatti facilmente al cambio delle situazioni. 2. Modelli di sviluppo Esistono diversi modelli del processo di produzione software: a) modello a cascata b) sviluppo agile Il modello a cascata Il modello a cascata o ciclo di vita a cascata (waterfall model o waterfall lifecycle in inglese) è un modello di ciclo di vita del software (ovvero di processo software) secondo cui la realizzazione di un prodotto software consta di una sequenza di fasi strutturata in analisi dei requisiti, progetto, implementazione, testing (validazione), integrazione e manutenzione. Ciascuna di queste fasi produce un ben preciso output che viene utilizzato come input per la fase successiva (da cui la metafora della cascata). Il ciclo di vita a cascata fu il primo modello di ciclo di vita del software. A partire almeno dagli anni '80 il modello è stato soggetto a profonde critiche e revisioni, soprattutto dovute all'evoluzione del software stesso e dei linguaggi di programmazione. Pregi Il maggior pregio di questo metodo di lavoro è certamente la semplificazione del controllo dell’andamento del progetto tramite la suddivisione del ciclo di vita in fasi successive ben definite. Difetti Benché l’adozione di questi principi appaia estremamente produttiva, la loro applicazione pratica ha come effetto collaterale, soprattutto per i progetti di grandi dimensioni, un pericoloso scollamento fra le diverse attività, sia per le difficoltà di coordinamento che per la difformità delle metodologie e dei formalismi specialistici adottati. Un ulteriore problema di questa impostazione deriva dalla necessità di terminare completamente tutta la fase di analisi dei requisiti e progetto dell’applicazione per cominciare la programmazione e quindi verificarne sul campo le conclusioni. Il modello, quindi, è una semplificazione della realtà che non trova piena applicazione in quanto vanno rispettati tre principi: Linearità: spesso si hanno cicli di feedback (il caso dell’alpha e del beta testing) per la correzione degli errori. Tale feedback, purtroppo, deve essere lineare e, quindi, non si possono effettuare salti a ritroso ma vanno ripercorse tutte le fasi in maniera lineare; Rigidità: ogni fase viene congelata quando si passa alla fase successiva per cui non è possibile un’interazione tra clienti e sviluppatori durante il ciclo di vita dopo la parte iniziale; Monoliticità: tutto il modello è orientato alla singola data di rilascio che spesso si pone a mesi o anni dopo l’inizio della prima fase per cui se vengono commessi eventuali errori o cambiano i requisiti, questi verranno implementati dopo parecchio tempo e comunque alla fase di consegna seguirà subito un altro adattamento perché il software sarà già obsoleto. Una metodologia Agile, a grandi linee, è un insieme di pratiche e regole codificate, che hanno lo scopo di facilitare la migrazione dei processi produttivi da una logica waterfall ad un approccio più iterativo e incrementale. Nell’approccio waterfall, tutta la progettazione viene fatta in una fase iniziale. La realizzazione ha come focus principale l’aderenza stringente a quanto progettato e il risultato viene verificato alla fine, tramite collaudi che a loro volta hanno lo scopo di verificare l’aderenza del progetto alle specifiche. Limiti delle metodologie tradizionali Le metodologie tradizionali di sviluppo di Software si dimostrano oggi spesso non più efficaci e con importanti limiti legati soprattutto al fatto che tali metodologie sono nate in un diverso periodo storico, per la realizzazione di progetti dalle dimensioni e dalla complessità imparagonabili con quelle attuali. Infatti¸ è sempre più necessario dover gestire problemi complessi, con requisiti di prodotto-servizio in continua evoluzione durante lo sviluppo del progetto. Per questo motivo, il lavoro può essere articolato in incrementi e può richiedere una collaborazione stretta e un feedback rapido e continuo dagli utenti finali. In particolare, i limiti si manifestano in: Test eseguiti solo in fase tardiva: eseguire i test solo al termine del progetto, quando si hanno ormai migliaia di righe di codice ed appena prima della messa in produzione può essere rischioso dal punto di vista economico e delle tempistiche Problemi legati alla burocrazia: la specifica dei requisiti del software si concretizza nella stesura di un documento che agisce da vincolo per lo sviluppo; in questo modo si rischia di legarsi ad un oggetto che non soddisfa realmente le esigenze del cliente “Obbligo” di adempiere a compiti burocratici: le attività di documentazione sono generalmente non gradite dagli sviluppatori Regressione dell’errore: modificare solo in fase finale parti del codice può portare ad un concatenarsi di errori in parti del sistema che pure non sono direttamente coinvolte nelle modifiche Linearità: correggendo gli errori a ritroso si ripercorre linearmente tutto il ciclo di sviluppo Rigidità: nei modelli tradizionali “waterfall” tutte le fasi sono definite a priori ed il cliente viene coinvolto solo in quella iniziale ed in quella finale. Questo porta ad un trascinamento di eventuali errori o disallineamenti con le richieste del cliente che vengono scoperti solo alla chiusura del Progetto. In questo contesto nasce la metodologia di sviluppo “Agile”, con l’obiettivo di superare tali limiti. 1. Raccolta dei requisiti ed analisi Il progetto inizia con la fase di raccolta dei requisiti. In questa fondamentale fase vengono adottate e combinate tra loro diverse tecniche volte ad “estrarre dalla mente del cliente o del committente tutto ciò che il progetto software dovrà fare”. Questa fase può essere svolta con una combinazione di diversi metodi, quali ad esempio: Interviste, Osservazioni sul campo, Gruppi di Lavoro, ecc. Alla fase di raccolta requisiti segue quella di analisi. Fase estremamente importante, in quanto un errore commesso a questo punto può avere ripercussioni molto serie sul risultato finale. L’obiettivo della fase di analisi è la descrizione completa e formalizzata, con un livello di dettaglio adeguato di tutto ciò che il sistema deve fare (requisiti funzionali), dell’ambiente in cui dovrà operare (requisiti non funzionali) e dei vincoli che dovrà rispettare (vincoli). Esempi di requisiti funzionali sono: servizi che il software stesso deve fornire; risposte che l’utente aspetta dal software in determinate condizioni; risultati che il software deve produrre in risposta a specifici input. Esempi di requisiti non funzionali sono: I requisiti di qualità che descrivono le caratteristiche di qualità del prodotto software da sviluppare o mantenere I requisiti tecnici come le tecnologie e gli standard (DBMS, middleware, networking) di cui il software deve tenere conto. Esempi di vincoli di progetto sono: obiettivi temporali del progetto (schedulazione, date di consegna); risorse a disposizione (budget, competenze degli sviluppatori, esperienza del capo progetto); strumenti e metodologie di conduzione del progetto (processo di produzione, uso di CASE, rischi e dipendenze da altre iniziative al di fuori del controllo del responsabile di progetto). Notare che la descrizione specifica cosa il sistema dovrà fare, non il come (modello a scatola nera). Gli autori del manifesto Agile, reduci da svariati progetti infruttuosi, notarono che la principale causa di problemi era la totale mancanza di evoluzione in questa equazione. Se in un progetto di lunga durata, non si rimuove il vincolo della stringente aderenza alle specifiche iniziali, si accumula tutto il rischio alla fine. Eventi imprevisti, aree non coperte dall’analisi, requisiti incompleti o involontariamente errati, mutamenti del mercato o della strategia aziendale, il feedback degli utenti… tutto viene ignorato finché il progetto non viene portato in produzione, ovvero quando tempo e budget sono terminati (e quasi sempre anche superati). Nello sviluppo Agile del software, lo scopo principale è adottare pratiche e prassi tali da aiutare i team di prodotto a focalizzarsi su ciò che realmente porta valore, migliorando costantemente i propri processi e la qualità del risultato. I metodi Agili si focalizzano sulle modalità di collaborazione tra le persone (tutti coloro che sono coinvolti nel processo produttivo, a volte persino gli utenti finali), affinché l’organizzazione sia in grado di rilasciare frequentemente quelle caratteristiche del software che sono davvero rilevanti, adattando le sua strategia alle evidenze e a ciò che apprende dal mercato. https://youtu.be/Wku93RUALqc