21 Feb Relazione tra metodologia dello sviluppo di un software e strategia di progetto
Può esistere un modello di sviluppo valido per ogni tipo di progetto strategico?
Il primo passo da compiere è proprio riconoscere che ogni metodo ha un
impatto significativo sull’iter progettuale, influenzando i costi, i tempi, la sicurezza,
la qualità, l’evoluzione del software, eccetera.
Pertanto, si può affermare che non esiste un modello di sviluppo software applicabile ad ogni tipologia progettuale, bensì almeno un modello per ogni caso specifico, o ancora meglio a seconda delle varie fasi da intraprendere.
Come scegliere una strategia per lo sviluppo software?
Un approccio ideale per l’identificazione di una strategia dello sviluppo di un software X, terrà in considerazione l’acquisizione e/o messa in opera di:
• Uno studio di fattibilità, raccolta dati e definizione degli obiettivi;
• Analisi del prodotto, specie in termini di affidabilità e prestazioni;
• Numero e condizioni di release/upgrade nel tempo;
• Scelta e modalità di coordinamento di un gruppo di lavoro;
• Grado di supporto/coinvolgimento del committente;
• Budget a disposizione/costi di sviluppo;
• Determinazione dei vincoli normativi, tecnici, sociali ed economici;
• Valutazione costi/benefici mettendo a confronto i gap con la realtà attuale;
• Un progetto pilota in cui valutare in anticipo le criticità ed i rischi.
Alcuni modelli per lo sviluppo di un software
L’applicazione della strategia va di pari passo con l’uso di modelli specifici per lo sviluppo di un software, già evidenziati in ingegneria e alcuni dei quali elencati qui di seguito:
• Modello Waterfall;
• Modello Staged;
• Modello Prototyping;
• Modello Iterativo Incrementale;
• Modello a Spirale.
Breve confronto tra Modello Waterfall e Modello Iterativo Incrementale
Mettiamo a confronto alcuni modelli di sviluppo software partendo da alcune rappresentazioni grafiche e prendiamo in esame il Waterfall e l’Iterativo Incrementale.
Il modello Waterfall, con la sua rigidità mantiene la sua coerenza data dalla sequenzialità; è infatti il più conosciuto sin dagli anni 60-70 in quanto ha gettato le basi per superare la programmazione code-and-fix (programmazione per tentativi ed errori); si adatta a quella moltitudine di progetti con scopi precisi nel tempo ed un’unica uscita del prodotto, cercando di puntare sulla qualità del lavoro prodotto seppur troppo lineare.
A differenza invece del modello Iterativo Incrementale, necessario per quei progetti di una maggiore grandezza dove gli obiettivi possono mutare in corso d’opera che, sfruttando una continua relazione tra le parti, è orientato ad aumentare il numero di release con funzionalità sempre più vicine al prodotto finale.
Ogni flusso di lavoro ha quindi in sé la rappresentazione di specifici stadi/processi applicabili ad un progetto che, a seconda della sua complessità non solo tecnica con relativi requisiti, inciderà sulla modalità di esecuzione e le procedure da mettere in atto.
Ogni progetto di sviluppo software è fatto di persone e personalità
Prima ancora di focalizzare tutte le energie sullo sviluppo di un prodotto software è sempre bene ricordare che le persone che partecipano alla realizzazione di un percorso sono più importanti del processo stesso.
È meglio dunque prevedere una buona gestione e coinvolgimento del personale oltre che attuare piani di formazione e le giuste iterazioni di feedback con durata prefissata, valutando le corrette priorità sui backlog (lavori ancora incompiuti), per reagire al meglio ai cambiamenti, a volte repentini, con cui misurarsi all’interno di un progetto di sviluppo specie quando si ha a che fare con nuove tecnologie, al fine di garantire:
• Una risposta sufficientemente efficace;
• Maggiore elasticità nella risoluzione dei problemi;
• Una tempistica continuativamente più rapida.