Perche usare i metodi agili

Quali sono i vantaggi che offriamo al cliente utilizzando metodi agili?

I metodi agili considerano il progetto come un processo adattivo dove il cliente è considerato parte attiva e constantemente coinvolto nel processo di realizzazione del software al pari degli sviluppatori. Si parla di sviluppo iterativo.

L’aspetto chiave dello sviluppo iterativo è quello di realizzare frequentemente versioni funzionanti del sistema finale che possiedano un sottoinsieme delle funzionalità richieste. Questi sistemi non hanno tutte le funzionalità, ma per il resto rispettano le richieste per il sistema finale. Sono completamente integrati e tanto attentamente testati quanto una versione finale. Ad ogni iterazione si ha la possibilità sia di controllare il progresso dello sviluppo del software sia di alterarne la direzione. Questo crea una più stretta relazione tra sviluppatori del software e cliente. Un tale livello di interazione non si adatta ad ogni tipologia di cliente, e nemmeno ad ogni sviluppatore di software; ma è essenziale per fare funzionare adeguatamente un processo adattivo.

Tutto questo offre un certo numero di vantaggi per il cliente. Tanto per cominciare egli usufruisce di uno sviluppo del software molto più reattivo. Inoltre è possibile mandare molto presto in produzione un sistema utilizzabile, anche se minimale. Il cliente ne può quindi cambiare le capacità sulla base dei cambiamenti che avvengono nel contesto commerciale in cui opera, e anche sulla base dell’esperienza derivante dall’utilizzo diretto del sistema.

Che risparmi si ottengono ?

Un contratto a prezzo fisso richiede requisiti stabili e quindi un processo predittivo. Ma l’esperienza dice che i requisiti sono spesso instabili e quindi non è possibile lavorare utilizzando l’usuale concetto di prezzo fisso.

Cercare di adattare un modello a prezzo fisso ad un processo non predittivo come quello dello sviluppo software finisce per generare conseguenze molto dolorose. L’aspetto peggiore di queste conseguenze è che si ripercuotono sul cliente tanto quanto sulla società di sviluppo del software.

Dopo tutto il cliente non vorrebbe del software se la sua attività non lo richiedesse. Se non gli viene consegnato la sua attività ne risente. Così anche se non deve pagare ulteriormente la compagnia di sviluppo, subisce ugualmente una perdita. Di fatto perde più di quanto pagherebbe per il software (perché altrimenti il cliente acquisterebbe del software se il valore che questo assume nella sua attività fosse minore della spesa?). Così ci sono pericoli per entrambe le parti nel firmare un contratto a prezzo fisso in quei casi in cui un processo predittivo non può essere utilizzato.

Questo vuol dire che il cliente deve operare diversamente. Ciò non vuol dire che non sia possibile determinare a priori un budget per il software. Quello che significa è che non è possibile fissare il tempo, il prezzo e la quantità di lavoro da svolgere. L’approccio agile tradizionale consiste nel fissare il tempo e il prezzo, e di lasciare che la quantità di lavoro vari in modo controllato.

Perchè i progetti vengono gestiti in modo più efficace?

Perchè ad ogni iterazione si ha un feedback sul livello di soddisfazione del cliente, e perchè si pone una fortissima enfasi sulla fase di Testing.

I metodi agili pongono il testing come fondamento dello sviluppo, con ciascun programmatore che scrive i test parallelamente al codice richiesto per la produzione.

I test sono integrati in un processo di integrazione continua e di costruzione, il che porta ad ottenere una piattaforma altamente stabile per lo sviluppo futuro.


Categories