Corso di Sistemi informativi Carlo Batini 5 Costi
Corso di Sistemi informativi Carlo Batini 5. Costi sviluppo software
Servizi Sviluppo software • Partendo dalle Linee di Codice (LOC) • Metodo dei Function Points • Metodi per analogia
I metodi principali adottano due fasi Specifiche del sw Dimensione del prodotto software Dimensione In LOC o FP Fattori che Influenzano la produttività Calcolo effort + tariffe Costo del sw
Servizi Sviluppo software – metodo di valutazione 1. Determinazione delle dimensioni (LOC/ FP) 2. Determinazione dell’impegno in giornate / persona 3. Determinazione delle tariffe professionali 4. Calcolo dei costi
1. Determinazione della dimensione
Metodi per analogia stima del numero delle linee di codice Specifiche coarse grained Raffianamento delle specifiche Specifiche fine grained In ambienti simili Matching Numero delle linee di codice
Calcolo delle linee di codice 1. Frammenta e raffina le specifiche finchè non sei arrivato a definire moduli per cui c’è conoscenza pregressa sulle dimensione del sw 2. Quantifica il numero delle linee di codice di ogni modulo 3. Definisci la dimensione totale in linee di codice
Problemi nell’ uso di linee di codice Programma per la somma dei primi cento numeri I due programmi: 1. Cont = 0 2. For I = 1 to 100 3. Cont = Cont + I e 1. Cont = 100 * 101 / 2 Fanno lo stesso calcolo con 3 istruzioni e 1 istruzione
Il metodo dei punti funzione I Function Points (FP) sono una unità di misura delle dimensioni del software, proposta da A. Albrecht (IBM) nel 1975, cui è associato un metodo di calcolo (FP Analysis) pubblicato nel 1983. I FP misurano la dimensione di una applicazione software, derivandola dal numero di funzionalità che fornisce agli utenti. Per funzionalita si intende ogni singola procedura elementare di trasformazione di un input in un output
What is a function point • A function point is a measurable amount of functionality that can be determined during the requirements phase of a program. • It measures many components such as – the number of logical files, – interface files, – external inputs, – external outputs, – and external queries.
What is a function point • It is an approach has provided consistent sizing of software projects for more than 35 years. • Essentially, it measures the gross amount of functionality based on measurable artifacts. • Once a project's size in function points is determined, then you can measure many other aspects and compare them with other projects known to be of roughly the same size.
Vantaggi dei Function Points • sufficientemente oggettivi entrambi i precedenti programmi corrispondono a una funzionalità
Esempio I due programmi: • 1. Cont = 0 • For I = 1 to 100 • Cont = Cont + I e • Cont = 100 * 101 / 2 corrispondono entrambi a 1 punto funzione
Vantaggi dei Function Points • sufficientemente oggettivi entrambi i precedenti programmi corrispondono a una funzionalità vedi prossima slide • valutabili precocemente rispetto alla realizzazione del codice le funzioni sono più «astratte» del codice • legati più al “cosa fare” (fase di analisi, es. BPMN) che al “come farlo” (fase di programmazione) • abbastanza indipendenti dai linguaggi di programmazione adottati.
Come si calcolano i punti funzione • Non approfondiremo questo punto • Assumeremo che il numero dei punti funzione da sviluppare sia dato. • Comunque lo studente può trovare materiale di approfondimento sul sito e. Learning
2. Determinazione dell’impegno in giornate persona
Dalla dimensione all’impegno umano e ai costi Nelle prossime slides vedremo due metodi basati su: 1. Utilizzo di valori minimi medi e massimo di ore persona per punto funzione sulla base del linguaggio di programmazione utilizzato, che influenza significativamente la produttività 2. Traduzione dei punti funzione in linee di codice, sulla base del linguaggio utilizzato, e utilizzo di produttività basate sulle linee di codice e linguaggio (che presentano un numero elevato di serie storiche disponibili)
Metodo 1: valori minimi medi e massimo di ore persona per punto funzione sulla base del linguaggio di programmazione utilizzato I linguaggi programmativi si possono classificare in • 3 GL: linguaggi di terza generazione – Esempi: linguaggi procedurali ad alto livello, come il C, C++, Java • 4 GL: linguaggi di quarta generazione, più potenti – Esempi: SQL, il linguaggio per i database relazionali) • Application Generator: generatori di applicazioni, aiutano il programmatore nello sviluppo
From function points to programming language productivity • Several research group have gathered data on a huge number of projects, using functional size as the key sizing measure. • From this data, we can see how many hours it took to take each project to completion and how those hours mapped to languages, on projects that were primarily written in one language. • Table 1 shows what research turned up
Metodo 1: Determinazione dell’impegno per FP (h/p) Stime per processo di sviluppo tradizionale su server e su personal computer min. Server 3 GL 4 GL Appl. Generator Personal Computer 3 GL 4 GL 0, 7 0, 8 0, 7 1, 3 0, 2 0, 9 0, 2 mediana max. 5, 5 6, 9 4, 6 2, 4 2, 9 7, 5 2, 3 23, 0 21, 9 23, 0 5, 8 59, 4 3, 02 La grande varianza è dovuta allo skill dei programmatori, forma di affidamento (gara vs trattativa privata), e altri fattori 20
Development hours per function point of software, ranked by principal programming language
FP al mese
Molti fattori influenzano la produttività • linguaggio di programmazione • piattaforma tecnologica · classe di rischio dell’applicazione · qualità attesa · complessità e innovazione del problema da risolvere · dimensione delle applicazioni vedi in seguito · esperienza del team di sviluppo · metodologia di lavoro · utilizzo di strumenti Computer Aided Software Engineering · grado di riuso di funzionalità già esistenti • forma di affidamento • skill dei programmatori
Per cui ai fini della produttività alcuni metodi distinguono tra • Anadjusted function Points • Adjusted Function Points
Example of weighted adjustment of FPs
3. Determinazione tariffe professili e 4. costi
Due modalità 1. tariffe note sul mercato affidamento a trattativa privata Numero punti funzione Elementi di complessità Calcolo della produttività Effort in numero di ore Costo orario Costi sw applicativo
Due modalità 2. affidamento al mercato gara competitiva Specifiche del software Calcolo dei Punti funzione Numero punti funzione Ai fornitori per offerta
Recenti evoluzione del processo di sviluppo sw Nel passato: processo waterfall (prima analisi, poi programmazione, poi testing, con ricicli) Piu’ recenti • Prototipazione: le varie fasi sono eseguite in cicli piu’ brevi ed evolutivi • Agile: programmazione in piccoli team di programmatori, con cicli molto accelerati rispetto ai metodi tradizionali
Metodo 2: Rapporto fra FP e LOC Coefficienti di conversione a seconda del linguaggio Applicazione dei costi per LOC Linguaggio LOC per FP Assembler 320 C++ 53 C 128 Java 53 Cobol e Cobol II 107 Visual Basic Pascal 91 Smalltalk PL/1 80 SQL 71 Excel Fortran 95 29 21 13 6
A partire dalle linee di codice… • Diversi metodi (es. Constructive Cost Model, Cocomo) che a partire dalle linee di codice e dei fattori di complessità determinano una stima dei costi
Algorithmic cost modelling • Empirical method, based on the analysis of historical data (completed projects) and identification of best fit formula • Effort is estimated as a function of product, project and process attributes whose values are estimated by project managers – Effort = A x Size. B x M – A is an organisation-dependent constant (e. g. local practices, type of developed SW), – B reflects the disproportionate effort for large projects (between 1 and 1. 5) – M is a multiplier reflecting product, process and people attributes – Size estimated in LOC or FP. • Most models are similar but with different values for A, B and Mx
Metodi per analogia
Metodi per analogia valutazione dei costi Specifiche coarse grained Raffianamento delle specifiche Specifiche fine grained In ambienti simili con costi Matching Costo del sw appl.
Metodi per analogia 1. Frammenta e raffina le specifiche finchè non sei arrivato a definire moduli per cui c’è conoscenza pregressa su effort necessario 2. Quantifica i costi di ogni modulo 3. Definisci costi totali
Vedi anche • http: //www. cs. bsu. edu/homepages/dmz/cs 697 /langtbl. htm
- Slides: 36