Tecniche di stima - Panoramica
Estimation è il processo di ricerca di una stima, o approssimazione, che è un valore che può essere utilizzato per qualche scopo anche se i dati di input possono essere incompleti, incerti o instabili.
La stima determina quanti soldi, impegno, risorse e tempo occorreranno per costruire un sistema o prodotto specifico. La stima si basa su -
- Dati passati / Esperienza passata
- Documenti / conoscenze disponibili
- Assumptions
- Rischi identificati
I quattro passaggi fondamentali nella stima del progetto software sono:
- Stimare le dimensioni del prodotto di sviluppo.
- Stima lo sforzo in mesi-persona o ore-persona.
- Stima la pianificazione in mesi di calendario.
- Stimare il costo del progetto nella valuta concordata.
Osservazioni sulla stima
La stima non deve essere un'attività una tantum in un progetto. Può avvenire durante:
- Acquisizione di un progetto.
- Pianificazione del progetto.
- Esecuzione del progetto in caso di necessità.
L'ambito del progetto deve essere compreso prima dell'inizio del processo di stima. Sarà utile avere i dati storici del progetto.
Le metriche di progetto possono fornire una prospettiva storica e un input prezioso per la generazione di stime quantitative.
La pianificazione richiede ai responsabili tecnici e al team del software di assumere un impegno iniziale in quanto porta alla responsabilità e alla responsabilità.
L'esperienza passata può essere di grande aiuto.
Utilizzare almeno due tecniche di stima per arrivare alle stime e riconciliare i valori risultanti. Fare riferimento alle Tecniche di decomposizione nella sezione successiva per informazioni sulla riconciliazione delle stime.
I piani dovrebbero essere iterativi e consentire aggiustamenti con il passare del tempo e più dettagli sono noti.
Approccio generale alla stima del progetto
L'approccio alla stima del progetto ampiamente utilizzato è Decomposition Technique. Le tecniche di decomposizione adottano un approccio divide et impera. La stima delle dimensioni, dell'impegno e dei costi viene eseguita in modo graduale suddividendo un progetto in funzioni principali o attività di ingegneria del software correlate.
Step 1 - Comprendere l'ambito del software da creare.
Step 2 - Genera una stima delle dimensioni del software.
Inizia con la dichiarazione di ambito.
Scomponi il software in funzioni che possono essere valutate individualmente.
Calcola la dimensione di ciascuna funzione.
Ricava stime di impegno e costi applicando i valori delle dimensioni alle metriche di produttività di base.
Combina le stime delle funzioni per produrre una stima complessiva per l'intero progetto.
Step 3- Genera una stima dell'impegno e dei costi. È possibile arrivare alle stime degli sforzi e dei costi suddividendo un progetto in attività di ingegneria del software correlate.
Identificare la sequenza di attività che devono essere eseguite per completare il progetto.
Dividi le attività in compiti che possono essere misurati.
Stimare lo sforzo (in ore / giorni di persona) richiesto per completare ogni attività.
Combina le stime dello sforzo delle attività dell'attività per produrre una stima per l'attività.
Ottieni unità di costo (cioè costo / impegno unitario) per ciascuna attività dal database.
Calcola lo sforzo totale e il costo per ciascuna attività.
Combina lo sforzo e le stime dei costi per ciascuna attività per produrre uno sforzo complessivo e una stima dei costi per l'intero progetto.
Step 4- Riconcilia le stime: confronta i valori risultanti dal passaggio 3 con quelli ottenuti dal passaggio 2. Se entrambe le serie di stime concordano, i numeri sono altamente affidabili. Altrimenti, se si verificano stime ampiamente divergenti, condurre ulteriori indagini per verificare se:
Lo scopo del progetto non è stato adeguatamente compreso o è stato interpretato male.
La ripartizione delle funzioni e / o delle attività non è accurata.
I dati storici utilizzati per le tecniche di stima non sono appropriati per l'applicazione, sono obsoleti o sono stati applicati in modo errato.
Step 5 - Determinare la causa della divergenza e quindi riconciliare le stime.
Precisione della stima
La precisione è un'indicazione di quanto qualcosa sia vicino alla realtà. Ogni volta che generi una stima, tutti vogliono sapere quanto sono vicini i numeri alla realtà. Vorrai che ogni stima sia il più accurata possibile, dati i dati che hai al momento della generazione. E ovviamente non vuoi presentare una stima in un modo che ispira un falso senso di fiducia nei numeri.
I fattori importanti che influenzano l'accuratezza delle stime sono:
La precisione di tutti i dati di input della stima.
La precisione di qualsiasi calcolo di stima.
Quanto i dati storici oi dati di settore utilizzati per calibrare il modello corrispondono al progetto che stai stimando.
La prevedibilità del processo di sviluppo del software della tua organizzazione.
La stabilità sia dei requisiti del prodotto che dell'ambiente che supporta lo sforzo di ingegneria del software.
Indipendentemente dal fatto che il progetto reale sia stato attentamente pianificato, monitorato e controllato e non si sono verificate grandi sorprese che hanno causato ritardi imprevisti.
Di seguito sono riportate alcune linee guida per ottenere stime affidabili:
- Stime di base su progetti simili che sono già stati completati.
- Utilizzare tecniche di scomposizione relativamente semplici per generare stime dei costi e degli sforzi del progetto.
- Utilizzare uno o più modelli di stima empirici per la stima dei costi e degli sforzi del software.
Fare riferimento alla sezione sulle Linee guida per la stima in questo capitolo.
Per garantire l'accuratezza, si consiglia sempre di stimare utilizzando almeno due tecniche e confrontare i risultati.
Problemi di stima
Spesso, i project manager ricorrono alla stima dei programmi saltando per stimare le dimensioni. Ciò può essere dovuto alle tempistiche stabilite dal top management o dal team di marketing. Tuttavia, qualunque sia la ragione, se ciò viene fatto, in una fase successiva sarebbe difficile stimare i programmi per accogliere i cambiamenti dell'ambito.
Durante la stima, possono essere fatte alcune ipotesi. È importante notare tutte queste ipotesi nel foglio di stima, poiché alcune ancora non documentano le ipotesi nei fogli di stima.
Anche buone stime hanno presupposti, rischi e incertezza intrinseci, eppure sono spesso trattate come se fossero accurate.
Il modo migliore per esprimere le stime è come una serie di possibili risultati dicendo, ad esempio, che il progetto richiederà dai 5 ai 7 mesi invece di affermare che sarà completo in una data particolare o sarà completato in un n. di mesi. Attenzione a impegnarsi in un intervallo troppo ristretto in quanto equivale a impegnarsi in una data definita.
Potresti anche includere l'incertezza come valore di probabilità associato. Ad esempio, esiste una probabilità del 90% che il progetto venga completato entro una data definita.
Le organizzazioni non raccolgono dati di progetto accurati. Poiché l'accuratezza delle stime dipende dai dati storici, sarebbe un problema.
Per qualsiasi progetto, esiste una pianificazione più breve possibile che ti consentirà di includere le funzionalità richieste e produrre risultati di qualità. Se esiste un vincolo di pianificazione da parte della direzione e / o del cliente, è possibile negoziare l'ambito e la funzionalità da fornire.
Concordare con il cliente sulla gestione dei creep dell'ambito per evitare i superamenti del programma.
L'incapacità di accogliere gli imprevisti nella stima finale causa problemi. Ad esempio, riunioni, eventi organizzativi.
L'utilizzo delle risorse dovrebbe essere considerato inferiore all'80%. Questo perché le risorse sarebbero produttive solo per l'80% del loro tempo. Se si assegnano risorse con un utilizzo superiore all'80%, è inevitabile che si verifichino degli slittamenti.
Linee guida per la stima
Si dovrebbero tenere a mente le seguenti linee guida durante la stima di un progetto:
Durante la stima, chiedi le esperienze di altre persone. Inoltre, metti al lavoro le tue esperienze.
Supponiamo che le risorse saranno produttive solo per l'80% del loro tempo. Pertanto, durante la stima, considerare l'utilizzo delle risorse inferiore all'80%.
Le risorse che lavorano su più progetti richiedono più tempo per completare le attività a causa del tempo perso per passare da uno all'altro.
Includere il tempo di gestione in qualsiasi stima.
Costruisci sempre la contingenza per la risoluzione dei problemi, le riunioni e altri eventi imprevisti.
Concedi abbastanza tempo per fare una stima adeguata del progetto. Le stime affrettate sono stime imprecise e ad alto rischio. Per i grandi progetti di sviluppo, la fase di stima dovrebbe davvero essere considerata come un mini progetto.
Ove possibile, utilizza dati documentati da progetti precedenti simili della tua organizzazione. Risulterà nella stima più accurata. Se la tua organizzazione non ha conservato i dati storici, ora è un buon momento per iniziare a raccoglierli.
Utilizza stime basate sugli sviluppatori, poiché le stime preparate da persone diverse da quelle che faranno il lavoro saranno meno accurate.
Usa diverse persone per stimare e utilizzare diverse tecniche di stima.
Riconcilia le stime. Osservare la convergenza o la diffusione tra le stime. Convergenza significa che hai una buona stima. La tecnica Wideband-Delphi può essere utilizzata per raccogliere e discutere le stime utilizzando un gruppo di persone, con l'intenzione di produrre una stima accurata e imparziale.
Rivalutare il progetto più volte durante il suo ciclo di vita.