Dato che sei nuovo nella tecnologia pertinente e non hai familiarità con la base di codice di scarsa qualità esistente su cui dovrai lavorare, è probabile che la stima possa variare in una certa misura in entrambe le direzioni. Ma fai sapere al cliente la seconda ragione :-P
In primo luogo, elencare la miriade di modifiche / caratteristiche richieste dal cliente. Per ogni esigenza, fare una piccola revisione del codice e una ricerca su come implementarla e testarla. Dovresti investire questa volta senza ritorno prima di dare un preventivo.
In secondo luogo, creare 3 colonne per la stima: caso migliore (probabilità del 25%), caso medio (50%), caso peggiore (75%). Per i 2 motivi menzionati nel primo paragrafo, puoi scegliere la stima del caso peggiore. È quindi possibile aggiungere un tempo di buffer pari al 20%. Ad esempio, per un requisito particolare, la stima del caso migliore è di 2 giorni, il caso medio è di 4 giorni e il caso peggiore è di 5 giorni. Aggiungendo un tempo di buffer del 20%, la stima è di 6 giorni.
Terzo, non dare un punto fisso di stima, piuttosto un intervallo. Per l'esempio sopra, puoi dire al cliente che la stima è da 4 a 6 giorni. Il tuo cliente può insistere sulla stima per l'intero elenco di modifiche. In tal caso, è possibile sommare i minimi e i massimi degli intervalli per tutti i requisiti. Quindi fornire una stima finale nel range, ad esempio da 5 a 6,5 mesi. Questo ha il seguente vantaggio: è possibile superare la stima per un requisito, ma potrebbe finire prima un altro requisito. In totale, si annullano a vicenda e la stima finale regge.
In quarto luogo, quando si completano i requisiti di ciascun utente e si consegna in modo incrementale, rivedere le stime precedenti per ciascun requisito. Questo è un processo continuo e dovresti adattare / perfezionare la stima man mano che procedi con il progetto e la tua esperienza cresce. Se vedi che la differenza tra la stima raffinata e la stima iniziale è fuori controllo, siediti immediatamente con il cliente e discuti la questione.
Ho appreso queste cose dal libro "Software Estimation: Demystifying the Black Art" di Steve McConnell. Sono grato a lui.