Modello Agile
La metodologia flessibile (Agile) aiuta a ridurre il rischio nello sviluppo del software spostando il flusso di lavoro in diversi piccoli cicli. Questi cicli sono chiamati iterazioni e in genere durano da due a tre settimane.
Un'iterazione è come un piccolo progetto software costituito da attività, ognuna delle quali migliora la funzionalità. Questi includono: elaborazione di un piano, valutazione dei requisiti, accordo su un progetto, scrittura di codice, test e creazione di documentazione tecnica.
Un'iterazione di solito non è sufficiente per una versione completa del software. Tuttavia, l'aspetto positivo di Agile è che piccole parti del progetto sono pronte per la valutazione alla fine di ogni iterazione. Ciò consente ai membri del team di modificare le priorità per ulteriori lavori senza attendere il rilascio finale.
Applicando una metodologia di sviluppo "agile", puoi vedere un risultato concreto dopo ogni iterazione. Cioè, lo sviluppatore può capire se il risultato del suo lavoro soddisfa o meno i requisiti. Questo è uno degli importanti vantaggi del modello flessibile.
Per quanto riguarda i contro, quando si utilizza Agile, a volte è difficile stimare il costo delle risorse di manodopera e il budget del progetto. Se prendiamo le opzioni per l'applicazione pratica del modello flessibile, la più famosa tra queste è Extreme Programming (XP).
XP si basa su brevi riunioni dei membri del team che si svolgono ogni giorno e riunioni regolari (una volta alla settimana o meno). Ai raduni giornalieri (daily standup) vengono solitamente discussi:
- risultati attuali del lavoro;
- un elenco di compiti che devono essere completati da ciascun membro del team;
- difficoltà incontrate e modi per risolverle.
Manifesto
Agile è un'intera direzione in fase di sviluppo, quindi le regole per lavorarci sono dichiarate in un documento speciale - Agile Manifesto. Ciò include sia le pratiche che i principi in base ai quali il team dovrebbe lavorare.
Agile Manifesto si compone di 4 idee fondamentali e 12 principi.
Idee chiave:
- la collaborazione tra sviluppatori è più importante degli strumenti;
- la versione funzionante del prodotto ha la precedenza sulla documentazione;
- la comprensione reciproca tra il team e il cliente è più importante dei termini del contratto;
- Il piano originale può sempre essere modificato se necessario.
Per quanto riguarda i 12 principi di Agile, eccoli:
- la priorità principale è la conformità del programma finito con le aspettative del cliente;
- la modifica delle condizioni è consentita in qualsiasi fase, anche nella fase finale dello sviluppo (se ciò può migliorare la qualità e la competitività del software);
- consegna regolare delle versioni funzionanti del prodotto software (ogni 14 giorni, mese o trimestre);
- la chiave del successo è l'interazione regolare tra il cliente e gli sviluppatori (preferibilmente quotidianamente);
- i progetti dovrebbero essere costruiti tra coloro che sono interessati a loro, a tali persone dovrebbero essere fornite le condizioni necessarie per il lavoro e ogni tipo di supporto;
- il modo migliore per condividere le informazioni in un team è un incontro personale;
- la versione funzionante del software è il miglior indicatore di progresso;
- tutte le parti interessate devono essere in grado di mantenere il ritmo di lavoro desiderato durante tutto il processo di sviluppo del software;
- il miglioramento tecnico e il buon design migliorano la flessibilità;
- è importante mantenerlo semplice e non creare troppo;
- i migliori risultati si ottengono da quei team che riescono ad auto-organizzarsi;
- i membri del team dovrebbero pensare regolarmente a modi per migliorare la loro efficienza modificando il flusso di lavoro.
Secondo il manifesto Agile, un buon processo di sviluppo software dipende direttamente dalle persone coinvolte in questo processo. Per fare ciò, è necessario organizzare la loro interazione nel modo più efficiente possibile, creare il team più organizzato.
Metodologie
Ci sono anche diverse metodologie nel Manifesto Agile che spiegano valori e principi:
- modellazione agile;
- Processo unificato agile;
- Metodo agile dei dati
- Sviluppo rapido di applicazioni (DSDM);
- Processo unificato essenziale;
- programmazione estrema;
- sviluppo basato sulle funzionalità;
- Diventare reale;
- ApriSU;
- Mischia.
Agile Modeling è una raccolta di principi, termini e pratiche che accelera e semplifica lo sviluppo di modelli software e documentazione.
L'obiettivo di Agile Modeling è migliorare la modellazione e la documentazione. È importante notare che ciò non include codifica, test o problemi relativi al controllo del progetto, alla distribuzione e al supporto. Tuttavia, questa metodologia include la revisione del codice.
Agile Unified Process è una metodologia che semplifica l'approssimazione (modello) da parte degli utenti. Solitamente utilizzato per sviluppare software commerciale.
Agile Data Method: diverse metodologie simili in cui le condizioni del cliente vengono raggiunte attraverso la collaborazione di diversi team.
DSDM: questo approccio differisce dagli altri in quanto, insieme agli sviluppatori, gli utenti del prodotto futuro ne prendono parte attiva.
Lo sviluppo guidato dalle funzionalità è una metodologia di sviluppo che ha un limite di tempo: "ogni funzionalità deve essere implementata per non più di due settimane".
Vale la pena considerare che se il caso d'uso è piccolo, può essere considerato una caratteristica. Se è significativo, deve essere suddiviso in diverse funzioni.
Getting Real è una metodologia iterativa in cui l'interfaccia del programma viene sviluppata per prima e solo successivamente viene sviluppata la sua funzionalità.
OpenUP è un metodo di sviluppo che divide il ciclo del progetto in quattro fasi: inizio, perfezionamento, costruzione e consegna.
Secondo i principi di Agile, indipendentemente dalla durata del lavoro, è necessario fornire a tutti gli stakeholder e ai membri del team un modo per conoscersi e prendere decisioni. Grazie a ciò è possibile controllare efficacemente la situazione e valutare nel tempo i risultati intermedi. Il piano di progetto definisce il ciclo di vita e il risultato finale deve essere considerato un rilascio stabile dell'applicazione.
Per quanto riguarda Scrum, regola le regole per la gestione del processo di sviluppo e consente di applicare le pratiche di codifica esistenti con la possibilità di adeguare le condizioni o apportare modifiche. L'utilizzo di questa metodologia consente di vedere ed eliminare le deviazioni dal risultato atteso nelle prime fasi di sviluppo.
Diamo un'occhiata a questo in modo un po' più dettagliato...