In un contesto (odierno) in cui le aziende lavorano in un ambiente globale dal cambiamento rapido, esse devono cogliere nuove opportunità e rispondere a nuovi mercai alle condizioni economiche variabili e alla presenza di prodotti e servizi concorrenti. Il software è parte essenziale delle operazioni aziendali, esso deve trarre vantaggio dalle nuove opportunità. La rapidità dello sviluppo e della consegna è quindi il requisito più critico per la maggior parte dei sistemi software aziendali. Spesso è praticamente impossibile ottenere un insieme completo di requisiti stabili, i requisiti cambiano perché per i clienti è impossibile prevedere come un sistema influenzerà le pratiche operative, come interagirà con gli altri sistemi e quali operazioni degli utenti dovranno essere automatizzate. I requisiti reali diventano chiari solo dopo che il sistema è stato consegnato e utilizzato dagli utenti, fattori esterni possono indurre a modificare ulteriormente i requisiti.
I metodi agili sono particolarmente indicati per sviluppare applicazioni nelle quali i requisiti del sistema cambiano rapidamente durante il processo di sviluppo. Interessante per consentire una consegna rapida ai clienti che possono quindi proporre requisiti nuovi o modificati da includere in successive iterazioni del sistema. I metodi agili suggeriscono che il software deve essere sviluppato e consegna in modo incrementale. I principi agili sono utili per due tipi di sviluppo di sistemi:
Extreme programming è uno dei metodi agili più noti.
Tra le pratiche innovative dei metodi agili:
Lo sviluppo agile deve essere gestito in modo che venga fatto il miglior uso del tempo e delle risorse a disposizione del team. Il metodo agile Scrum cerca di risolvere questo problema.
La scalabilità dei metodi agili richiede che alcune pratiche basate sui piani siano integrate con le pratiche agili (ad esempio: più documentazione, più rappresentanti del cliente, strumenti comuni per i team e allineamento delle release).