agile vs waterfall which is best methodology
come aprire i file bin di windows 10
Scopri tutto sulle metodologie Agile e Waterfall, sui diversi tipi di modelli SDLC e sulle differenze tra i modelli di sviluppo Waterfall e Agile e sui test:
Leggi questo articolo informativo per decidere qual è il modello più adatto al tuo progetto in base ai pro e ai contro di ciascuno.
Il modello a cascata e il modello agile sono i tipi di ciclo di vita dello sviluppo software (SDLC). Questi sono i processi utilizzati dall'industria del software per progettare, sviluppare e testare il software.
Seguendo l'SDLC, possiamo soddisfare le aspettative dei clienti, completare il progetto entro determinati tempi e stimare il costo.
Cosa imparerai:
- Flussi di lavoro a cascata e modello agile
- Modello a cascata
- Flusso di lavoro agile
- Differenza tra i modelli Agile vs Waterfall
- Differenze tra test Agile e test a cascata
- Conclusione
Flussi di lavoro a cascata e modello agile
In inglese semplice, Agile significa 'in grado di muoversi rapidamente e facilmente' e quindi questo è ciò che significa quando si tratta di Metodologia di sviluppo agile .
Agile è un metodo di gestione del progetto che è rappresentato dalla suddivisione dei compiti in segmenti di lavoro più brevi con frequenti revisioni e adattamenti dei piani.
Allo stesso modo, la parola cascata denota un flusso d'acqua verticale o il flusso d'acqua attraverso una serie di gocce ripide. Il modello a cascata è un modello sequenziale lineare in cui i progressi fluiscono principalmente in una direzione verso il basso attraverso le fasi di raccolta dei requisiti, analisi, progettazione, sviluppo, test, distribuzione e manutenzione.
Questa stessa illustrazione si applica al concetto di gestione del progetto quando si tratta di modello a cascata . È un metodo di gestione del progetto che è rappresentato da fasi seriali e un piano di lavoro fisso.
(Immagine fonte )
Prima di discutere il flusso di lavoro Waterfall e il flusso di lavoro Agile, diamo uno sguardo alla definizione del ciclo di vita dello sviluppo software e ai suoi requisiti.
Qual è il ciclo di vita dello sviluppo del software?
È una procedura passo passo per sviluppare il software in modo sistematico. Per questo, selezioniamo tra diversi tipi di cicli di vita di sviluppo software in diverse aziende. In base al requisito, viene selezionato un ciclo di vita appropriato.
Il modello a cascata è uno dei tipi di SDLC ed è un vecchio processo di sviluppo del software. Il modello agile è l'ultimo e avanzato. Agile è derivato dal ciclo di vita dello sviluppo di altri software.
Altri SDLC includono il modello a spirale, il modello V e V, il modello prototipo. In base alla necessità e alla compatibilità dei requisiti aziendali, sceglieremo il modello migliore per sviluppare l'applicazione software.
(Immagine fonte )
Perché è richiesto il ciclo di vita dello sviluppo del software?
SDLC è necessario per gestire il progetto in modo strutturato. Fornisce un certo livello di controllo e definisce i ruoli e le responsabilità dei membri del team. Fornisce l'ambito e la scadenza per ciascuna fase dell'SDLC.
È un po 'come una guida per l'utente per i membri del team per seguire tutti i passaggi per sviluppare e fornire il prodotto di qualità. Aiuta la gestione del team a definire e valutare gli obiettivi e i requisiti. Aiuta anche nella pianificazione e nella stima delle attività. Crea la linea di comunicazione tra il cliente e il team di sviluppo e crea i ruoli e le responsabilità per ciascuno di essi.
Tipi di ciclo di vita dello sviluppo del software
Vediamo una breve introduzione ai tipi di SDLC utilizzati nel processo di sviluppo del software.
# 1) Modello a cascata
Come discusso in precedenza, il modello a cascata è il primo ciclo di vita dello sviluppo software introdotto. È il modo sequenziale di sviluppare software. Pochissime aziende seguono questo approccio. Quando il progetto è molto semplice e non ci sono ulteriori modifiche ai requisiti, seguiremo questo approccio.
Discuteremo di più sul modello a cascata in questo tutorial.
# 2) Modello Agile
Un flusso di lavoro agile è un approccio avanzato al processo di sviluppo del software, utilizzato nella maggior parte delle aziende. Agile è definito come il ciclo di vita dello sviluppo software basato sullo sprint.
Nelle prossime sezioni, potremo discutere di più sul flusso di lavoro Agile.
# 3) Modello a spirale
È il modo di costruire e testare il software suddividendo e aggiungendo i requisiti in ordine incrementale. Questo modello aiuterà nei progetti in cui i requisiti continuano a cambiare. Questo modello a spirale è la combinazione del processo di sviluppo iterativo e del processo di sviluppo lineare sequenziale.
Questo approccio ci consentirà di rilasciare incrementali del prodotto. Qui non è necessario attendere il completamento di tutti i moduli del software per il rilascio.
Il modello sequenziale lineare significa che è un approccio sequenziale sistematico dello sviluppo del software che inizia a livello di sistema e progredisce attraverso analisi, progettazione, codifica, test e supporto.
Il modello iterativo significa, si tratta di una particolare implementazione di un ciclo di vita di sviluppo software che si concentra su un'implementazione iniziale semplificata, che poi acquisisce progressivamente maggiore complessità e viene impostata una funzionalità più ampia fino al completamento del sistema finale.
# 4) Modello prototipo
Questo modello include il processo di creazione e test del software in modo tale che, prima sviluppiamo il modello fittizio e se è fattibile e raggiunge tutti i requisiti aziendali, implementiamo il modello di lavoro effettivo.
Qui prima abbiamo costruito e testato il prototipo, quindi abbiamo costruito il modello effettivo con le specifiche esatte del sistema. La prototipazione software è l'attività di creazione di prototipi di applicazioni software.
# 5) Modello V e V.
È il modello di verifica e validazione. Qui, durante lo sviluppo del software, abbiamo utilizzato per verificare e convalidare tutto in ogni fase dell'SDLC. Il modello a V è considerato un'estensione del modello a cascata.
Quindi, tutti i tipi di SDLC hanno le loro caratteristiche e caratteristiche. In base ai requisiti del progetto, alle esigenze, alla fattibilità, alla durata, possiamo scegliere il particolare ciclo di vita di sviluppo del software per sviluppare l'applicazione software.
Ora discuteremo in dettaglio i cicli di vita di sviluppo del software Waterfall e Agile.
Modello a cascata
Nel modello Waterfall, ogni fase dovrebbe essere completata prima di iniziare un'altra fase. Non possiamo operare più fasi contemporaneamente. Questo è stato introdotto nel 1970 da Winston Royce. Il modello Waterfall è suddiviso in diverse fasi.
(Immagine fonte )
Il modello a cascata comprende le seguenti fasi:
- Raccolta dei requisiti
- Studio di fattibilità
- Design
- Codifica
- Test
- Manutenzione
# 1) Analisi dei requisiti
Qui, l'analista aziendale otterrà la specifica dei requisiti. Il requisito sarà nel formato CRS (Customer Requirement Specification). CRS spiega come dovrebbe andare il flusso aziendale e come dovrebbe funzionare l'applicazione secondo il requisito specificato. Gli analisti aziendali convertiranno CRS in SRS (Software Requirement Specification).
Quindi l'analista aziendale discute in dettaglio le specifiche dei requisiti con il team di sviluppo e test e comprende i requisiti dal punto di vista dello sviluppo e del test. Questa è la fase per discutere e analizzare i requisiti per costruire il software applicativo in base ai requisiti effettivi.
Qui, tutto dovrebbe essere documentato nel documento sulle specifiche dei requisiti software. Nel modello a cascata, il deliverable / risultato / output di ciascuna fase è la sorgente di input per le fasi successive.
In un settore basato sui servizi, un analista aziendale può portare il requisito.
In un'azienda basata sul prodotto, l'analista del prodotto porta il requisito.
# 2) Studio di fattibilità
Il team di gestione farà lo studio di fattibilità. Significa, il team analizzerà parametri come, se questo requisito / applicazione può essere sviluppato nel nostro ambiente o no, la risorsa disponibile è sufficiente o meno, il costo e molti altri fattori sono fattibili o meno e per verificare se siamo in grado di coprire tutti i flussi di affari o no.
In questo incontro / analisi, il Project Manager, l'Analista Aziendale, il Finance Manager, le Risorse Umane, il Project Lead faranno parte della discussione.
# 3) Progettazione del sistema
Qui, il Project Architect preparerà il design del sistema. Specificherà l'hardware, i requisiti di sistema e progetterà l'architettura dell'applicazione. Ci sono 2 parti nella progettazione del sistema: progettazione di alto livello e progettazione di basso livello. Nella progettazione di alto livello, progettiamo i diversi blocchi dell'applicazione. Nella progettazione di basso livello, scriviamo lo pseudo-codice.
# 4) Codifica
Qui, gli sviluppatori iniziano la codifica esatta di ciascuna funzione e interfaccia utente dell'applicazione utilizzando metodi e logiche differenti. Possono utilizzare qualsiasi linguaggio di programmazione come Java, Python o qualsiasi altro linguaggio per creare l'applicazione.
Una volta completata la codifica per ciascuna funzionalità del particolare modulo dell'applicazione, lo sviluppatore eseguirà lo unit test. Se il codice funziona correttamente, lo sviluppatore distribuirà il codice nell'ambiente di test e darà la build al tester per il test.
# 5) Test
Da qui inizia l'attività di test. Fino a questa fase, non avremo alcun compito nel modello Waterfall. In questa fase, eseguiamo tutti i tipi di test. Questi tipi di test includono test del fumo, test funzionali, test di integrazione, test di sistema, test di accettazione, test di regressione, test ad hoc, test esplorativi e test cross-browser.
Inizieremo a testare l'applicazione una volta ottenuta la build. Innanzitutto, inizieremo con il test del fumo. Se non vengono osservati problemi di blocco, continueremo con i test dettagliati.
Nei test funzionali, inizieremo a testare ogni componente dell'applicazione. Qui controlliamo i diversi componenti come campi di testo, pulsanti, collegamenti, pulsanti di opzione, pulsanti di caricamento, menu a discesa e collegamenti di navigazione.
Successivamente, controlleremo l'interfaccia utente, l'aspetto grafico e il test di input positivo e negativo.
Quindi inizieremo con il test di integrazione. Qui controlleremo l'integrazione dei dati. Verificheremo se gli stessi dati si riflettono in diverse rispettive pagine o meno, verificheremo la navigazione del collegamento email alle rispettive pagine. Controlleremo l'integrazione dei dati con applicazioni di terze parti e controlleremo le modifiche al database nell'applicazione.
Successivamente, faremo il test del sistema. Controlleremo l'intera applicazione come una singola unità. Verificheremo la funzionalità, l'integrazione delle pagine, le convalide dei campi, i messaggi di errore, i messaggi di conferma e molti altri.
Durante il test dell'applicazione, registreremo i problemi nello strumento di tracciamento dei bug. Daremo priorità al bug in base ai problemi. Dopo aver creato il bug, lo assegneremo al rispettivo sviluppatore per risolvere il problema. Verificheremo i bug una volta che gli sviluppatori li avranno assegnati ai tester dopo averli risolti. Se funziona correttamente, il tester chiuderà il bug, altrimenti i tester lo assegneranno allo sviluppatore per risolvere il problema. Ecco come procede il ciclo di vita dei bug.
Quindi si passa al test di accettazione. Qui testiamo l'applicazione in diversi ambienti come lo staging e l'UAT (User Acceptance Testing). Questa è la fase più importante per testare completamente l'applicazione prima di spostare il codice nell'ambiente di produzione.
Una volta che il test di accettazione è stato eseguito senza errori, il client pianificherà la distribuzione del codice sul server di produzione e pianificherà il rilascio.
# 6) Manutenzione
Una volta distribuito il codice dell'applicazione sul server di produzione, dovremmo fornire il supporto / manutenzione all'applicazione client. Questa fase di manutenzione consiste nell'osservare e risolvere i problemi di produzione in tempo reale, per controllare i problemi di memoria, per migliorare l'applicazione e per sviluppare le nuove modifiche ai requisiti.
In quali casi possiamo optare per il modello a cascata?
- Quando non ci sono modifiche richieste.
- Quando il progetto è piccolo e semplice.
- Quando non c'è complessità nella tecnologia.
- Quando ci sono più risorse disponibili.
Pro della cascata:
- Avanti indietro la pianificazione e l'implementazione sono facili .
- Il modello a cascata è semplice da usare e di facile comprensione. Non richiede alcuna formazione specifica per project manager o dipendenti. Ha un file curva di apprendimento facile .
- Essendo di natura rigida, lo è facile da gestire il ciclo delle cascate. Ogni fase ha risultati fissi e un processo di revisione.
- Meno complessità poiché le fasi non si sovrappongono. Le fasi si susseguono una dopo l'altra. Utilizza una struttura chiara rispetto alle altre metodologie di sviluppo software. Il progetto passa attraverso fasi sequenziali fisse a partire dalla raccolta dei requisiti e infine arriva alla manutenzione.
- A causa dello sviluppo graduale, la disciplina è applicata e le tempistiche possono essere mantenute facilmente.
- Lavori bene per piccoli progetti dove abbiamo requisiti fissi e chiari.
- Processi e risultati lo sono Ben documentato .
- Organizzare le attività è facile.
- È facile misurare i progressi poiché l'inizio e la fine di ciascuna fase sono predeterminati.
- Non vi è quasi alcun cambiamento nei requisiti in tutto il progetto, da cui il i compiti rimangono stabili per gli sviluppatori. Inoltre, è facile per chiunque nuovo sviluppatore per imparare rapidamente e inizia il lavoro.
- Ci sono nessuna sorpresa finanziaria . Una volta fissati i requisiti, è possibile calcolare il costo finale prima di iniziare lo sviluppo.
- Si rivolge a modello di finanziamento sequenziale .
- Suo design dettagliato rende il risultato finale atteso molto chiaro a tutti.
- La specifica dei requisiti funzionali documentata nella fase di raccolta dei requisiti fornisce sufficienti dettagli ai tester per progettare scenari di test e casi di test. Quindi il il processo di test diventa facile nel modello a cascata.
Contro della cascata:
- Poiché tutti i requisiti devono essere chiaramente noti prima di iniziare lo sviluppo, esso ritarda il progetto .
- Richiede ricerche approfondite nelle esigenze dell'utente.
- Nella fase iniziale del progetto, è difficile per un cliente definire e concettualizzare chiaramente i propri requisiti sotto forma di specifiche funzionali. Quindi, c'è un'alta possibilità per loro di cambiare idea dopo aver visto il prodotto finale. Questo cambiamento può verificarsi anche a causa di un piano aziendale o dell'influenza del mercato. La bassa flessibilità in questo modello lo rende difficile accogliere tali cambiamenti , soprattutto quando il prodotto deve essere riprogettato in larga misura.
- Nessun modello funzionante viene prodotto fino al dopo fase durante il ciclo di vita della cascata.
- Tempi di consegna lenti . Il cliente non è in grado di vedere il prodotto finché non è completamente completato.
- Il cliente non ha la possibilità di acquisire familiarità con il sistema in anticipo. Il modello a cascata è più di un processo interno e mantiene l'utente finale escluso .
- Il il cliente non viene informato bene sulla salute del progetto.
- Le scadenze possono essere perse se non vengono mantenute una gestione rigorosa e un monitoraggio regolare.
- C'è non c'è spazio per i cambiamenti anche se è visibile durante lo sviluppo, poiché il prodotto non soddisferà le esigenze del mercato.
- Ritarda il test fino a dopo il completamento. Inoltre, le revisioni di grandi dimensioni sono molto costose a questo punto.
- Alto rischio e incertezza sono coinvolti nel modello a cascata in quanto c'è troppo spazio perché i problemi non vengano notati fino a quando il progetto non si avvicina al completamento.
- Non è un modello adatto per progetti lunghi, complessi e in corso.
- È difficile misurare i progressi all'interno di ogni fase.
- I tester resteranno inattivi durante le numerose fasi del progetto.
Flusso di lavoro agile
Ora vedremo il ciclo di vita dello sviluppo del software Agile. Agile è il processo di esecuzione del lavoro in modo rapido e semplice con maggiore precisione.
Questo modello è correlato a un metodo di gestione del progetto, utilizzato soprattutto per lo sviluppo del software. È caratterizzato dalla suddivisione dei compiti in brevi fasi di lavoro e frequenti rivalutazioni e adattamenti dei piani. Ogni membro del team dovrebbe avere l'idea dei flussi aziendali di base.
(Immagine fonte )
In Agile, sviluppatori e tester lavorano parallelamente per sviluppare e testare il software applicativo. Lo sviluppo viene eseguito in modalità iterativa. Ogni user story di iterazione richiede analisi, progettazione, codifica e test.
Testiamo il requisito in modo dettagliato per verificare se il requisito è privo di errori e implementabile o meno. Passa alla prossima iterazione dopo la fine di ogni iterazione e seguiamo lo stesso processo per i nuovi / altri requisiti.
Pertanto, questo processo di sviluppo e test del blocco di software viene eseguito in un breve periodo di tempo con maggiore precisione e flessibilità. Quindi più industrie seguono e adottano questo processo.
Innanzitutto, il proprietario del prodotto aggiungerà tutti i requisiti al backlog del prodotto. Il backlog del prodotto contiene tutte le storie degli utenti. Diciamo che da 100 a 150 storie di utenti sono correlate al progetto completo. Ora aggiungi le particolari storie degli utenti allo sprint backlog che dobbiamo implementare. Quindi, tutti gli sviluppatori, QA, BA lavoreranno sugli elementi dello sprint. Ecco come funziona il flusso Agile.
Terminologie chiave utilizzate in Agile
Qual è lo sprint backlog?
test di carico vs test delle prestazioni vs stress test
È l'elenco delle storie degli utenti che dobbiamo implementare nell'iterazione o nello sprint corrente.
Per esempio, ci sono da 20 a 30 storie di utenti nello sprint backlog. Quindi queste sono le storie degli utenti che dobbiamo implementare nello sprint corrente.
(Immagine fonte )
Cos'è uno Sprint?
Lo sprint è la piccola durata in cui dobbiamo implementare le user story selezionate entro una determinata durata. La durata dello sprint sarà di circa 2 o 3 settimane. La sua durata varia da azienda ad azienda.
In questa durata dello sprint, il team deve analizzare il requisito, progettare i requisiti, eseguire codifica, test, risoluzione del problema, riesame, test di regressione, demo e molte altre attività.
Daily Standup Scrum meeting
Analista aziendale, sviluppatore, tester, project manager fanno parte delle riunioni quotidiane di stand up scrum. Viene fatto quotidianamente. Non dovrebbe durare più di 15-30 minuti.
Qui tutti i membri del team condivideranno lo stato del lavoro quotidiano. Le cose principali di cui discutiamo qui sono: quali sono le cose completate ieri, il piano per il lavoro di oggi e le eventuali sfide o dipendenze che devono affrontare nel progetto.
Se un membro del team affronta sfide o ostacoli durante il progetto, la persona interessata lavorerà su di esso per portarlo a termine.
Grafico Burndown
È una rappresentazione grafica pittorica del tempo e del lavoro. L'asse x rappresenta il lavoro rimanente, l'asse y rappresenta il tempo di sprint rimanente. Il team deve creare le attività di lavoro relative al tempo a disposizione nel particolare sprint. Il team brucerà quotidianamente le ore di attività in base al lavoro svolto e completato.
(Immagine fonte )
Grafico Kanban
È uno strumento / grafico di gestione del progetto. In questo modo possiamo gestire i compiti dell'intero progetto. Possiamo controllare lo stato di avanzamento del progetto e lo stato di lavoro delle persone. Mostra la rappresentazione digitale pittorica di elementi di avanzamento, elementi in sospeso, elementi finiti.
(Immagine fonte )
esiste una versione gratuita di quickbooks
Pianificazione dell'attività di poker
È un gioco tra i membri del team sprint per stimare le storie degli utenti. Qui l'intera squadra giocherà l'attività di poker. Ogni membro del team fornisce la stima in base al punto della storia dell'utente. Sulla base dei voti stimati a maggioranza, il team deciderà e assegnerà la fascia oraria.
Per esempio , un membro del team di user story fornirà una stima come 3, 5, 8, 3, 1, 3. Quindi il team sceglierà 3 come stima. La scheda attività del poker contiene 0, 1, 3, 5, 8, 13, 20, 100, pausa, dubbi? carte. Sulla base di questo i membri del team suggeriranno qualsiasi scheda di stima. In questo modo, stimeremo tutte le user story relative a un particolare sprint.
(Immagine fonte )
- Il numero di poker 0 rappresenta: nessuna attività in quell'oggetto / storia utente
- 1, 3 numeri rappresentano: il compito è minore
- 5, 8 numeri rappresentano: compiti di livello medio
- 13, 20 numero rappresenta: compiti di grande livello
- Il numero 100 rappresenta: compiti molto grandi
- Infinity rappresenta: L'attività è enorme, è necessario suddividerla in più attività e storie utente
- La pausa rappresenta: Ho bisogno di una pausa
- ? Rappresenta: Dubbi
Maestro di mischia
È la persona che aiuta il team a seguire il processo agile e soddisfare i requisiti del progetto. Condurrà la riunione ogni volta che sarà necessario e aiuterà a discutere le necessità del progetto.
Scrum master funge da ponte per tutti i membri del team per risolvere le sfide e le dipendenze che si incontrano nel progetto. Traccerà lo stato di avanzamento del progetto riguardo a ogni sprint.
È coinvolto nella riunione in piedi, nella riunione retrospettiva, nell'ispezione, nella revisione, nella dimostrazione. È lui che conduce le riunioni quotidiane in piedi e tiene aggiornati i membri del team.
Proprietario del prodotto
È la persona che guida e monitora il prodotto / progetto dal punto di vista del business. Continua a guardare come se il prodotto fosse sviluppato o meno secondo i requisiti aziendali. È lui che dà la priorità alle storie degli utenti e ha spostato i requisiti dal backlog del prodotto allo sprint backlog. Stimerà le scadenze del progetto.
Guarda sempre il prodotto dal punto di vista dell'utente. Il proprietario del prodotto ha una conoscenza completa di come dovrebbe funzionare l'applicazione.
Storia dell'utente
È un blocco di requisiti. Contiene la serie di casi d'uso / requisiti relativi allo stesso modulo. Qui definiamo come dovrebbe funzionare ogni componente di un'applicazione e come dovrebbe apparire l'interfaccia utente. L'ambito di ogni componente è definito nella User story.
Compiti
I membri del team creeranno l'attività per la user story che è loro assegnata. Devono creare l'attività in base alle diverse attività come attività di sviluppo, attività di test, attività di analisi della storia dell'utente. La durata dell'attività dovrebbe dipendere dai punti della storia dell'utente.
In qualità di tester, creeremo le attività per l'analisi della storia dell'utente, la preparazione del caso di test, l'esecuzione, i test di regressione e molto altro.
Gestione degli arretrati
Questa parte riguarda la gestione degli elementi del backlog. Le attività che svolgiamo qui sono l'assegnazione della priorità agli elementi del backlog, la suddivisione in elementi più piccoli, la creazione dell'attività e l'aggiornamento dei criteri di accettazione.
Iterazione
L'iterazione è lo sviluppo e il test di alcuni moduli / parti dell'applicazione software. Ogni iterazione consiste nell'analisi del prodotto, nella progettazione del prodotto, nello sviluppo del prodotto, nel test del prodotto e nella demo del prodotto.
Fattori chiave per adottare una metodologia agile
- Osservazione: Rivedi regolarmente il lavoro e il prodotto e pianifica le attività di conseguenza. Quindi il processo di sviluppo del prodotto e la qualità del prodotto saranno buoni.
- Modifiche di benvenuto: Le modifiche vengono gestite molto facilmente. Non influisce molto sul prodotto perché i moduli del software vengono sviluppati separatamente e integrati successivamente. Quindi, non ci saranno rilavorazioni se il requisito è stato modificato in futuro.
- Lasso di tempo: Ci viene fornito il lasso di tempo per ciascuna unità dell'applicazione. Quindi la stima sarà accurata rispetto alle stime dei tempi di progetto.
- Soddisfazione del cliente: La soddisfazione del cliente è più perché interagiamo con il cliente e gli azionisti durante tutto il progetto e daremo una demo a ogni livello di sviluppo del prodotto. In questo modo, otteniamo regolarmente il feedback del cliente / cliente sui flussi aziendali e sull'avanzamento del lavoro. Pertanto il lavoro e lo sviluppo dell'applicazione vengono eseguiti di conseguenza.
Tipi di metodologie agili
- Metodologia Agile Scrum
- Sviluppo software snello
- Kanban
- Extreme Programming (XP)
- Cristallo
- Metodo di sviluppo dei sistemi dinamici (DSDM)
- Feature Driven Development (FDD)
Pro Agile:
- Uno dei maggiori vantaggi del modello agile è il suo grande adattabilità . Adattabilità significa 'rispondere al cambiamento'. Agile è molto flessibile nell'affrontare i cambiamenti nelle esigenze e nelle priorità dei clienti.
- Permette di perfezionare costantemente e ridefinire la priorità del portafoglio prodotti complessivo senza influire sull'iterazione corrente in cui il team si concentra sulla consegna dell'MVP. Le modifiche possono essere pianificate per la successiva iterazione, offrendo così l'opportunità di apportare le modifiche solo entro poche settimane.
- La metodologia Agile offre un ottimo grado di coinvolgimento degli stakeholder . Il cliente e il team di progetto si incontrano prima, durante e dopo ogni sprint. Poiché il cliente è costantemente coinvolto durante tutto il progetto, ci sono più opportunità per il team di comprendere chiaramente la visione del cliente.
- Il software funzionante viene consegnato presto e frequentemente. Questo aumenta il fiducia degli stakeholder nella squadra e incoraggia la squadra a resta fortemente impegnato al progetto.
- Questo modello dà trasparenza . Sia gli stakeholder che il team sanno bene cosa sta succedendo. Il cliente può vedere il lavoro in corso.
- Consentono sprint a programma fisso da una a quattro settimane consegna anticipata e prevedibile . Le nuove funzionalità vengono rilasciate rapidamente e frequentemente in modo time-boxed.
- Agile è incentrato sul cliente . Non si limita a fornire la funzionalità, ma si concentra anche sulla fornitura di funzionalità che hanno un certo valore per l'utente. Ogni user story ha un criterio di accettazione incentrato sul business.
- Prezioso opinione del cliente è guadagnato presto nel progetto e le modifiche al prodotto possono essere apportate secondo necessità.
- L'attenzione si concentra sul valore aziendale . Fornisce innanzitutto ciò che è più importante per il cliente.
- Migliora la qualità dei risultati finali . A differenza della cascata, i test vengono eseguiti continuamente e frequentemente in un progetto Agile e questo, a sua volta, aiuta a rilevare e risolvere i problemi in anticipo.
- Agile supporta l'approccio TDD (Test Driven Development) che fornisce tempo sufficiente per creare unit test per le funzionalità che verranno rilasciate tramite MVP.
- Inoltre, producendo build frequenti , anche eventuali disallineamenti con i requisiti del cliente possono essere rilevati e risolti in anticipo.
- Come otteniamo feedback immediato degli utenti dopo ogni versione MVP, il il rischio di fallimento del progetto è basso, quando lavori in modo Agile.
- Agile promuove il lavoro di squadra . C'è una grande collaborazione, interazione, armonia ed entusiasmo tra i membri del team Agile.
- Il costo e le stime del programma di ogni sprint vengono comunicati al cliente prima dell'inizio dello sprint. Questo migliora il processo decisionale poiché l'utente può comprendere il costo di ciascuna funzionalità e stabilire le priorità di conseguenza.
- In un progetto agile, c'è spazio per miglioramento continuo . Le lezioni apprese dagli sprint precedenti possono essere applicate negli sprint successivi.
- Si concentra sul compito particolare in ogni fase del progetto.
Contro Agile:
- Si è spesso visto che i team Agile hanno un file tendenza a trascurare la documentazione . Questo perché il manifesto Agile si concentra più sul software funzionante che sulla documentazione completa. Tuttavia, i team dovrebbero mantenere il giusto equilibrio tra il codice e la documentazione.
- Poiché richiede un alto grado di coinvolgimento del cliente, può farlo a volte essere problematico per i clienti che non hanno molto tempo e interesse per partecipare al progetto.
- Non funziona bene se alla squadra manca impegno e dedizione. Waterfall richiede coinvolgimento, tuttavia, Agile richiede impegno.
- Se l'architettura e il design iniziali sono deboli, allora refactoring frequente è obbligatorio.
- Rispetto alla cascata, Agile lo è difficile da praticare . I membri del team devono essere esperti nei concetti Agile. Richiede molta disciplina e impegno per praticare l'Agile.
- A causa della ridefinizione delle priorità, lo è meno prevedibile di quello che verrà consegnato alla fine dello sprint.
- A causa della consegna con scadenze fisse e della frequente ridefinizione delle priorità, è possibile che alcune funzionalità non vengano consegnate nella tempistica assegnata. Questo può portare a sprint aggiuntivi e costi aggiuntivi . Questo può anche portare al problema di timeline nebulose .
- Mancanza di struttura rispetto alla cascata richiede team autodisciplinati, altamente competenti e con competenze trasversali . Senza questo, il progetto può essere davvero impegnativo.
- La disponibilità è meno di un progetto del deliverable finale .
- A volte il file gli stakeholder esterni non possono resistere a seguire l'approccio Agile . In questi casi, la formazione e l'istruzione su Agile sono richieste a un vasto pubblico.
- Tutti i membri del team devono essere coinvolti nella gestione del progetto.
- La documentazione è meno dettagliata.
Differenza tra i modelli Agile vs Waterfall
Di seguito sono elencate le differenze tra i cicli di vita Waterfall e Agile Software Development.
Cascata | Agile |
---|---|
Il processo è trattato come un unico progetto ulteriormente suddiviso in diverse fasi. | Il processo è suddiviso in più progetti e ogni progetto ha un'iterazione di diverse fasi. |
La metodologia a cascata è un modello in cui ogni fase del ciclo di vita del prodotto si verifica in una sequenza. Il progresso del progetto scorre gradualmente verso il basso attraverso queste fasi che assomigliano a una cascata. | La metodologia agile è un modello che segue un approccio iterativo. |
Questo modello crede nella massiccia consegna completa una tantum. Il prodotto viene consegnato alla fine dell'SDLC. | Questo modello crede in più piccole porzioni di consegna a intervalli di tempo definiti. Alla fine di ogni sprint viene consegnato un MVP (Minimum Viable Product). |
È un approccio tradizionale e vecchio stile. | È un approccio nuovo e moderno. |
Un solo ciclo e un unico rilascio. | Numero ripetitivo di iterazioni e più rilasci. |
Divide il ciclo di vita dello sviluppo del software in diverse fasi. | Divide il ciclo di vita dello sviluppo del software in sprint. |
![]() | ![]() |
Modello strutturato e rigido. È difficile modificare la descrizione, le specifiche e il design del progetto. | Questo modello è noto per la sua flessibilità. Possiamo apportare modifiche in qualsiasi fase del progetto in qualsiasi momento. |
Scala di pianificazione a lungo termine. | Scala di pianificazione a breve termine. |
Esiste una lunga distanza tra il cliente e lo sviluppatore. | Esiste una breve distanza tra il cliente e lo sviluppatore. |
Molto tempo tra la specifica e l'implementazione. L'analista aziendale raccoglie e prepara il requisito prima dell'inizio del progetto. | Breve tempo tra la specifica e l'implementazione. Il product owner prepara i requisiti e gli aggiornamenti per il team in ogni sprint. |
Ci vuole molto tempo per scoprire i problemi. | I problemi vengono scoperti rapidamente. |
Elevato rischio di pianificazione del progetto. | Basso rischio di pianificazione del progetto. |
Meno capacità di rispondere rapidamente ai cambiamenti. | Elevata capacità di rispondere rapidamente ai cambiamenti. |
La fase di test si verifica solo dopo il completamento della fase di sviluppo. | I test vengono generalmente eseguiti in parallelo con lo sviluppo per garantire la qualità continua. |
Il cliente viene coinvolto solo nella fase di raccolta dei requisiti e successivamente non vi è alcun coinvolgimento del cliente. Entra in scena solo al momento della consegna del prodotto. | Il cliente è coinvolto durante tutto il progetto e di tanto in tanto viene prelevato dal cliente per garantire la soddisfazione del cliente. |
Adatto a progetti che hanno requisiti chiaramente definiti e quelli che non si aspettano cambiamenti. | Adatto a progetti che devono evolversi ea quelli che comportano mutevoli esigenze. |
Processo rigorosamente sequenziale. | Il processo di sviluppo del software altamente collaborativo porta a migliori sforzi di squadra e una rapida risoluzione dei problemi. |
Mostra una mentalità di progetto. | Introduce una mentalità di prodotto e quindi è più focalizzata sul cliente. Le richieste e i cambiamenti fanno parte del processo |
Formale e gerarchico. Il project manager è il decisore. | È informale. L'intero team è responsabile del processo decisionale. |
Questo modello prevede che non ci saranno cambiamenti nei requisiti durante il progetto. | Questo modello si basa sull'adattamento e abbraccia i cambiamenti. |
Necessità di creare documenti manuali per verificare lo stato del lavoro dell'individuo e l'avanzamento del progetto. | Segue il grafico Kanban e il grafico Burn Down per verificare l'avanzamento del progetto e lo stato lavorativo dell'individuo. |
Abbiamo discusso abbastanza delle differenze tra le metodologie Agile e Waterfall e dei vantaggi e delle sfide di ciascuna. Esploriamo ora le differenze tra il test agile e il test a cascata.
Differenze tra test Agile e test a cascata
Dal punto di vista del test del software, è importante per noi avere un'idea chiara di come il test Agile sia diverso dal test Waterfall.
Test a cascata | Test agili |
---|---|
I team di test e quelli di sviluppo sono separati da un confine chiaro e tra loro esiste una comunicazione rigorosa e formale. | Il team di test e i team di sviluppo sono integrati come un unico team e tra loro c'è un flusso libero di comunicazione. |
Il test inizia dopo il completamento delle fasi di sviluppo e build. | Il test inizia contemporaneamente alla fase di sviluppo. |
La pianificazione viene eseguita solo una volta prima della fase di test. | La pianificazione viene eseguita prima dell'inizio del progetto e spesso viene eseguita durante il progetto. |
Il piano di test viene raramente rivisto durante il progetto. | Il piano di test viene rivisto dopo ogni sprint. |
È abbastanza impegnativo per il team di test proporre eventuali modifiche ai requisiti. | Il team di test partecipa attivamente alla raccolta dei requisiti e al processo di modifica. |
I casi di test vengono creati una volta per tutte le funzionalità. | I casi di test vengono creati sprint per sprint per le funzionalità che devono essere rilasciate in ogni sprint. |
Il test di accettazione viene eseguito una volta dal cliente dopo il rilascio. | Il test di accettazione può essere eseguito dopo ogni iterazione e prima della consegna da parte di un analista aziendale o del team di test. Successivamente, viene eseguito dal cliente dopo ogni rilascio. |
Documentazione dettagliata e completa dei test. | La documentazione del test viene eseguita solo quanto necessario. |
Le stime e gli incarichi dei test sono spesso responsabilità del responsabile del test. | Le stime e gli incarichi dei test sono responsabilità condivisa del team e degli ingegneri di test che sono coinvolti nella fornitura delle stime e nella scelta dei loro compiti. |
Il test di regressione viene eseguito raramente e implica l'esecuzione di tutti i casi di test. | Il test di regressione viene eseguito dopo ogni iterazione e coinvolge solo i casi di test necessari. |
Conclusione
In questo articolo, abbiamo appreso le differenze esatte tra il moderno approccio Agile e il tradizionale metodo Waterfall di sviluppo e test del software con una tabella di confronto che copre i pro ei contro di ciascun modello.
Considerando tutti i fattori elencati in questo articolo, possiamo selezionare il modello di ciclo di vita di sviluppo software corretto per sviluppare l'applicazione software. Non c'è dubbio nel dire che le metodologie Agile sono preferite rispetto al modello Waterfall. Il 90% delle aziende preferisce e segue il flusso di lavoro Agile per sviluppare l'applicazione software.
La metodologia agile va bene per tutti i tipi di progetti. Pochissime aziende seguono la metodologia a cascata. Questa metodologia è adatta solo se l'applicazione è piccola, semplice e non ci sono cambiamenti nei requisiti.
In alcuni casi, optiamo anche per altri approcci chiamati Spirale, V e V e Prototipo, in base alle esigenze.
Spero che queste informazioni ti siano utili per decidere qual è il modello migliore per il tuo progetto. Puoi anche scegliere modello ibrido che rimuove gli svantaggi di ciascun metodo - discusso qui.
Lettura consigliata
- Case Study: Come eliminare i difetti dei processi di sviluppo a cascata e Agile utilizzando un modello ibrido
- Cos'è il modello a cascata SDLC?
- Zephyr Enterprise Test Management Tool Review - Come utilizzare gli asset del modello Waterfall in Agile Tool
- VersionOne Tutorial: Guida allo strumento di gestione dei progetti agile all-in-one
- Tutorial Jira Portfolio: plug-in Agile Project Portfolio Management per JIRA (recensione)
- I 10 migliori strumenti di gestione dei progetti agili nel 2021
- Tecniche di stima agile: una stima reale in un progetto agile
- 4 passaggi verso lo sviluppo della mentalità di test agile per una transizione di successo al processo agile