Guida Agile · Agile oltre il software
Come funziona lo sviluppo software Agile: pratiche e best practice
Lo sviluppo software è il campo in cui Agile è nato. I team consegnano software funzionante in brevi iterazioni, supportati da pratiche ingegneristiche che mantengono alta la qualità mentre i requisiti cambiano.
Punti chiave
- I team software Agile consegnano software funzionante in brevi iterazioni.
- TDD, CI/CD, code review e refactoring mantengono alta la qualità in presenza di cambiamenti.
- DevOps estende Agile al rilascio e alle operations.
Il ciclo di sviluppo
- Il Product Owner ordina un backlog di user story.
- In Sprint Planning, gli sviluppatori scelgono le story e le scompongono in attività.
- Gli sviluppatori scrivono insieme codice e test automatizzati.
- Il codice viene revisionato e integrato frequentemente in un branch principale condiviso.
- La continuous integration compila e testa automaticamente ogni modifica.
- Le story completate vengono dimostrate alla Sprint Review e rilasciate, a volte molte volte al giorno.
Vedi il ciclo di vita dello sviluppo Agile per il processo complessivo.
Pratiche ingegneristiche fondamentali
| Pratica | Che cos'è | Perché è importante |
|---|---|---|
| Test-driven development (TDD) | Scrivere un test che fallisce, poi il codice che lo supera, poi fare refactoring | Meno difetti, progettazione migliore |
| Continuous integration (CI) | Integrare e testare il codice almeno una volta al giorno | Problemi di integrazione individuati presto |
| Continuous delivery (CD) | Mantenere il software sempre rilasciabile; automatizzare il deployment | Rilasci rapidi e a basso rischio |
| Pair programming | Due sviluppatori condividono un'attività | Qualità e condivisione delle conoscenze |
| Code review | Un altro sviluppatore controlla ogni modifica | Qualità e responsabilità condivisa |
| Refactoring | Migliorare la struttura del codice senza modificarne il comportamento | Mantiene il codice facile da modificare |
| Trunk-based development | Branch di breve durata integrati rapidamente | Evita merge dolorosi |
Agile e DevOps
DevOps estende Agile oltre lo sviluppo, fino alle operations: i team sono responsabili del proprio software in produzione, automatizzano l'infrastruttura, monitorano l'utilizzo reale e si riprendono rapidamente dai guasti. Tra le misure DevOps più diffuse ci sono la frequenza di deployment, il lead time delle modifiche, il tasso di fallimento delle modifiche e il tempo di ripristino del servizio.
Best practice
- Mantenete le story abbastanza piccole da poter essere completate in pochi giorni.
- Fate in modo che la Definition of Done includa test automatizzati.
- Ripagate il debito tecnico in modo continuo; riservate capacità a ogni sprint.
- Automatizzate build, test e deployment.
- Rilasciate spesso piccole modifiche, usando i feature flag per separare il deployment dal rilascio.
- Coinvolgete presto gli utenti e misurate l'utilizzo reale dopo il rilascio.
- Svolgete revisioni senza colpevolizzazione dopo gli incidenti.
Modelli gratuiti per questo argomento
Domande frequenti
Qual è la differenza tra lo sviluppo software Agile e DevOps?
Agile si concentra su come i team pianificano e realizzano il software in modo iterativo; DevOps estende questa collaborazione e automazione al rilascio e alla gestione del software in esercizio.
Lo sviluppo software Agile ha ancora bisogno di documentazione?
Sì: quanto basta per aiutare gli utenti e i futuri sviluppatori, come codice chiaro, test automatizzati, documentazione delle API e brevi registri delle decisioni.
Che cos'è lo sviluppo software Agile?
Realizzare software in brevi iterazioni con piccoli team cross-funzionali, con integrazione, test e rilasci frequenti e feedback regolare dagli utenti.
Che cos'è il test-driven development nello sviluppo software Agile?
Scrivere prima un test automatizzato che fallisce, poi il codice che lo supera, quindi fare refactoring. Porta a meno difetti e a una progettazione migliore.
Che cos'è la continuous integration nello sviluppo software Agile?
Integrare e testare le modifiche al codice almeno una volta al giorno, con build e test automatizzati, in modo da individuare presto i problemi di integrazione.
Nello sviluppo software Agile, qual è la differenza tra continuous integration e continuous delivery?
La continuous integration integra e testa frequentemente le modifiche; la continuous delivery mantiene il software sempre rilasciabile, con deployment automatizzato.
Che cos'è il pair programming nello sviluppo software Agile?
Due sviluppatori che lavorano su un'unica attività davanti allo stesso schermo, migliorando la qualità e diffondendo le conoscenze.
Che cos'è il trunk-based development nello sviluppo software Agile?
Una pratica in cui gli sviluppatori usano branch di breve durata e li integrano frequentemente nel branch principale, evitando merge dolorosi.
Che cos'è il refactoring nello sviluppo software Agile?
Migliorare la struttura del codice senza modificarne il comportamento, in modo che resti facile da cambiare.
Che cos'è il debito tecnico nello sviluppo software Agile?
Il costo futuro delle scorciatoie nel codice o nella progettazione. Se non viene gestito, rallenta i team e può manifestarsi come un calo della velocity.
Quanto dovrebbe essere grande una user story nello sviluppo software Agile?
Abbastanza piccola da essere completata in pochi giorni, in modo da poter essere realizzata, testata e integrata nell'arco di uno sprint. Vedi user story.