Software Cost, Effort,Time and H-resource Estimation: Introduction and COCOMO Model G.Berio
Estimating Methods Price-to-win Analogy Expert judgement Algorithmic Models (may constraint other estimations)
What it is measured Effort (E): usually measured in Person-Month (PM) or Person-Year (PY) (Month and Year are working quantities, not calendar) LOC: lines of code; KLOC: kilo lines of code; DSI: delivered source instructions; KDSI: kilo delivered source instructions Productivity (L) L = LOC/E: lines of codes corresponding to a deployed effort Personal productivity (Lp): - maximal - lines of codes produced by a person per month (year) H-resources (P) P=E/T: average number of (full-time) persons delivering the effort E within time T (if E is in PM or PY) Cost=(Costhour*hoursmonth)*(#months*P) usually measured in Currency (Euro, Dollar etc.) = (Costhour*hoursmonth)*E (E in PM) Costhour, Costmonth: usually each category of personnel has a recognised cost per hour/per month
COCOMO: COnstructive COst MOdel Modes of Development (generic features of software and development) Level of the model (specific features of software and development) E,T in term of KLOC to be delivered (DKSI)
Organic Mode: features of software and development Small size – up to 50,000 lines of code small, in-house development team experienced in application area non-stringent specifications of function, performance, acceptance tests, interfaces minimal communication overhead stable development environment minimal schedule pressure existing, proven technology
Semi-detached Mode: features of software and development Large size – up to 300,000 lines of code mix of experienced and non-experienced team members in application domain and development environment mix of stringent and non-stringent specifications of function, performance, acceptance tests, interfaces moderate schedule pressure
Embedded Mode: features of software and development Any size Poor experience with the same type of software Stringent specifications of function, performance, acceptance tests, interfaces Rigid, formal quality standards Close development among hardware, software, and operational procedures Leading technology employed Strong schedule pressure
Organic Mode: Examples, E,T Standard engineering, scientific and business modeling systems
Semi-detached Mode: Examples, E,T Standard transaction processing systems New usual DBMS Innovative command & control systems for inventory and production
Embedded Mode: Examples, E,T Avionic software systems Large and complex transaction processing systems Real-time systems New operating systems
COCOMO (Basic): variabilità di E delle linee di codice KLOC 2.4 * KLOC 1.05 3.0 * KLOC 1.12 3.6 * KLOC 1.20 1 2.4 3.0 3.6 10 26.9 39.6 57.1 50 145.9 239.4 392.9 100 302.1 521.3 904.2 1000 3390.1 6872.0 14333.0
Intermediate COCOMO: E, T Modes of Development Level of the model 2.4, 1.05 3.0, 1.12 3.6, 1.2 3.2, 1.05 3.0, 1.12 2.8, 1.2 Range of C 0.09 - 9.42 nominal effort
Intermediate COCOMO: C Product Attributes C1 C2 C3 VL very low L low N nominal H high VH very high XH extra high
Intermediate COCOMO: C Computer Attributes C4 C5 C6 C7 Virtual machine = software likes DBMS, SO, Network, Middleware, VM and so on used to realise the requested software; platform or infrastructure are also applicable terms
Intermediate COCOMO: C Personnel Attributes C8 C9 C10 C11 C12
Intermediate COCOMO: C Project Attributes C13 C14 C15
Riepilogo Coefficienti Ci del COCOMO Ratings Cost Drivers (Ci) Very low Low Nominal High Very Extra Product attributes Required software reliability .75 .88 1.00 1.15 1.40 Data base size .94 1.08 1.16 Product complexity .70 .85 1.30 1.65 Comput er attributes Execution time constraints 1.11 1.66 Main storage constraints 1.06 1.21 1.56 Virtual machine volatility .87 Computer turnaround time 1.07 Personnel attributes Anal yst capability 1.46 1.19 .86 .71 Applications experience 1.29 1.13 .91 .82 Programmer capability 1.42 1.17 Virtual machine experience 1.10 .90 Programming language 1.14 .95 Project attributes Use of modern programming practices 1.24 Use of software tools .83 Required development schedule 1.23 1.04 Riepilogo Coefficienti Ci del COCOMO
Phase sensitive effort distribution on COCOMO Detailed Phase sensitive effort distribution on Plans&requirements Software design Coding&test Integration&test
Waterfall and COCOMO COCOMO Waterfall milestones LCR = Lifecycle Concepts Review SRR = Software Requirements Review PDR = Product Design Review CDR = Critical Design Review (design walkthrough) UTC = Satisfaction of Unit Test Criteria SAR = Software acceptance review Plans & Requirements Product Design Detailed Design Code & Unit Test Deployment Operations & Maintenance Phase out LCR SRR PDR CDR UTC SAR Integration & Test Waterfall COCOMO Design Engineering Construction Architecture Design
Phase-sensitive Effort Distribution Nominal manpower development time Plans/ requirements 6% - 8% 10% 40% Software design 16% 18% 19% 38% Coding / test 48% 68% 24% 64% Integration /test 34%
COCOMO: Stime E,T KLOC anche per singolo modulo! E
Esempio COCOMO PM E (basic) Si può verificare il calcolo a http://cost.jsc.nasa.gov/COCOMO.html
Divisione di Effort - Organic: COCOMO dettagliato
Divisione Tempo - Organic: COCOMO dettagliato
Effort e Tempo PM PM PM Si può verificare il calcolo a http://cost.jsc.nasa.gov/COCOMO.html
Interpolazione Lineare (51-55)/(128-32)*(70-32)+55 y=mx+n 55 51 Si può verificare il calcolo a http://cost.jsc.nasa.gov/COCOMO.html 32 70 128
Convalida di COCOMO COCOMO è stato convalidato con i seguenti risultati: Tuttavia, se è presente un controllo di processo (basato su un archivio storico dei progetti passati) è possibile valutare l’applicabilità di COCOMO nell’organizzazione specifica (analisi Post-Mortem)
Ipotesi COCOMO Richiede la stima delle linee di codice da fornire (KDSI) Cioè si ipotizza solo il tempo di comprensione dei requisiti e non la loro definizione (si tratta di un modello di processo a cascata) PM
Stima delle linee di codice (LOC, KLOC, DSI, KDSI) La stima delle linee di codice può essere relativa all’intero codice da sviluppare oppure a singoli “pezzi di codice” I “pezzi di codice” cui può essere associata la stima possono essere definiti in base a Casi d’uso, Funzioni in un DFD, Componenti singoli o package di un’architettura, … via via che tali informazioni diventano disponibili durante lo sviluppo del software
Struttura dei Modelli Algoritmici di Costo exponent effort = const+tuning coefficient * size empirically usually derived derived as person-months of effort required Software size in term of LOC (or FP) either a constant or a number derived based on complexity of project