Stima dei costi del software [chiuso]


10

Ho visto sul mio posto di lavoro (un'università) la maggior parte degli studenti fare il costo di stima del software del loro lavoro di diploma finale usando COCOMO . La mia ipotesi è che questo modo di stimare i costi sia piuttosto vecchio (date COCOMO del 1981), quindi la mia domanda:

How do you estimate costs in your software?

Ho visto cose come:

Costo = (HoursOfWork + EstimatedIddle) * HourlyRate

Non è quello che voglio, sto cercando un modello di costo ben definito (scientificamente)

EDIT Ho trovato alcune domande correlate su SO:


30
"Come stimate i costi nel vostro software?" Malamente, proprio come tutti gli altri.
Rein Henrichs,

1
In realtà, si tratta di due domande. Ti suggerisco di riscriverlo come una domanda principale che non dipende dal software esoterico. Dubito che otterrai molte risposte se il requisito è la conoscenza con Cocomo
Eran Galperin il

@Eran, prenderò il tuo consiglio e riscriverò la domanda poi ...
David Conde,

4
Steve McConnell è considerato un leader di pensiero in questo spazio da molte persone nel settore IT. Dovresti dare un'occhiata al suo libro. stevemcconnell.com/est.htm
Jeff

5
Sto votando per chiudere questa domanda come fuori tema perché non si tratta di un problema di programmazione concettuale nell'ambito definito nel Centro assistenza .
durron597,

Risposte:


16

Nel caso in cui sei bloccato in modalità Cascata, l'unico metodo abbastanza accurato che ho usato è:

  1. Creare una struttura di suddivisione del lavoro
  2. Assicurati che sia sufficientemente dettagliato in modo da poter mettere in relazione l'entità di ogni attività con qualcosa che tu (o qualcuno con cui puoi parlare) ha fatto prima.
  3. Per ogni attività, fornisci i numeri del caso migliore, del caso probabile e del caso peggiore in base all'esperienza. Il caso migliore è se tutto è andato alla perfezione, il caso peggiore è se hai dovuto rifarlo (forse due volte) e probabilmente è da qualche parte lì dentro.
  4. Utilizzare una formula di ponderazione come (1 * migliore + 4 * probabile + 1 * peggiore) / 6 per elaborare una stima per ogni attività che tenga conto dell'intervallo.
  5. Ho anche visto varianti in cui è possibile aggiungere un componente "a rischio" per ogni attività. I tre livelli di rischio sono 0, 1 e 2. Un rischio di 0 significa che l'hai già fatto prima (o qualcosa di molto vicino), 1 significa che non l'hai mai fatto prima, ma è fatto regolarmente nel tuo settore, 2 significa che probabilmente non è mai stato fatto prima nel settore. Prendi il numero di rischio e lo moltiplichi per un'approssimazione della "deviazione standard" del tuo preventivo. Aggiungilo alla tua stima ponderata. Quindi un rischio di 0 non lo sposta, ma un rischio di 2 lo sposta abbastanza vicino al numero del caso peggiore.
  6. Aggiungi tutte le attività.
  7. Aggiungi una contingenza (un po '%) per "incognite sconosciute".

Ti ritroverai con un numero molto preciso. Non sto dicendo che sia accurato, ma sarà preciso.

L'accuratezza dipende interamente dalla capacità di elaborare un numero per ciascun compito basato sull'esperienza passata o di trovare qualcuno che lo abbia già fatto. Più esperienza hai, migliori sono le tue stime.

Quando esegui il progetto, tieni traccia del tuo tempo rispetto a ciascuna attività e annota quelle che hai perso, in modo da poter confrontare. Questo ti renderà migliore nel tempo.


Grazie @Scott, consiglierò qualcosa come la tua idea ..
David Conde,

1
Fai la tua stima in questo modo, quindi stima in modo indipendente una seconda via (e / o una seconda persona fa le stime). Confronta i risultati. Qualunque cosa lontana o significativamente diversa dalla "sensazione dell'intestino" deve essere rivista. La mia esperienza (oltre 25 anni) è che il "feeling intestinale" è spesso più preciso di qualsiasi formula di fantasia, ignorandolo a tuo rischio e pericolo.
Mattnz,

@mattnz - gut feeling ha lo stesso avvertimento: funziona solo se hai molta esperienza. Ogni cliente ha la "sensazione viscerale" che costerà molto meno di quello che fa, perché non capisce la quantità di lavoro coinvolto nei casi d'angolo.
Scott Whitlock,

3
Un altro consiglio: "Non negoziare le stime. <Lunga pausa>" è una frase molto utile negli incontri con i capi / clienti. Dopo tutto, lo fa il meccanico o il chirurgo della tua auto? Può negoziare il prezzo, può negoziare quale lavoro viene svolto o come è stato fatto, ma non ho mai visto un commerciante professionista in qualsiasi campo diverso dal software negoziare quanto tempo impiegherà un lavoro.
Mattnz,

@mattnz - La settimana scorsa ho negoziato con un meccanico d'auto su quanto tempo ci sarebbe voluto per riparare la portiera della mia auto a seconda di come è stato fatto.
sixtyfootersdude,

3

La stima del software è estremamente difficile. Un approccio che ho usato è quello di abbattere i requisiti il ​​più finemente possibile e stimare ogni pezzo separatamente. Quindi aggiungere un "fattore di fondente" che può essere un moltiplicatore (doppio) o un importo fisso (x ore per lavoro imprevisto). Se non si hanno buoni requisiti, la stima è impossibile per scopi pratici.


1
Le stime di maggior successo che ho visto (escluse quelle che utilizzano metodi sofisticati) sono quelle che hanno raddoppiato approssimativamente la stima originale.
Bernard Dy,

1
Sì, doppio. Uno dei manager di maggior successo politico per cui ho lavorato ha preso le stime degli sviluppatori, le ha triplicate , quindi ha negoziato con gli utenti per raddoppiare. Più spesso, le date di consegna negoziate sono state colpite.
DaveE,

0

L'industria ha imparato molto in 30 anni dal '81. Stimare in questo modo non ha mai funzionato. Con la mania di Agile che ha sostanzialmente riscritto il paesaggio, usiamo i "punti della storia" che rappresentano una "difficoltà comparativa" confusa. Otteniamo quindi "velocità" in modo che i muck muck possano fare le loro stime $$ con una certa quantità di dati empirici.


0

Ho imparato alcuni approcci "rigorosi" come le stime dei punti di funzione e alcune varianti che sono state progettate per applicazioni moderne. Penso che la parte di questi approcci che è preziosa sia quella di forzare un'analisi più dettagliata dei requisiti noti, che altrimenti potrei dare.

Ottenere un buon set di dati con cui lavorare è molto difficile anche se hai un buon modello. Misurare la produttività è difficile. La gente gioca quasi ogni metrica.

Ho smesso di usarlo perché la mia organizzazione è troppo disfunzionale per beneficiare delle stime del software, ma ho un certo rispetto per il gruppo Cost Xpert e il loro strumento; ma è molto costoso e probabilmente non vale il costo e la curva di apprendimento per la stragrande maggioranza delle organizzazioni.


0

È molto difficile stimare sforzi e costi, ma se vuoi qualcosa di più preciso, allora:

  • dividere HoursOfWork in 3 componenti:

    1. miglior stima,
    2. stima molto probabile,
    3. stima peggiore.
  • rimuovi EstimatedIddle.

Prendi nota che tutto ciò che richiede più di 8 ore introdurrà un errore enorme.


0

Ciò che normalmente facciamo è dividere l'ambito di lavoro completo in moduli / elementi principali che potrebbero essere considerati come sottoprogetto. In altre parole, sono quelle parti di lavoro che il cliente considera come parti separate del progetto e che il cliente vuole essere stimato separatamente.

Una volta fatto, dividiamo ciascun modulo in compiti, sotto-compiti e anche sotto-sotto-compiti ancora più piccoli in modo che ognuno possa essere stimato abbastanza facilmente e la stima impieghi da una a dieci ore-uomo. In questo modo otteniamo un'analisi dettagliata dell'ambito di lavoro del progetto.

L'ultimo passo è distribuire le attività tra le pietre miliari. Lo facciamo in modo che dopo ogni traguardo il cliente ottenga risultati visibili. Ciò aiuta a superare una pietra miliare e passare ad un'altra. Quindi finalmente otteniamo qualcosa di simile:

Modulo 1

    <ol>
        <li>
            Primary task 1 - 5 hrs
            <ol>
                <li>Subtask 1.1 – 3 hrs</li>
                <li>Subtask 1.2 – 2 hrs</li>
            </ol>
        </li>
        <li>
            Primary task 2 - 9 hrs
            <ol>
                <li>Subtask 2.1 – 1 hrs</li>
                <li>Subtask 2.2 – 2 hrs</li>
                 <li>Subtask 2.2 – 5 hrs</li>
            </ol>

Inizialmente l'abbiamo fatto semplicemente usando il foglio Excel. Ma più di due anni fa abbiamo iniziato a utilizzare lo strumento software per questo. Ci sono pochi prodotti simili che aiutano con esso www.evenflow.com , www.swproposal.com e pochi altri. Non ricordo tutta la lista. Abbiamo fatto ricerche molto tempo fa. Spero che possa essere d'aiuto.

Una buona domanda è come stimare con precisione. Non esiste una stima corretta al 100% come crediamo. L'unico modo è quello di dividere l'ambito di lavoro completo nel minor numero possibile di attività. Le attività più piccole hanno la revisione e l'analisi più dettagliate del progetto che svolgi. In modo che aumenti comunque l'accuratezza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.