Adaptive Software Development
È una metodologia agile ideata da Jim Highsmith, direttore del Cutter Consortium's Agile Project Management Advisory Service.
Questa metodologia è composta da un insieme di regole di sviluppo software inserite in un sistema complessivo detto Agile Project Management i cui concetti base sono tre:
- Leadership-Collaboration Management - Uno stile di gestione misto fra gerarchico e collaborativo;
- From Processes to Pattern - Passaggio dall'idea di processo definito e misurabile a quella di processo non perfettamente definito, quasi un processo fuzzy;
- Peering into the Future - Osservazione del futuro per capire come l'idea che produrrà un affare di successo debba essere legata al momento in cui diventerà una forma di business.
Jim Highsmith e Ken Orr affermano che Adaptive Software Development può funzionare solo ed esclusivamente se l'intero team è consapevole dell'importanza del lavoro di gruppo e spiegano come si discosti, ad esempio, da Extreme Programming su punti essenziali (cliente presente, Pair Programming, test automatizzati) concentrandosi sulla strategia della Leadership-Collaboration Management e sull'adattamento totale al progetto in lavorazione.
Condizioni ottimali di utilizzo
[modifica | modifica wikitesto]Esistono tre situazioni esemplari che suggeriscono di utilizzare Agile Project Management:
- per progetti ad alto valore esplorativo (nel senso di sperimentazione);
- per progetti in cui il feedback del cliente è di capitale importanza;
- per organizzazioni che apportino innovazioni estreme.
Le fasi del ciclo di vita
[modifica | modifica wikitesto]La formalizzazione di un sistema complessivo costruito intorno ad Adaptive Software Development porta a considerare Agile Project Management come un nuovo framework.
Le cinque fasi del ciclo di vita sono generalizzate per permettere di utilizzarle con qualunque metodologia agile:
- prevedere (definire una vision del prodotto finale, decidere chi farà cosa, scegliere come il gruppo di lavoro lavorerà insieme);
- ipotizzare (sviluppare una versione basata solo sulle caratteristiche, decidere delle milestones ed un interation plan);
- esaminare (cioè consegnare spesso versioni con nuove caratteristiche testate, e che il cliente testerà anche meglio con l'utilizzo);
- adattare (verificare i risultati delle versioni consegnate, ricontrollare l'ambiente reale di utilizzo, testare così le prestazioni del gruppo di lavoro; adattare e riadattare se necessario);
- chiudere (concludere il progetto, affrontare gli ultimi dettagli in sospeso e festeggiare).
Principi base
[modifica | modifica wikitesto]- sviluppare qualcosa di utile;
- coltivare la fiducia degli stakeholders;
- utilizzare Leadership-Collaboration Management come stile gestionale;
- costituire gruppi di lavoro competenti e collaborativi;
- far sì che il team abbia la possibilità e sia in grado di prendere decisioni;
- consegnare spesso nuove versioni all'aggiunta di nuove funzionalità;
- incoraggiare l'adattabilità;
- cercare di ottenere l'eccellenza tecnica;
- quando possibile, aumentare il volume di dati immessi.