Agile Software Development
Lo sviluppo Agile di software si riferisce ad un gruppo di metodologie basate su un approccio iterativo, all'interno del quale i requisiti e le soluzioni evolvono attraverso la collaborazione ed il coinvolgimento del committente.Ad oggi sono riconosciuti 5 problemi comuni che affliggono lo sviluppo del software:
- Povertà dei requisiti: se le specifiche sono poco chiare, incomplete, troppo generali e non testabili, l'insuccesso del software è più che assicurata
- Progettazione irrealistica: spesso l'inesperienza porta ad azzardare una stima dei tempi inattendibile. Una previsione incongruente espone la conduzione del processo ad un alto rischio di fallimento.
- Inadeguatezza dei test: senza un robusto test planning nessuno sarà in grado di sapere come e quando il sistema del cliente andrà in crash. L'unica cosa che gli è dato sapere è che prima o poi lo farà.
- Mancanza di versatilità: che la capacità di evoluzione delle esigenze dei clienti sia estremamente dinamica è cosa ormai nota. Un software rigido, che non sia in grado di evolvere con le richieste degli utenti finali, corre il rischio di non essere accettato.
- Miscommunication: se il team di sviluppo non acquisisce la dovuta conoscenza e padronanza del dominio a causa della mancanza di comunicazione, il risultato finale non rispecchierà le peculiarità del risultato atteso.
Le metodologie agili costituiscono un valido framework utile ad evitare di imbattersi in una delle suddette problematiche.
Ciò che oggi individuiamo con il termine "agile" è l'attitudine a rendere prioritaria ed efficiente la conduzione del processo di sviluppo software malgrado gli improvvisi cambiamenti di specifiche, di tecnologie o addirittura di entità coinvolte.
Il framework e le modologie agili per le quali offriamo consulenza (coaching e development) includono le seguenti aree tematiche:
- Scrum
- eXtreme Programming (XP)
- Lean Software Practices
- Test-Driven Development (TDD)
- Continuous Integration (CI)
