Un modello empirico di stima basato su dati relativi ad esperienze di progetto proposto da Barry Boehm.
É un modello ben documentato ed indipendente dal venditore del software.
Ha avuto una lunga storia di modifiche dalla versione iniziale pubblicata 1981 (COCOMO-81) fino alla più recente, COCOMO 2.
COCOMO 2 (diversamente da COCOMO 81 basato sul pocesso a cascata) tiene conto di diversi approcci allo sviluppo software (quali prototipazione, component-based, riuso…).
Modello a tre livelli (base, intermedio e dettagliato) in base al livello di accuratezza della stima proposta (da rozza a più fine).
Ogni livello propone, inoltre, stime diverse corrispondenti a tre diverse tipologie di progetti:
Per ognuno dei tre livelli sono definite le formule per la stima di sforzo e tempo di sviluppo secondo un dettaglio via via maggiore
PM = a • Sb (sforzo in person-month)
T = c • PMd (tempo di sviluppo)
COCOMO 81 (Basic COCOMO) proponeva un modello estremamente semplificato sia delle applicazioni che del ciclo di vita adottato.
In pratica venivano utilizzati solo due parametrI.
A causa di queste limitazioni si sono introdotti modelli COCOMO più precisi → COCOMO II.
COCOMO 2 comprende un insieme di modelli applicabili al variare delle modalità di realizzazione dei software, che permettono stime più dettagliate e affidabili.
È un modello utile per stimare i costi di realizzazione di un prototipo o di realizzazione di un software a partire da componenti esistenti.
PM = ( NAP x (1 – %reuse/100 ) ) / PROD
PM è lo sforzo in mesi-uomo, NAP il numero di Application Point, PROD la produttività.
In pratica, tale modello esclude dal calcolo dello sforzo la parte del sistema riusata.
Viene usato una volta che I requisiti utente sono stati definiti e la progettazione iniziata.
È spesso utilizzato per confrontare diverse soluzioni progettuali possibili.
Effort = A x SizeB x M
I moltiplicatori riflettono vari aspetti:
Ogni moltiplicatore è valutato su una scala da 1(molto basso) a 6 (molto alto).
Considera sia il riuso di codice in modalità black-box, senza cambiamenti, sia il riuso di codice che deve essere adattato per integrarlo con nuovo codice.
Ci sono due versioni del modello di stima:
Per codice generato automaticamente (PM è lo sforzo di integrazione):
PMAuto = (ASLOC * AT/100)/ ATPROD
ASLOC: numero di linee di codice complessivo;
AT: percentuale di codice automaticamente generato;
ATPROD: produttività degli ingegneri che si occupano dell’integrazione del codice (tipico: 2400 istruzioni al mese).
Per codice riutilizzato e modificato:
ESLOC = ASLOC * (1-AT/100) * AAM.
ESLOC: numero equivalente di righe di nuovo codice (da utilizzare nelle formule che richiedono il numero di linee di codice generato ex novo);
ASLOC: numero di linee di codice riutilizzato (ma da adattare);
AT: percentuale di codice automaticamente generato;
AAM coefficiente che indica la difficoltà di adattamento del codice. É la somma di AAF (costo per effettuare le modifiche), SU (costo per comprendere il codice esistente), AA (costo legato alle decisioni sul riutilizzo eventuale).
In pratica si paragona lo sforzo di adattamento del codice riusato ad uno sforzo di scrittura di nuovo codice.
Viene utilizzato quando è disponibile un progetto architetturale iniziale ed è conosciuta la struttura dei sottosistemi.
Viene riutilizzata la stessa formula del modello di composizione:
Effort = A x SizeB x M
Stavolta però è possibile una migliore stima della Size.
La dimensione del codice (Size) è stimata sulla base della somma di 3 componenti:
Il termine esponenziale B invece varia in modo continuo (a partire da 1.01) e dipende da:
Il coefficiente M dipende da 17 attributi.
Tre esempi di Stime diverse ottenibili al variare del Modello COCOMO usato e al variare dei fattori di costo .
I modelli di costo algoritmici consentono di eseguire la pianificazione dei progetti, in quanto permettono la valutazione di strategie alternative.
L’opzione D (uso di uno staff più esperto) sembra la migliore alternativa rispetto ai costi.
Ma ha un alto rischio associato, per la difficoltà di trovare uno staff molto esperto.
L’opzione C (upgrade memory) consente di risparmiare meno ma presenta bassi rischi.
Il modello rivela l’importanza dell’esperienza dello staff nello sviluppo software.
Analogamente alla stima dell’effort, i managers devono stimare anche:
COCOMO II ha anche una formula per la stima del tempo di sviluppo:
TDEV = 3 • PM[0.33+0.2•(B-1.01)] • SCED
Dove:
Si può notare che il tempo di sviluppo dipende direttamente dallo sforzo ma non direttamente dal numero di sviluppatori.
Lo staff richiesto non si può determinare dividendo lo sforzo di sviluppo richiesto per la tempistica richiesta:
Es. 50 pm/ 10 mesi = 5 persone
Non c’è una relazione semplice tra costi di sviluppo e prezzi pagati.
Ci sono molti fattori che influiscono sulla produttività (es. Attitudine personale, esperienza nel dominio, il progetto di sviluppo, la dimensione del progetto, i tool e l’ambiente di lavoro).
In genere il prezzo del software viene stabilito per ottenere il contratto, e la funzionalità viene rapportata al prezzo pagato.
Si dovrebbero usare più tecniche di stima dei costi contemporaneamente.
Il modello COCOMO predice lo sforzo di sviluppo considerando vari fattori relativi al progetto, al prodotto, al personale e all’hardware.
I modelli di costo algoritmici supportano una analisi quantitativa di diverse opzioni consentendo il confronto di opzioni diverse.
Il tempo di un progetto non è proporzionale al numero di persone impiegate.
La gestione dei rischi in un progetto software consiste nella loro identificazione e nella proposta di soluzioni alternative che possano minimizzarne gli effetti.
Un rischio è definito come la probabilità che alcuni eventi avversi si verifichino in un progetto software.
Valutazione della probabilità con la quale l’evento avverso si verifica e della serietà delle conseguenze connesse.
Serve a valutare, dinamicamente
Vengono monitorati un insieme di indicatori di rischio, in maniera automatica o soggettiva.
Ad ogni riunione del comitato che si occupa della gestione del progetto si dovrebbero riconsiderare i rischi effettivi, sulla base dei dati aggiornati provenienti dal monitoraggio.
2. Ciclo di Vita e Processi Software
3. Processi per lo sviluppo rapido del software
4. Sviluppo Agile del Software
5. Test Driven Development (TDD)
7. Component Based Software Engineering (CBSE): Generalità
8. Component Based Software Engineering (CBSE): Il processo di svi...
9. Ingegneria del Software orientato ai Servizi
10. Ingegnerizzazione dei Servizi
11. I Processi di Manutenzione del Software
12. Reengineering, Refactoring e Reverse Engineering del Software
13. Verifica e Convalida del Software. Richiami e concetti di base ...
14. Tecniche di Testing Dinamico
15. Testing di Sistemi Object Oriented
16. Automazione del testing e Analisi Mutazionale
17. Tecniche di Analisi Statica del codice e il Debugging
18. Stima dei costi nei progetti Software
19. Il Modello COCOMO per la stima dei costi Software – La gestio...
20. Gestione e Miglioramento dei Processi di Produzione del Softwar...
21. La Valutazione della Qualità dei Processi Software – Il Capa...