Lezione 8 – Approfondimenti
COCOMO (1)
Ingegneria del software
Modulo 2 - Il software come prodotto
Unità didattica 2 - I costi del software
Ernesto Damiani
Università degli Studi di Milano
Principi base (1)
• Il costo è stimato come una funzione
matematica di attributi di prodotto, progetto e
processo i cui valori sono determinati dai
manager di progetto
– Effort = A  DimensioniB  M
– A è una costante che dipende dall’organizzazione, B riflette
l’effort non proporzionale per grandi progetti e M è un
moltiplicatore che riflette attributi di persone, processi e prodotti.
Principi base (2)
• L’attributo di prodotto usato più comunemente
per la stima dei costi è la dimensione del codice
• In genere, i modelli sono simili, ma usano valori
diversi per A, B e M.
Precisione della stima
• Le dimensioni di un sistema software possono
essere note con precisione solo quando il
sistema è terminato
• Man mano che il processo di sviluppo
progredisce, la stima delle dimensioni diventa
più precisa
• Molti fattori influenzano le dimensioni finali:
– l’uso di COTS e componenti
– il linguaggio di programmazione
– la distribuzione di sistema
Incertezza della stima
Richiami a COCOMO 81
COCOMO II
• COCOMO 81 è stato sviluppato con il
presupposto che sarebbe stato usato un
processo waterfall e che tutto il software
sarebbe stato sviluppato da zero
• Dalla sua formulazione ci sono stati molti
cambiamenti nell’ingegneria del software e
COCOMO II è progettato per adattare i diversi
approcci allo sviluppo software
Modelli COCOMO II (1)
• Come visto nelle lezioni precedenti, COCOMO II
include una serie di modelli che producono stime
di software sempre più dettagliate
– Application Composition
– Early Design
– Reuse
– Post-Architecture
Modelli COCOMO II (2)
• Application Composition
– Usato quando il software viene creato da parti esistenti
• Early Design
– Usato quando i requisiti sono disponibili, ma il design
non è ancora stato iniziato
• Reuse
– Usato per calcolare l’effort di integrare componenti
riutilizzabili
• Post-Architecture
– Usato dopo che l’architettura del sistema è stata
progettata e sono disponibili più informazioni sul sistema
Uso di modelli COCOMO II
Modello Application Composition
• Supporta progetti di prototyping e progetti in cui
c’è riuso completo
• Si basa su stime standard della produttività dello
sviluppatore in mese/punti applicazione (CASE)
• Tiene conto dell’uso di strumenti CASE
• La formula è:
– PM = ( NAP  (1 - %riuso/100 ) ) / PROD
– PM è l’effort in mesi-uomo, NAP è il numero di punti applicazione
e PROD è la produttività
Produttività in punti oggetto
Modello Early Design
• Le stime possono essere effettuate dopo che i
requisiti sono stati concordati
• Si basa su una formula standard per modelli
algoritmici : PM = = A  DimensioniB  M
– M = PERS  RCPX  RUSE  PDIF  PREX  FCIL  SCED
– A = 2,94 nella calibrazione iniziale, Dimensioni in KLOC,
B varia da 1,1 a 1.24 a seconda della novità del progetto,
della flessibilità di sviluppo, degli approcci di gestione dei
rischi e della maturità dei processi
Moltiplicatori
• I moltiplicatori riflettono l’esperienza degli
sviluppatori, i requisiti non funzionali, la
familiarità con la piattaforma di sviluppo ecc.
– RCPX:complessità e affidabilità del prodotto
– RUSE: il riuso richiesto
– PDIF: difficoltà della piattaforma
– PREX: esperienza del personale
– PERS: capacità del personale
– SCED: programma di lavoro richiesto
– FCIL: funzionalità di supporto del team
Il modello Reuse
• Tiene conto del codice black-box che viene
riutilizzato senza cambiamenti e del codice che
deve essere adattato per integrarlo al nuovo
• Ci sono due versioni:
– Il black-box reuse in cui il codice non è modificato.
Viene calcolata una stima degli effort (PM)
– Il white-box reuse in cui il codice viene modificato.
Viene calcolata una stima delle dimensioni equivalente
al numero di linee di codice sorgente aggiunte; questo
poi adatta la stima delle dimensioni per il nuovo codice
Stime del modello Reuse (1)
Per il codice generato automaticamente
• PM = (ASLOC * AT/100)/ATPROD
• ASLOC è il numero di linee di codice generato
• AT è la percentuale di codice generato
automaticamente
• ATPROD è la produttività degli ingegneri
nell’integrare questo codice
Stime del modello Reuse (2)
Quando il codice deve essere capito e integrato
• ESLOC = ASLOC * (1-AT/100) * AAM
• ASLOC e AT come prima
• AAM è il moltiplicatore di adattamento calcolato
dai costi di cambiamento del codice riusato, i
costi per capire come integrare il codice e i costi
del processo decisionale del riuso
FINE