Elaborato Traiola Marcello N46000127
Transcript
Elaborato Traiola Marcello N46000127
Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Elaborato finale in Ingegneria del Software Le storie utente ed altre tecniche per la specifica dei requisiti negli approcci Agili per lo sviluppo software Anno Accademico 2011/2012 Candidato: Marcello Traiola matr. N46000127 I II Sommario Introduzione ...................................................................................................................................................................................... 4 Capitolo 1 -‐ La nascita dei metodi agili .................................................................................................................................. 6 1.1 I principi dei metodi agili ................................................................................................................................................... 7 1.2 Attenzione ai requisiti! ........................................................................................................................................................ 8 1.3 Scriviamo i requisiti .............................................................................................................................................................. 9 Capitolo 2 -‐ Tre metodi a confronto ...................................................................................................................................... 14 2.1 SCRUM Flow ........................................................................................................................................................................... 14 2.1.1 La specifica dei requisiti in SCRUM ...................................................................................................................... 17 2.1.2 È “fatto”? .......................................................................................................................................................................... 18 2.1.3 Persone, non processi! ................................................................................................................................................ 19 2.2 Uno sguardo al processo di XP ....................................................................................................................................... 20 2.2.1 La specifica dei requisiti in XP ................................................................................................................................ 21 2.2.2 “The Planning Game” ................................................................................................................................................. 22 2.2.3 L’anima di XP ................................................................................................................................................................. 24 2.3 L’approccio di Crystal ........................................................................................................................................................ 25 2.3.1 Crystal Clear ................................................................................................................................................................... 27 2.3.2 Crystal Orange ............................................................................................................................................................... 28 2.3.3 Crystal Orange/Web ................................................................................................................................................... 29 Capitolo 3 -‐ Confronti e conclusioni ...................................................................................................................................... 31 3.1 Un’analisi trasversale ........................................................................................................................................................ 31 3.1.1 Supporto alla gestione del processo .................................................................................................................... 31 3.1.2 Guida pratica o concetti astratti? ......................................................................................................................... 33 3.1.3 Approccio standard o adattivo? ............................................................................................................................ 34 3.1.4 Quanta innovazione? .................................................................................................................................................. 35 3.2 Conclusioni ............................................................................................................................................................................. 37 Bibliografia ....................................................................................................................................................................................... 39 Articoli scientifici ........................................................................................................................................................................... 40 Sitografia ........................................................................................................................................................................................... 41 III Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software Introduzione Il rapido progresso tecnologico che ha caratterizzato gli ultimi decenni ha portato all’introduzione dell’informatica nella quasi totalità dei settori, che riguardano sia prodotti sia servizi. Un software avanzato che assista la produzione è, ormai, requisito fondamentale per ogni azienda che voglia creare prodotti di qualità con tempi e costi ridotti. Come sono sviluppati i software in grado di supportare in maniera adeguata la produzione? Le varie fasi del cosiddetto ciclo di vita del software sono oggetto di studio da molti anni e, secondo il contesto in cui vengono analizzate, presentano diverse peculiarità. La progettazione di un sistema critico per il controllo della stabilità di un velivolo, ad esempio, necessita che tutti i requisiti siano meticolosamente analizzati per verificare che le varie interazioni non compromettano la sicurezza; ciò richiede una lunga fase di analisi dei requisiti alla fine della quale si avrà un’idea chiara e definitiva dei requisiti del sistema. «Quando questo approccio “pesante” […] [è] applicato a sistemi aziendali di piccole e medie dimensioni, l’overhead richiesto [è] così alto che a volte [domina] il processo di sviluppo del sistema» [Sommerville 2007]. 4 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software Si comprende facilmente, infatti, come un’azienda, influenzata dall’andamento dei mercati e vincolata al rispetto di specifiche norme giuridiche, debba operare repentini “cambi di rotta” e prendere decisioni spesso in contrasto fra loro. Tutto ciò si riflette sul software. Un approccio come quello citato in precedenza necessita che i requisiti siano completamente definiti, cosa che avviene raramente in contesti del genere. Adottare soluzioni di sviluppo “pesanti” può portare a sviluppare software di qualità nei tempi stabiliti ma non garantisce che siano ancora utili. Nascono, quindi, i metodi agili. In questo testo ci si propone di esaminare il processo di analisi dei requisiti per alcuni fra i metodi agili più conosciuti e utilizzati. S’introdurrà il concetto di metodo agile per poi proseguire con la presentazione di tre fra i metodi più famosi (SCRUM, eXtreme Programming e Crystal) ponendo l’attenzione su come avviene la specifica dei requisiti. Infine si metteranno in luce pregi e difetti dei metodi descritti e si concluderà con un confronto. 5 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software Capitolo 1 La nascita dei metodi agili Negli anni ’90 alcuni sviluppatori software proposero nuovi metodi di sviluppo che presero il nome di metodi agili. Il motivo principale per cui divenne necessario trovare un nuovo modo di “fare software” fu che, con i metodi tradizionali, «si impiegava più tempo per decidere come il sistema sarebbe stato sviluppato piuttosto che per lo sviluppo e il test del programma» [ Sommerville 2007]. L’idea comune che unisce tutti i metodi agili è quella di sviluppo e consegna incrementale per cui durante la produzione si attraversano più di una volta tutte le fasi del ciclo di vita del software (“sviluppo ciclico”). Il software sarà sviluppato e consegnato per incrementi, ognuno dei quali implementerà una nuova funzionalità testata e pronta per essere commercializzata. In questo modo si 6 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software guadagna il feedback degli utenti così da comprendere più a fondo pregi e difetti del prodotto realizzato. 1.1 I principi dei metodi agili • Individuals and interactions over processes and tools. • Working software over comprehensive documentation • Customer collaboration over contract negotiation • Responding to change over following a plan Questi quattro punti rispecchiano ciò che i firmatari del manifesto agile (www.agilemanifesto.org) considerano importante nella creazione del software. Gli individui e le interazioni fra essi sono più importanti dei processi e degli strumenti poiché i progetti sono fondati sulle persone: queste devono essere motivate e devono lavorare in un ambiente che garantisca adeguato supporto. Si deve preferire un software funzionante a una documentazione esaustiva: quale metro migliore per misurare il progresso del rilascio frequente di software funzionante! Meglio collaborare col cliente piuttosto che negoziare un contratto: una conversazione “face to face” elimina fraintendimenti e rende tutti uniti per raggiungere gli obiettivi. Seguire un rigido piano rende meno flessibili, pertanto anche a stadi di sviluppo avanzati i cambiamenti vanno accolti per favorire la competitività del cliente. 7 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software 1.2 Attenzione ai requisiti! Mentre in passato si dava molta importanza alla specifica minuziosa dei requisiti, l’avvento dei metodi agili propone di prestare maggiore attenzione al fare piuttosto che al progettare. Questa proposta, nata per venire incontro a esigenze di sviluppo veloce del software, è stata fraintesa. La continua richiesta di programmi avanzati ed evoluti ha portato all’eccesso opposto: «doing requirements takes time — time that could be spent writing code — and users often feel better if they think that people are “working” […] on their problems» [Ken Orr IEEE software 2004] ovvero: “Analizzare requisiti prende tempo – tempo che potrebbe essere speso scrivendo codice – e gli utenti spesso si sentono più sereni pensando che le persone ‘lavorino’ sui loro problemi”. Si è giunti, dunque, a considerare quasi superflua l’analisi dei requisiti sacrificando la comprensione del progetto cui si lavora in favore della sua rapida creazione. Ken Orr, nell’articolo “Agile Requirements: Opportunity or Oxymoron?” pubblicato sulla rivista “IEEE Software” nel 2004, osserva come un analista, invece di assumere il ruolo passivo di scrivere ciò che gli utenti chiedono, dovrebbe aiutarli a inventare i requisiti. Infatti – dice – obiettivi e vincoli che il sistema deve rispettare spesso non sono chiari agli utenti, per cui c’è bisogno che qualcuno li guidi attraverso il processo di analisi. Neil Maiden e Alexis Gizikis (Centre for HCI Design, City University, London) insieme a Suzanne Robertson (The Atlantic Systems Guild) nell’articolo “Provoking Creativity: Imagine What Your Requirements Could Be Like” (IEEE Software, vol. 21, no. 5, 2004, pp. 68–75) riportano i risultati dell’esperienza fatta lavorando con EUROCONTROL (European Organisation for the Safety of Air Navigation). L’obiettivo era di progettare e implementare RESCUE (Requirements Engineeringwith Scenarios for User-centered Engineering), un processo per determinare i requisiti di interesse per gli utenti, applicandolo ad un sistema che fornisce assistenza computerizzata ai controllori di traffico aereo per risolvere potenziali conflitti tra velivoli (CORA-2). 8 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software Per stimolare la creatività i progettisti hanno coinvolto membri del team e stakeholders in quelli che chiamano “workshop”. Durante il primo di questi sono stati invitati esperti di design tessile e compositori musicali per incoraggiare confronti e analogie tra i due settori e CORA-2. Durante il secondo un esperto fabbricante di giochi Lego ha introdotto oggetti a caso durante discussioni su scenari di risoluzione dei conflitti tra velivoli allo scopo di provocare pensiero creativo. Per il terzo, infine, è stato invitato un fusion chef a discutere il legame fra ingredienti non convenzionali facendoli assaggiare; lo chef ha inoltre dato dimostrazione della cucina fusion preparando un pranzo che ha messo in luce le differenze tra gli ingredienti ma anche la loro complementarietà. Ogni workshop, inoltre, partiva con attività mirate a creare il giusto ambiente per sviluppare pensiero creativo; tra queste le più singolari: palloncini per incoraggiare al gioco e all’interazione, shouting sessions per contrastare inibizioni e incoraggiare il lavoro di gruppo, ascolto di musica rilassante. Da questo studio sono emerse le grandi difficoltà degli utenti nel definire i requisiti per i propri software e il ruolo centrale che gli analisti dovrebbero avere nel guidarli attraverso il processo. 1.3 Scriviamo i requisiti Come abbiamo finora descritto, le tecniche agili hanno avuto un impatto molto forte sul processo requisiti. Ora di definizione dei occupiamoci di comprendere le novità che sono state introdotte nella documentazione dei requisiti. Gli stakeholder scrivono le cosiddette storie utente e ciò spesso accade durante i workshop. Ogni storia utente Storie Utente [Maiden and Jones, IEEE Software, vol.27 no.3, 2010, pp. 87-88] è scritta su una “cartolina” di 9 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software dimensioni contenute (3x5 pollici) poiché semplicità e brevità sono caratteristiche precipue delle storie utente. Ognuna descrive un requisito in maniera semplice dal punto di vista dell’utente senza specificare troppi particolari. Ciò lascia spazio alla comunicazione “faccia a faccia” durante la quale si definiscono meglio gli obiettivi di ogni requisito. Ogni progetto genera molte storie utente in modo che sia semplice selezionarle e gestire i requisiti da implementare. Lan Cao e Balasubramaniam Ramesh nello studio condotto sull’utilizzo dei metodi agili nella specifica dei requisiti (RE, “requirements engineering”), hanno identificato sette pratiche di RE utilizzate dalle 16 organizzazioni prese in esame [IEEE Software vol.25 no.1 January/February 2008, pp. 60-67, “Agile Requirements Engineering Practices: An Empirical Study”]. Ognuna di queste presenta lati positivi e negativi: • Comunicazione “faccia a faccia” invece di specifiche scritte o Benefits: I clienti guidano il progetto in direzioni inaspettate quando le loro richieste mutano in seguito a cambi di “environment”. Il tempo sprecato per consultare la documentazione, ora superflua a causa dei cambiamenti ricorrenti, è utilizzato in maniera più produttiva. o Challenges: È difficile che il cliente sia sempre disponibile per un incontro e ciò pone dei rischi come la possibilità di avere requisiti non ben sviluppati o, addirittura, sbagliati. L’effettiva comunicazione dipende, oltre che dalla disponibilità, anche della fiducia reciproca tra team e cliente. Infine se i clienti interessati al prodotto sono più di uno non è facile raggiungere compromessi che mettano tutti d’accordo in cicli di sviluppo brevi. • Specifica dei requisiti iterativa o Benefits: «I think the difference for me came in the quality of the software [and] the stability of the software. […] I think the agile [RE] lent itself to […] a very robust rich implementation of features […] [for] the first time»: le parole di un cliente, che confronta l’esperienza agile con quella 10 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software tradizionale, mettono in luce il rapporto di fiducia tra team e cliente che nasce dai continui incontri e il conseguente piacere di quest’ultimo nel vedere soddisfatte le proprie aspettative. I requisiti diventano più chiari e comprensibili grazie all’immediato coinvolgimento del cliente quando necessario. o Challenges: Complessità nello stimare costi e tempi: ottenere supporto “manageriale” in progetti di questo tipo non è semplice. La poca documentazione prodotta può causare vari problemi come la difficoltà di migliorare il software e coinvolgere nuovi membri nel team. Requisiti non funzionali sono spesso mal definiti poiché l’attenzione è focalizzata sulle funzionalità principali e requisiti come scalabilità, manutenibilità, portabilità, sicurezza o performance sono ignorati. • Frequenti cambi di priorità dei requisiti o Benefits: Siccome nella RE agile la priorità dei requisiti è scelta in base alle esigenze di mercato come sono intese dal cliente, la partecipazione di quest’ultimo alla realizzazione fornisce in ogni ciclo di sviluppo motivazioni, di tipo economico, per l’implementazione di un requisito piuttosto che di un altro. o Challenges: D’altro canto gestire la priorità dei requisiti guardando al mercato come unico obiettivo può causare problemi riguardanti requisiti non funzionali come stabilità, sicurezza, efficienza, scalabilità, etc. • La continua pianificazione cambia il modo di gestire i requisiti o Benefits: Il continuo confronto tra team e cliente fornisce maggior consapevolezza riguardo al lavoro svolto poiché in ogni incontro l’attività di pianificazione assume ruolo fondamentale. Per questo motivo la maggior parte dei cambiamenti richiesti sono «usually more a case of tweaks … spelling, little graphical things … for example, color, positioning». 11 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software o Challenges: Siccome l’architettura scelta durante le prime fasi del processo produttivo diventa inadeguata in alcuni casi con il cambiare dei requisiti, progettarne una nuova aggiunge costi al progetto. Spesso neanche il refactoring, che semplifica il codice senza compromettere le funzionalità, riesce a porre rimedio a problemi di architettura. • Uso di prototipi o Benefits: Invece di perdere tempo a scrivere documentazione dettagliata si mostra al cliente il lavoro svolto per discuterne la validità. o Challenges: È complicato manutenere e aggiornare i prototipi e causa problemi con requisiti come scalabilità, sicurezza e robustezza. • Sviluppo guidato dai test (TDD). o Benefits: Creare dei test prima di creare il codice che li supererà «allows you to be more adventurous in terms of making changes and trying out ideas» poiché si ha un feedback immediato del lavoro svolto. o Challenges: Gli sviluppatori non sono abituati a scrivere i test prima del codice. Sono necessarie una profonda comprensione dei requisiti e una collaborazione intensiva tra sviluppatori e clienti. • Utilizzo review meetings e acceptance tests o Benefits: I review meeting riportano prima di tutto i progressi del progetto al cliente e agli stakeholder e danno la possibilità di capire se il progetto procede verso l’obiettivo desiderato. Inoltre fiducia e confidenza tra cliente e team si fortificano. o Challenges: Spesso è difficile implementare gli acceptance test a causa della difficoltà di far riferimento ai clienti che li hanno sviluppati. Emerge, dunque, che la differenza fondamentale tra RE tradizionale e RE agile è che quest’ultima sfrutta un approccio iterativo per scoprire i requisiti e non segue un rigido piano di sviluppo. Ciò è dovuto al fatto che, in alcuni ambienti, ottenere 12 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software specifiche molto precise è praticamente impossibile oppure addirittura inutile in quanto è probabile che cambino. Osservando i risultati dello studio di Cao e Ramesh si capisce come la novità più “apprezzata” in ambienti del genere sia l’intensiva comunicazione che porta il team a comprendere i desideri del cliente e rende lo sviluppo più dinamico e adattabile. 13 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software Capitolo 2 Tre metodi a confronto In questo capitolo si cercherà di analizzare, per ogni metodologia agile proposta, il processo di specifica dei requisiti al fine di fornire un punto di vista utile, nel capitolo successivo, ad analizzare differenze e somiglianze e a comprendere in quali situazioni una metodologia possa essere più utile rispetto a un’altra. 2.1 SCRUM Flow Prima di parlare del processo di specifica dei requisiti in SCRUM occupiamoci di dare un quadro generale del processo e delle persone che portano al rilascio del software. Partiamo analizzando lo SCRUM Team composto da Product Owner, Team e SCRUM Master. o Il Product Owner è una persona che rappresenta il committente. È responsabile della gestione del Product Backlog e ha il compito di massimizzare il valore del lavoro svolto dal team. Le sue decisioni devono essere rispettate affinché il suo lavoro sia efficace. o Il Team è composto di più persone (in genere tra 3 e 9) che lavorano per produrre un incremento del prodotto da consegnare alla fine di uno sprint. Il 14 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software team è organizzato in maniera autonoma ed è cross-funzionale. Ogni membro ha le stesse responsabilità degli altri a prescindere dal ruolo svolto. o Lo SCRUM Master ha, da una parte, il ruolo di “leader” per il team e, dall’altra, d’intermediario tra il team e coloro che non ne fanno parte. Ha il compito di verificare che il team comprenda e applichi le regole di SCRUM e quello di riconoscere quali interazioni tra il team e gli stakeholder sono utili e quali no. Lo Sprint è considerato il cuore di SCRUM. È un periodo durante il quale il team produce un incremento del prodotto secondo le priorità imposte dal Product Backlog allo scopo di rilasciare sul mercato funzionalità complete e testate. Lo Sprint consta, oltre che di quella di sviluppo, di più fasi: o Sprint Planning Meeting: riunione durante la quale sono pianificate le attività da svolgere durante lo Sprint. Partecipa l’intero SCRUM Team. La prima delle due fasi dell’incontro è incentrata su “cosa” sarà fatto durante lo Sprint: il Product Owner presenta i punti del Product Backlog partendo da quelli a priorità maggiore e, in base anche all’ultimo incremento e alle performance precedenti del Team, si definisce l’Obiettivo di Sprint (o Sprint Goal) che sarà perseguito. Il numero di punti del Product Backlog che saranno considerati nello Sprint Goal e, quindi, implementati è deciso esclusivamente dal Team poiché nessuno conosce meglio le sue potenzialità. La seconda fase della riunione è incentrata sul “come” si porterà a termine il lavoro in programma. In questa fase nasce lo Sprint Backlog fatto dalle voci selezionate dal Product Backlog e dal piano per la consegna. Si progetta il lavoro necessario all’implementazione dei requisiti scelti e, se risulta troppo o troppo poco, si possono ridiscutere con il Product Owner le voci selezionate dal Product Backlog. 15 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software La durata di un Meeting è di otto ore per uno Sprint di un mese. Se lo Sprint dura meno, si avrà una riduzione proporzionata della durata del Meeting. o Daily Scrum: Riunione giornaliera di 15 minuti (ogni giorno nello stesso posto e alla stessa ora) utile al Team di Sviluppo per definire e sincronizzare le attività della giornata in base al lavoro svolto il giorno precedente. Durante la riunione ci si accerta che il lavoro svolto sia sempre in linea con lo Sprint Goal. Lo SCRUM Master assicura e disciplina lo svolgimento della riunione che è condotta, però, esclusivamente dal Team. L’obiettivo principale della riunione, in fondo, è quello di migliorare le comunicazioni all’interno del team per eliminare ostacoli come incomprensioni o malintesi nel pieno rispetto delle metodologie agili. o Sprint Review: Incontro che avviene al termine di uno Sprint per esaminare l’incremento prodotto e modificare, se necessario, il Product Backlog. Prendono parte alla riunione anche gli stakeholder. Si tratta di un colloquio informale atto a suscitare i commenti dei partecipanti e a spronare la collaborazione. Durante lo svolgimento il Team riporta l’evoluzione dello Sprint evidenziando i problemi incontrati e le soluzioni trovate. In base al lavoro prodotto, il Product Owner fa delle stime sul tempo ancora necessario e discute col Team di eventuali accorgimenti da fare. Il risultato è un Product Backlog riesaminato e aggiornato. La durata dell’incontro è di quattro ore per uno Sprint di un mese. Se lo Sprint dura meno, si avrà una riduzione proporzionata della durata dell’incontro. o Sprint Retrospective: È una riunione di tre ore (dopo uno Sprint di un mese) che riguarda esclusivamente il Team SCRUM. Lo scopo di tale incontro è far si che il Team guardi a se stesso in modo critico e adatti il proprio atteggiamento secondo i problemi che emergono per trovare soluzioni in maniera più 16 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software semplice. Lo SCRUM Master incoraggia tale attività e invita il Team a individuare pratiche per rendere più efficace e divertente lo Sprint successivo. SCRUM Flow [Ken Schwaber, “Agile Project Management with Scrum”, Microsoft Press © 2004] 2.1.1 La specifica dei requisiti in SCRUM Quello di “Product Backlog” è il concetto intorno a quale gira il processo di specifica dei requisiti in un ambiente di sviluppo software che sfrutta l’utilizzo di SCRUM. Il termine indica la lista di requisiti ottenuta a valle di una discussione tra il team di sviluppo e il cosiddetto “Product Owner”, che rappresenta il soggetto committente ed è l’unico responsabile del Product Backlog. La caratteristica precipua del Product Backlog è di non essere mai completo ma, piuttosto, sempre in continua evoluzione in base alle modifiche che i requisiti subiscono con l’avanzare del progetto e alla priorità che essi assumono. Ciò che si trova alla base di questa caratteristica è la consapevolezza che lo sviluppo del software in sé porta alla luce problematiche non prevedibili nell’analisi iniziale, cosa che compromette anche le stime dei tempi di sviluppo più accurate. 17 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software Gli elementi presenti nel Product Backlog sono spesso ordinati per priorità, rischio, valore, necessità; in cima alla lista, in genere, si trovano gli elementi più discussi dal team, quindi più conosciuti e consolidati, che saranno trattati per primi. Al concetto di Product Backlog è strettamente legato quello di “Sprint”. Questo termine indica la finestra temporale alla fine della quale sarà rilasciato un incremento del prodotto potenzialmente utilizzabile che implementa parte delle funzionalità. La durata di uno Sprint è molto limitata (in genere massimo un mese) in accordo al principio di rilascio graduale che contraddistingue le metodologie agili. In questo modo ogni funzionalità realizzata è testata a fondo prima del rilascio per garantire che soddisfi le specifiche richieste. Al termine di ogni Sprint ha luogo una riunione (“Sprint review”) in cui si discute il lavoro fatto durante lo Sprint appena concluso e si concorda il lavoro che sarà fatto durante il successivo. Il Product Backlog in questa fase si evolve in accordo con quanto emerso durante lo Sprint. Alla fine di questa fase, dunque, si ottiene una lista aggiornata dei requisiti che il software deve soddisfare e si conosce quale sarà il lavoro da svolgere durante lo Sprint che sta per cominciare. 2.1.2 È “fatto”? Presupposto fondamentale per la buona riuscita dell’analisi dei requisiti e per un buon test delle funzionalità implementate è la condivisione del concetto astratto di “fatto” (cfr. “done” in inglese). Com’è naturale, la definizione di un concetto astratto è difficilmente condivisa da tutti, motivo per il quale concetti espressi in poche parole, magari scritte, spesso sono confusi con altri secondo la personale interpretazione. Citando Mike Cohn: «Written words are misleading - they look more precise than they are» [Cohn 2009] ovvero “Le parole scritte sono fuorvianti – sembrano più precise di quanto non lo siano.” Definire, dunque, un’interpretazione comune del concetto di fatto giova enormemente al processo di sviluppo giacché porta i membri del team a perseguire un obiettivo comune e a lavorare in armonia giovandosi ognuno del lavoro degli altri. 18 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software Si può facilmente capire, quindi, come diverse interpretazioni del concetto di completezza incidano sulla stima dei tempi necessari allo sviluppo di una funzionalità e, di conseguenza, sulla scelta di quanti e quali elementi del Product Backlog trattare in uno Sprint. 2.1.3 Persone, non processi! Il processo di produzione tradizionale è diviso in fasi ben distinte sulle quali è difficile ritornare una volta concluse. Per quanto riguarda la specifica dei requisiti quest’approccio produce un documento preciso e puntuale in cui le richieste del cliente hanno una forma ben definita e vanno a tutti i costi rispettate. Ciò porta gli sviluppatori a sentirsi “costretti” a implementare ciò che il documento prescrive e non a condividere gli obiettivi che tale documento hanno prodotto. SCRUM pone l’attenzione più sulle persone che sul processo di produzione giacché quest’ultimo dipende dalle persone che lo intraprendono. Prendere in considerazione un processo produttivo in maniera assoluta porta inevitabilmente a un calo della qualità del prodotto o, quantomeno, ad avere tempi di produzione più lunghi. Riportiamo le parole di Mike Cohn per comprendere meglio il concetto appena espresso: One of the goals of shifting to Scrum is to get the whole team working together toward the goal of delivering a great product. We want to strip our development process of bad habits that work against this goal. Written documents create sequential hand-offs, which deprive the team of a unity of purpose. One person (or group) defines the product; another group builds it. Two-way communication is discouraged. Through the written document, one team member is saying, "Here's what to do," and others are expected to do it. This type of master-and-servant relationship is unlikely to create strong feelings of engagement on the part of the servants. Rather than feeling responsible for the success of the product, they feel responsible for doing what is described in the document. Discussions have the 19 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software opposite effect: Whole team discussions lead to greater buy-in by all team members [Cohn 2009]. 2.2 Uno sguardo al processo di XP Diamo ora un rapido sguardo all’intero processo produttivo di eXtreme Programming (XP d’ora in poi) in cui la specifica dei requisiti s’innesta. Oltre alle fasi di Esplorazione e Pianificazione racchiuse nel Planning Game che vedremo nei prossimi paragrafi, il processo XP consta di altre quattro fasi: o Iterazioni verso il primo rilascio: fase caratterizzata da più iterazioni che portano alla prima versione del software pronta per essere utilizzata. Sono selezionate le storie e sono prodotti test funzionali per ogni iterazione. o Fase di produzione: durante la produzione potrebbe presentarsi la necessità di ridurre il tempo dedicato a ogni iterazione, di creare test prestazionali e di cambiare storie (dopo una discussione col Cliente). o Manutenzione: fase in cui il processo si trova per la maggior parte della sua vita; mentre il sistema è in esecuzione, si sviluppano nuove funzioni in modo da non interrompere l’erogazione dei servizi implementati e aggiungerne di nuovi. o Morte: questa fase “terminale” sopraggiunge quando i clienti non sono più in grado di produrre storie oppure quando il sistema non è più in grado di soddisfare le necessità del cliente. È la fase in cui bisogna necessariamente produrre documentazione. 20 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software 2.2.1 La specifica dei requisiti in XP «We will plan by quickly making an overall plan, then refining it further and further on shorter and shorter time horizons—years, months, weeks, days. We will make the plan quickly and cheaply, so there will be little inertia when we must change it» [Beck 1999]. La specifica dei requisiti in XP è un processo che avviene durante la fase individuata dal termine “The Planning Game”. Questa pratica si basa su alcuni principi cardine: • Pianificare in modo dettagliato esclusivamente il prossimo rilascio: si può pensare alle iterazioni successive ma assolutamente non nei dettagli. • Assumere responsabilità, non darle: il manager non può assegnare il lavoro, è ogni membro del team che deve decidere cosa può fare. • La stima dei tempi di realizzazione deve essere fatta da chi realizza. • Ignorare le dipendenze tra le parti del progetto: progettare come se le parti potessero cambiare in ogni istante. • Pianificazione orientata alle priorità: il cliente non ha bisogno di molti dettagli per fissare le priorità. 21 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software 2.2.2 “The Planning Game” L’obiettivo della pianificazione in XP è di eliminare imbarazzi e screzi tra clienti e sviluppatori e incoraggiare la comunicazione. Ciò è conseguenza del fatto che non esistono regole, per quanto flessibili, che possano eliminare le emozioni dalle persone. È importante che esistano regole al fine di ricordare come ci si dovrebbe comportare e di fornire un riferimento comune nel caso in cui le cose non procedano per il giusto verso. Ognuna delle due parti, clienti e sviluppatori, deve rispettare l’altra e solo in un ambiente di fiducia si può lavorare in maniera serena. È necessario, quindi, avere delle regole che suggeriscano come impostare i rapporti, ma è essenziale che rimangano dei suggerimenti in modo che, se il rapporto diventa ben saldo, si possano anche modificare o rimuovere. o Obiettivo: obiettivo del “gioco” è massimizzare il valore del software prodotto. Dal valore del software si deve stimare il costo dello sviluppo e i rischi che si corrono. o Strategia: Il team tende a investire meno possibile per mettere in produzione le funzionalità principali il più velocemente possibile con strategie atte a ridurre i rischi. Quando al cliente diviene chiaro quali sono le funzionalità più importanti il team può immediatamente metterle in produzione. o I “pezzi” del gioco: I pezzi del plannig game sono le story card (in figura). Ogni “storia” descrive, nel modo più semplice possibile, una funzionalità che il sistema dovrebbe implementare. Seguendo questa pratica si avrà un inquadramento generale della questione e non si creeranno rigidi schemi da seguire. 22 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software Story Card [Kent Beck, 1999, “Extreme Programming Explained: Embrace Change”] o I giocatori: Come si è già intuito, devono esserci due giocatori, il Cliente (decide come il sistema deve essere) e lo Sviluppo (realizza il sistema). o Le mosse: il gioco ha fondamentalmente tre fasi § Esplorazione: in questa fase i partecipanti si rendono conto di ciò che il sistema dovrebbe fare. Il Cliente scrive una storia descrivendo cosa dovrebbe fare il sistema, lo Sviluppo stima il tempo d’implementazione. Nel caso la stima non sia possibile o ci siano parti più importanti rispetto a altre, si divide la storia in più parti. § Impegno: il Cliente propone una data di rilascio e lo Sviluppo s’impegna a rispettarla. In questa fase il Cliente organizza le card per valore, lo Sviluppo le organizza per rischio e comunica il tempo necessario per realizzarle. Alla luce dei risultati, poi, il Cliente sceglie le card da includere nell’iterazione. § Aggiornamento: all’inizio di ogni iterazione il Cliente sceglie le storie da implementare che formino un sistema funzionante. Se lo Sviluppo si accorge di essersi sopravvalutato può chiedere al Cliente di rivedere le storie da implementare alla luce delle nuove 23 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software stime. Qualora il Cliente si renda conto di aver bisogno di una nuova storia più urgente da implementare, la scrive e, dopo che lo Sviluppo ne ha stimato i tempi di implementazione, la sostituisce ad una meno urgente che richieda gli stessi tempi. 2.2.3 L’anima di XP Ma cos’è realmente XP? La risposta non è semplice come si può pensare. XP, dal punto di vista pratico, è solo un mucchio di pratiche preesistenti unite sotto un unico nome. Il punto forte di tale unione sta nel fatto che ogni pratica compensa i difetti delle altre al fine di risolvere tutti i problemi che si presentano durante lo sviluppo. Questo non basta. Ciò che fa funzionare l’intero meccanismo sono le persone! Ogni individuo ha un bagaglio diverso di conoscenze ed esperienze. Come fare a sfruttarle a pieno? XP propone una serie di valori da rispettare per raggiungere completa sinergia all’interno del team. o Comunicazione: «Problems with projects can invariably be traced back to somebody not talking to somebody else about something important» [Beck 1999]. XP adotta molte pratiche che portano necessariamente le persone a comunicare (testing, programmazione di coppia e stime portano sviluppatori e clienti a confrontarsi). o Semplicità: Fare le cose semplici spesso risulta molto complicato; è difficile non pensare “in avanti” e agire solo in relazione al problema presente. XP, dunque, preferisce fare cose più semplici oggi, eventualmente pagando domani per cambiarle, rispetto a fare cose complicate che potrebbero non servire mai. 24 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software o Feedback: «Don't ask me, ask the system» [Beck 1999]. Non c’è nulla di meglio che conoscere in ogni momento lo stato del sistema. L’unico modo per sapere se un’unità logica o un’intera funzionalità sono state ben implementate è l’attività di test. o Coraggio: Questo aspetto, unito ai precedenti, può portare grandi benefici allo sviluppo del sistema. Osare, sapendo di avere l’appoggio dei colleghi e di avere un sistema semplice e testabile in ogni sua parte, diventa fondamentale per uscire da eventuali situazioni di stallo del progetto. Bisogna avere coraggio, ad esempio, per buttar via codice scritto durante un’intera giornata e ricominciare da zero con un approccio diverso. o Rispetto: È molto importante rispettare il proprio e l’altrui operato. Ognuno deve puntare a un lavoro di qualità senza interferire con quello degli altri. Ogni compente del team deve sentirsi accettato: ciò assicura motivazione e lealtà all’interno del gruppo e conduce verso l’obiettivo con unità e serenità. [Beck 2004] 2.3 L’approccio di Crystal Qual è l’approccio migliore da utilizzare nell’ambito dello sviluppo Software? Alistair Cockburn l'ideazione di risponde una famiglia con di metodologie che va sotto il nome di “Crystal”. L’idea è nata dalla convinzione che non è possibile adottare la stessa metodologia per tutti i progetti a prescindere dal numero di 25 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software persone che vi prendono parte e dalla criticità del progetto. Nel grafico in figura spostandosi lungo le ascisse varia il numero di persone coinvolte nel progetto e spostandosi lungo le ordinate è la delicatezza del sistema a variare attraverso quattro livelli di criticità: o Life: Un guasto nel sistema può causare perdita di vite umane. o Essential money: Un guasto nel sistema può causare perdite ingenti di denaro. o Discretionary money: Un guasto nel sistema può causare perdita di denaro ma si può correggere consultando il manuale utente. o Comfort: Un guasto nel sistema può causare perdita di comfort per l’utente. Secondo l’entità del progetto, dunque, bisogna adottare una metodologia più o meno pesante. «As with geological crystals, each has a different color and hardness, corresponding to the project size and criticality: Clear, Yellow, Orange, Orange / WebStream, Red, Magenta, Blue and so on» [Cockburn 2001]. L’obiettivo di Crystal non è di garantire “compatibilità” tra le sue varie versioni ma di offrire la possibilità a persone che lavorano a un piccolo progetto di potersi chiedere, qualora il progetto dovesse aumentare di dimensione e richiedere risorse umane maggiori, “quale sia il modo migliore di far lavorare in armonia più persone” e non “come preservare le precedenti condizioni di lavoro”. «Software development is usefully viewed as a cooperative game of invention and communication, with the primary goal of delivering useful, working software, and the secondary goal of setting up for the next game» [Cockburn 2001]: la filosofia di Crystal riflette quella precipua dei metodi agili per cui l’obiettivo principale è di 26 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software consegnare software utilizzabile in maniera incrementale e che soddisfi le specifiche; ciò deve avvenire attraverso cooperazione e comunicazione tra cliente e team. È necessario, poi, tenere traccia dei progressi per gettare le basi per le successive iterazioni. Crystal ha due valori fondamentali: • È basata sulle persone e sulla comunicazione tra queste. • Ha una grande tolleranza verso i diversi modi di lavorare dei membri del team. Nei paragrafi successivi descriveremo tre delle metodologie della famiglia Crystal. 2.3.1 Crystal Clear Crystal Clear è una metodologia pensata per progetti di categoria D6. È possibile allargarne l’uso a progetti di dimensioni leggermente maggiori ma si può andare incontro a problemi di comunicazione quando troppe persone prendono parte al progetto e diventa un problema condividere gli spazi. Gli sviluppatori, infatti, hanno la piena libertà di scegliere il metodo che più ritengono opportuno per lo sviluppo del progetto ma devono rispettare il vincolo di condividere lo spazio di lavoro in modo da poter comunicare liberamente. I ruoli presenti in Crystal Clear sono i seguenti: o Sponsor o Senior Designer-Programmer o Designer-Programmer o User (presente almeno part-time) Una di queste figure deve assumere il ruolo di coordinatore, un'altra quello di Business Expert e qualcuno deve occuparsi dei requisiti. I requisiti sono espressi utilizzando UML e raccolti sotto forma di casi d’uso. Le regole standard sono: • Il software è rilasciato regolarmente ogni due-tre settimane sotto forma di incrementi. 27 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software • Si tiene traccia dei progressi attraverso rilasci di software invece che con documentazione scritta. • Si realizzano test di regressione automatici per assicurarsi che l’aggiunta o la modifica di funzionalità non interferisca con quelle già realizzate. • Ci deve essere coinvolgimento diretto del cliente nel progetto. • Un’attività può partire solo quando la precedente è “sufficientemente stabile”. • All’inizio e a metà dell’incremento hanno luogo i workshop per discutere del prodotto e della metodologia de seguire. Durante un’iterazione è possibile utilizzare la metodologia che si desidera (SCRUM, XP, etc) 2.3.2 Crystal Orange Crystal Orange è una metodologia ideata per un progetto di categoria D40. Tali progetti hanno una durata di uno-due anni. Per progetti di media-bassa portata, che richiedono più di 10 persone, il team è diviso in più gruppi cross-funzionali ognuno dei quali deve avere un Business AnalystDesigner, un UI Designer, uno-tre Designer-Programmers, un Database Designer, un Tester e persone che conoscano le altre tecnologie usate nel progetto. Il numero dei rilasci è minore poiché sarebbe troppo costoso per un progetto così lungo avere la stessa frequenza di rilasci di un progetto più piccolo. L’obiettivo di avere gruppi cross-funzionali è proprio quello di abbassare il numero dei rilasci e favorire la comunicazione “locale”. I vari gruppi sono considerati le unità fondamentali del progetto per cui ogni persona all’interno del gruppo può essere utile ogni volta che serve e non per un unico tipo di lavoro. Rispetto alla versione Clear, Orange richiede maggior documentazione. I requisiti dovrebbero essere definiti in linguaggio naturale, i documenti riguardanti la 28 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software progettazione dovrebbero essere chiari sia per gli sviluppatori sia per gli stakeholder e definiti con specifiche formali come diagrammi di stato. Come accade per Crystal Clear, infine, anche Crystal Orange lascia decidere al team quali metodologie adottare come standard (SCRUM, XP, etc.) e anche decisioni come stile di programmazione, standard per interfacce utente, dettagli dei test sono lasciate al team. 2.3.3 Crystal Orange/Web Crystal Orange / Web è una metodologia classificata idonea per situazioni di tipo E50 poiché è stata ideata ad hoc per una compagnia che annovera 50 persone e si occupa di situazioni classificate con criticità Essential money. La compagnia in questione è la Ebucks.com, che si occupa di fornire codice per il web con flusso continuo [Cockburn 2001]. La grande differenza tra questa versione di Crystal e le precedenti è che in questo caso si parla di continue richieste di codice che afferiscono non più ad uno, ma a più progetti diversi. Ciò che più interessa di questa “nuova versione” di Crystal Orange è che è stata disegnata per una compagnia che ha già un ruolo definito sul mercato. Non ha, quindi, requisiti stringenti in termini di time-to-market, quanto piuttosto in termini di cost of defects. In altre parole, l’obiettivo più importante è che ci siano meno errori possibile. Il focus si sposta, quindi, dalla produttività alla assenza di difetti. Da interviste a persone operanti in ruoli diversi, si evince che la comunicazione all’interno del team – i cui membri lavorano fianco a fianco in postazioni di lavoro ubicate allo stesso piano dell’edificio – risulta già buona. L’organizzazione delle postazioni, però, divide gli sviluppatori dai manager, fatto che potrebbe separare i due gruppi negli obiettivi e negli interessi. Inoltre, poiché ognuno lavora a molti progetti 29 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software diversi, le interruzioni sono molte e non favoriscono la concentrazione necessaria a portare a termine un buon lavoro. D’altro canto, però, essendo la compagnia abbastanza giovane, le abitudini non sono ancora consolidate ed è facile intervenire. Alla luce di queste notizie prende forma Crystal Orange/Web come insieme di convenzioni divise in cinque categorie. o Regular Heartbeat, with Learning: ci si propone di scegliere un modo di procedere che garantisca la possibilità di analizzare il lavoro svolto e riflettere su come migliorarlo. o Basic Process: si assegnano dei ruoli in modo da organizzare meglio il lavoro ed evitare sforzi inutili. o Maximum progress, minimum distractions: ci si deve concentrare su ciò che porta maggior profitto alla compagnia. Questo avviene tramite assegnazione di priorità e divisione del lavoro in modo che quel che si realizza possa essere testato a fondo alla fine di ogni ciclo. o Maximally defect-‐free: “kill bugs here!”. Si prova a eliminare gli errori prima possibile testando il codice realizzato e facendolo valutare ad altre persone. o A community, aligned in conversation: la compagnia deve far si che ogni individuo conosca l’obiettivo a lungo termine a cui si sta puntando in modo che possa condividerlo e sentirsi partecipe. Si possono organizzare riunioni in cui ognuno avanzi proposte, anche non relative al proprio campo, che contribuiscano a far progredire il progetto. 30 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software Capitolo 3 Confronti e conclusioni 3.1 Un’analisi trasversale Abbiamo analizzato i tre metodi agili proposti sotto diversi aspetti. Cerchiamo ora di evidenziare i punti di contatto e le differenze riguardo alla specifica dei requisiti. Puntiamo quindi il fuoco su: 1. quanto ogni metodologia fornisca supporto alla gestione del processo di specifica dei requisiti; 2. se i metodi offrano una guida concreta alla definizione dei requisiti in termini di tecniche oppure un insieme di principi astratti; 3. quanto ogni metodo sia disegnato per adattarsi a diverse situazioni piuttosto che fornire una guida rigida e poco flessibile. 4. l’innovazione introdotta da ogni metodo. 3.1.1 Supporto alla gestione del processo Sviluppiamo il primo punto (ausilio alla gestione del progetto) analizzando come ogni metodo affronta la gestione della fase di specifica dei requisiti. 31 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software o SCRUM è la metodologia che è maggiormente orientata alla descrizione del processo di specifica dei requisiti poiché propone di attraversare fasi di durata ben precisata entro le quali determinate attività devono essere svolte. Se pensiamo allo Sprint Planning Meeting, ad esempio, possiamo notare che, durante questa riunione, tutte le attività da svolgere durante uno Sprint sono attentamente pianificate. Se, poi, diamo uno sguardo anche agli altri incontri che avvengono con cadenza periodica, come Daily Scrum e Sprint Review, notiamo come essi abbiano come obiettivo principale quello di aggiornare, attraverso continui feedback, il Product Backlog, fonte scritta dei requisiti in SCRUM. [cfr. par. 2.1 - 2.1.1] o XP, di contro, non offre determinate strategie atte a gestire il processo di definizione dei requisiti. Non c’è una divisione sistematica del tempo come avviene in SCRUM, sono solo raggruppate tecniche preesistenti che in passato hanno aiutato a organizzazione la specifica dei requisiti. Come abbiamo già visto, il cliente scrive una storia e gli sviluppatori ne stimano il tempo d’implementazione. Qualora la stima sia impossibile, oppure ci siano parti più importanti di altre, la storia può essere divisa in più parti [cfr. par. 2.2.2]. Troviamo ciò che operativamente va fatto, dunque, ma non un’organizzazione in step che aiuti il management. o La famiglia delle metodologie Crystal, poiché non offre un vero e proprio contributo alla fase di definizione dei requisiti, non fornisce una descrizione di come affrontare tale fase. Si concentra di più sul 32 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software potenziamento della capacità di scegliere il giusto approccio in base all’entità del progetto (quindi il giusto colore) [cfr. par. 2.3]. 3.1.2 Guida pratica o concetti astratti? Occupiamoci ora di capire se i metodi proposti forniscano una guida pratica alla definizione dei requisiti, oppure diano solo una serie di consigli astratti volti a guidare i membri del team attraverso il processo senza imporre alcuna regola pratica e lasciando spazio alla creatività. o SCRUM cerca di non imporre tecniche ben precise, piuttosto cerca di essere un punto di riferimento per il team per quanto riguarda l’organizzazione e lo stato d’animo da assumere durante il lavoro di specifica dei requisiti. Il concetto di Product Backlog evidenzia proprio quest’aspetto: essendo un artefatto mai completo, deve sempre essere aggiornato e ciò spinge il team a riunirsi molto spesso per discutere dei problemi che emergono durante il progetto, delle modifiche da apportare ai requisiti e, soprattutto, del modo di lavorare al fine di portare a termine un obiettivo comune [cfr. par. 2.1.1] o XP, dal canto suo, è invece un metodo che fornisce indicazioni specifiche su “come” procedere operativamente nella definizione di un requisito. Si è visto come le storie utente (o story card) giochino un ruolo centrale nel processo. Il cliente descrive in maniera semplice ciò che il sistema dovrebbe fare tramite una “storia”, il team valuta i tempi di sviluppo e si concordano le priorità in base all’urgenza e ai rischi stimati [cfr. par. 2.2.1 – 2.2.2] 33 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software o Ancora una volta troviamo la famiglia delle metodologie Crystal senza proposte particolari: non è fornita nessuna linea guida, né pratica né teorica, per definire i requisiti. Crystal, in ogni variante analizzata, impone solo di seguire degli standard senza specificare esattamente quali. Lascia la possibilità, dunque, di scegliere le regole che si reputano più adatte citando come scelte possibili anche gli altri due metodi che abbiamo analizzato, SCRUM e XP. 3.1.3 Approccio standard o adattivo? Evidenziamo adesso come ogni metodo si comporta di fronte a situazioni fra loro diverse, se adotta una soluzione “universale” oppure cerca di adattarsi alle diverse situazioni studiando il miglior modo per sfruttare i punti di forza e ridurre i problemi. o SCRUM si può definire senz’altro una metodologia che cerca di adattarsi a ogni situazione. Basti pensare alle continue riunioni organizzate per controllare se il lavoro stia perseguendo l’obiettivo proposto (Sprint Goal). Durante il Daily Scrum, ad esempio, una delle attività principali è controllare che il lavoro svolto sia in linea con quanto deciso. Un’ulteriore osservazione che porta a definire SCRUM una metodologia adattiva si può fare riguardo lo Sprint Retrospective: durante questa riunione il team cerca di analizzare criticamente il proprio operato non solo in termini di risultati ma anche di approccio, al fine di adattare il proprio atteggiamento ai problemi che emergono per risolverli con semplicità e, magari, anche in modo divertente e motivante [cfr. par. 2.1]. 34 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software o XP è una metodologia nata dall’unione di tecniche che in passato hanno contribuito in maniera incisiva alla buona riuscita di determinati progetti. Per questa sua natura si presta molto bene ad adattarsi a ogni situazione grazie all’idea che tecniche diverse usate insieme possano coprire i difetti l’una dell’altra. Se a ciò, poi, si uniscono persone che condividono un obiettivo e possono mettere in campo conoscenze diverse derivanti dalle più disparate esperienze, si può facilmente capire come XP sia effettivamente una metodologia adattiva [cfr. 2.3.3]. o Osservando la famiglia Crystal, a primo impatto si nota come questa suggerisca diverse metodologie secondo l’entità del progetto. Verrebbe, quindi, da concludere che anche Crystal sia una metodologia orientata alla flessibilità. Dobbiamo, però, fare attenzione: Crystal non permette di adattare effettivamente il processo produttivo al caso specifico, ma si occupa solo di scegliere uno dei possibili processi in base all’entità del progetto. Una volta compresa l’entità del progetto e, quindi, scelto il “colore” di Crystal da utilizzare, il processo da seguire è già definito. All’interno di ogni processo, poi, Crystal lascia al team la possibilità di scegliere uno standard (che può anche essere orientato all’adattamento) ma non propone effettivamente soluzioni adattive [cfr. par. 2.3 – 2.3.3]. 3.1.4 Quanta innovazione? Cerchiamo ora di individuare le innovazioni introdotte dai tre metodi analizzati provando a fornire un quadro generale e semplificato di ciò che è emerso dalle considerazioni fatte. 35 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software o Per quanto riguarda SCRUM, abbiamo visto come questo metodo introduca un modo nuovo di intendere il processo produttivo e la specifica dei requisiti. Le pratiche introdotte sono innovative nella loro struttura in quanto, a differenza dei metodi classici in cui ha luogo un’unica riunione in cui si definiscono i requisiti una volta per tutte, SCRUM prescrive incontri periodici, tra i membri del team e con il cliente, al fine di raggiungere l’obiettivo desiderato, anche se questo cambia in itinere. L’atteggiamento proposto da questa metodologia ha il chiaro intento di spingere le persone a condividere un obiettivo e a portarlo a termine in modo sereno e, perché no?, anche divertente. o Le considerazioni fatte su XP, invece, portano a inquadrarlo come un metodo che ha raggruppato molte pratiche in uso già nei metodi classici al fine di sfruttare le proprietà utili di ognuno. Non propone, dunque, grandi innovazioni, né dal punto di vista tecnico, né da quello organizzativo, se si escludono i principi che caratterizzano tutti i metodi agili (es. consegna incrementale, coinvolgimento del cliente, etc.). È una metodologia che cerca di usare al meglio ciò che già esiste imponendo di preferire le soluzioni più semplici ed efficaci: la variabilità dei requisiti potrebbe rendere vano lo sforzo impiegato a produrre qualcosa che forse non servirà mai. o La famiglia di metodologie Crystal prende in esame i principi dei metodi agili e cerca di riportarli a ogni tipo di progetto, tenendo conto del fatto che non tutti i progetti possono essere affrontati allo 36 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software stesso modo. L’innovazione introdotta da questo metodo è frutto di esperienza maturata osservando progetti di natura ed entità diverse. Cercare di utilizzare gli stessi principi in ogni progetto, senza considerare le proprietà intrinseche di ognuno, ha portato fallimenti e necessità di cambiamento. In base al numero di persone coinvolte e alla criticità, avviene una classificazione che incide sulla scelta dell’approccio. Ogni approccio è indicato da un colore cui corrisponde un processo definito. La vera innovazione, dunque, è data dall’intento di fornire una guida che aiuti a riconoscere e classificare i progetti. Per ogni colore, Crystal si occupa di fornire linee guida che aiutino la realizzazione. Crystal lascia i compiti più specifici agli altri metodi e si occupa di gettare le basi necessarie per comprendere a fondo situazioni di qualsiasi entità. Tabella riassuntiva Supporto alla gestione del processo Guida concreta vs. principi astratti Rigido vs. adattivo Innovazione introdotta SCRUM Presente Principi astratti Adattivo Incontri periodici XP Assente Guida concreta Adattivo Semplicità CRYSTAL Assente — Rigido Classificazione progetti 3.2 Conclusioni A conclusione dell’analisi condotta, possiamo affermare che ognuno dei metodi agili considerati per diversi aspetti introduce innovazioni atte ad assistere il processo di specifica dei requisiti e, più in generale, l’intero 37 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software processo di sviluppo software. È interessante osservare come ogni metodologia vada a incidere su diversi aspetti del processo secondo le diverse esperienze degli ideatori. Abbiamo più volte rimarcato come XP sia stato concepito per sfruttare al meglio le tecniche più utili dei metodi tradizionali e come abbia cercato di rendere il processo più agile imponendo la semplicità come principio cardine di sviluppo. Abbiamo visto come SCRUM schematizzi meticolosamente ogni fase del processo di sviluppo introducendo incontri periodici atti a favorire la comunicazione tra le persone. Abbiamo notato come Crystal sia riuscito a trovare il modo di applicare i principi agili a qualsiasi progetto senza trascurare l’entità di ognuno e abbia concepito una guida per migliorare la produttività in ogni ambito e sotto diversi punti di vista. Ciò che ancora non abbiamo evidenziato è la grande passione che unisce tutte le metodologie agili e i loro creatori: una passione profonda per il proprio lavoro, talmente forte da concepirlo come un divertimento e come un’occasione di crescita per ogni individuo. “Dobbiamo essere una grande famiglia, in grado di comunicare in maniera efficace e di provare ogni giorno la stessa eccitazione lavorando insieme per raggiungere il nostro obiettivo”: ecco ciò che, in primis, vogliono comunicare gli ideatori di queste metodologie. 38 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software Bibliografia [1] Beck Kent, 1999, “Extreme Programming Explained: Embrace Change” – 2nd edition: 2004 [2] Cockburn Alistair, 2001, “Agile Software Development” [3] Cockburn Alistair, 2004, “Crystal Clear: A Human-Powered Methodology for Small Teams: A Human-Powered Methodology for Small Teams” [4] Cohn Mike, 2005, “Agile Estimating and Planning” [5] Cohn Mike, 2009, “Succeeding with Agile: Software Development Using Scrum” [6] Highsmith James A., 2002, “Agile Software Development Ecosystems” [7] Highsmith James A., 2009, “Agile Project Management: Creating Innovative Products” [8] Jeffries Ron, 2004, “Extreme Programming Adventures in C#” [9] Martin Robert C., 2002, “Agile Software Development, Principles, Patterns, and Practices” [10] Martin Robert C., 2006, “Agile Principles, Patterns, and Practices in C#” [11] Martin Robert C., 2008, “Clean Code: A Handbook of Agile Software Craftsmanship” [12] Paetsch Frauke, 2003, “Requirements Engineering in Agile Software Development”, Diploma Thesis [13] Pham Andrew, 2011, “Scrum in Action” [14] Pichler Roman, 2010, “Agile Product Management with Scrum: Creating Products that Customers Love” [15] Schwaber Ken, 2004, “Agile Project Management with Scrum” [16] Sommerville Ian, 2007, “Ingegneria del Software (ottava edizione)” 39 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software Articoli scientifici [1] Abrahamssona Pekka, Warstab Juhani, Siponenb Mikko T. and Ronkainena Jussi, Proceedings of the 25th International Conference on Software Engineering (ICSE’03), “New Directions on Agile Methods: A Comparative Analysis” [2] Cao Lan, Ramesh Balasubramaniam, IEEE Software vol.25 no.1 January/February 2008, pp. 60-67, “Agile Requirements Engineering Practices: An Empirical Study” [3] Haugen Nils C., Proceedings of AGILE 2006 Conference, “An Empirical Study of Using Planning Poker for User Story Estimation” [4] Maiden Neil and Jones Sara, IEEE Software vol.27 no.3 May/June 2010, pp. 8788 “Agile Requirements - Can We Have Our Cake and Eat It Too?” [5] Maiden Neil, Gizikis Alexis and Robertson Suzanne, IEEE Software vol.21 no.5 2004, pp. 68–75, “Provoking Creativity: Imagine What Your Requirements Could Be Like” [6] Orr Ken, IEEE Software vol.21 no.3 May/June 2004, pp. 71-73, “Agile Requirements: Opportunity or Oxymoron?“ [7] Qasaimeh Malik, Mehrfard Hossein, Hamou-Lhadj Abdelwahab, Computational Intelligence for Modelling Control & Automation, 2008 International Conference, “Comparing Agile Software Processes Based on the Software Development Project Requirements” 40 Le storie utente ed altre tecniche per la specifica di requisiti negli approcci Agili per lo sviluppo software Sitografia [1] http://alistair.cockburn.us/Articles , “Articoli online di Alistar Cockburn” [2] http://www.agilealliance.org/ , “Agile alliance” [3] http://www.agilemanifesto.org/ , “Manifesto Agile” [4] http://www.scrum.org/scrumguides/ “Guida di SCRUM” 41
Documenti analoghi
Quali passi per introdurre l`Agile in azienda?
partecipino in maniera attiva alla creazione di valore, gestendo in autonomia problemi e
criticità (problem solving).
Stakeholder engagement: utenti, esperti e sponsor devono essere sempre presenti...