Il Function Point è una delle metriche più antiche e tuttora diffuse nell ambito della valutazione di progetti software. Ciò che lo rende insostituibile e superiore ad altri metodi può essere riassunto nei cinque punti seguenti: Fornisce un parametro adimensionale, cioè un numero puro senza alcuna unità di misura fisica Misura la dimensione di un software in termini delle funzionalità offerte all utente La misurazione si basa sul disegno logico del software, cioé sulla struttura del progetto, sulla descrizione delle parti che lo compongono e come esse sono collegate tra loro. La descrizione può avvenire in qualsiasi modo: specifiche in linguaggio naturale, schemi Entità-Relazione, diagrammi di Flusso dei Dati, ecc. E indipendente dall ambiente tecnologico in cui si sviluppa il progetto, proprio grazie al fatto che si basa sul disegno logico delle funzioni Consente confronti fra differenti progetti e organizzazioni Quindi il Function Point descrive il valore di un software con una valutazione non dipendente da nessuna unità fisica. La misura delle dimensioni di un software tramite Function Point, valuta le funzioni offerte all utente: se un prodotto presenta un numero limitato di funzioni per l utilizzatore finale, dovrà necessariamente essere valutato in maniera riduttiva rispetto ad un progetto che prevede un numero superiore di funzioni rivolte all utente. Il metodo di cui ci occupiamo consiste nell identificare cinque tipi di funzioni a ciascuna dele quali si assegna un peso calcolato sulla base della quantità di dati e sulla complessità delle relazioni tra loro. La somma dei pesi di tutte le funzioni costituisce il Numero di Function Points Non Pesato. Infine questo numero viene moltiplicato per un fattore di correzione ottenuto considerando 14 caratteristiche generali del sistema per ottenere il Numero di Function Points Pesato. I Function Point si possono applicare a tutti i tipi di progetti: - Per progetti di sviluppo: si calcola il valore delle funzioni nuove da sviluppare caso mai aggiungendo l eventuale conversione dei dati se esisteva una vecchia applicazione. - Per progetti di manutenzione evolutiva: misura la modifica di un software esistente comprendendo funzioni aggiunte, modificate, cancellate e di eventuale conversione dei dati - Per un applicazione esistente: consente il calcolo dei Function Point cosiddetti installati e il loro aggiornamento. Questo punto comprende oltre al calcolo del processo di sviluppo, un conteggio anche per tutte variazioni effettuate, tenendo conto delle funzionalità cancellate e/o variate I tre metodi di calcolo coprono tutte le fasi del ciclo di vita del software Nel conteggio si individuano due principali tipi di funzioni: funzioni di tipo dati comprendono due tipi di file: o ILF (Intenal Logical file) i file interni logici o EIF (External Interface File) ed i file esterni di interfaccia. funzioni di tipo transazione che descrivono le varie funzionalità offerte agli utenti e sono di 3 tipi: ITIS A. Volta Flavia Lollis pag. 1
o EI (External Input) è un processo elementare che elabora dati provenienti dall esterno del confine dell applicazione che si sta misurando e hanno il compito di mantenere uno o più ILF o modificare il comportamento del sistema. o EO (External Output) ) è un processo elementare che produce dati da inviare all esterno del confine dell applicazione che si sta misurando; ha il compito di elaborare i dati prelevati da 1 o più EIF ricavandone anche dei dati derivati e di presentarli all utente o EQ (External Inquiry) sono funzioni elementari che inviano dati all esterno dell applicazione senza nessuna logica di elaborazione: i dati vengono prelevati da uno più ILF ed EIF ed inviati all esterno senza nessun dato ricavato e nessun aggiornamento Ad entrambi viene assegnato un punteggio che partecipa al conteggio finale dei function point. In particolare: ILF (Internal Logical File) è un gruppo di dati o informazioni di controllo logicamente collegati e riconoscibili dall'utente che sono mantenuti all'interno dei confini dell'applicazione. Il compito primario di un ILF è di contenere dati mantenuti attraverso uno o più processi elementari dell applicazione che si sta contando. EIF (External Interface File) è un gruppo di dati logicamente collegati o di informazioni di controllo, riconoscibili dall utente, mantenuti all esterno del confine dell applicazione che si sta misurando L informazione elementare sia di ILF che di ELF è chiamata DET (Data Element Type) ed è un campo unico riconoscibile dall utente non ricorsivo. Il numero di DET è la misura della complessità di un ILF o EIF. Contrariamente a quanto avveniva in passato, ILF ed EIF non hanno una corrispondenza 1:1 con le tabelle del database, ma sono un aggregazione logica di dati che possono essere divisi in sottogruppi significativi detti RET (Record Element Type) che generalmente corrispondono alle tabelle di un db relazionale. Ad esempio i dati di uno studente di una scuola (dati anagrafici, residenza, tel, voti dei vari anni di scuola) costituiscono un ILF composto da due RET (nome, indirizzo, telefono, ) e (voti dei vari anni ). FTR è un o un ILF EIF è formato da RET è formato da DET Conteggio per funzioni di tipo dati Per misurare un applicazione dobbiamo quindi come prima cosa individuare ILF ed EIF, per ognuno di essi i RET ed i relativi DET in quanto il valore da contare per ogni ILF o EIF dipende dal numero di RET e DET, e precisamente si deve assegnare una complessità ad ogni ILF ed EIF in base al numero di RET e DET individuati secondo la seguente tabella: ITIS A. Volta Flavia Lollis pag. 2
ILF o EIF 1-19 DET 20-50 DET >51 DET 1 RET Bassa Bassa Media 2-5 RET Bassa Media Alta >5 RET Media Alta alta Una volta stabilita la complessità di ogni ILF e di ogni EIF gli si assegna il suo numero in base alla seguente tabella: complessità ILF EIF Bassa 7 5 Media 10 7 Alta 15 10 Ad esempio se la nostra applicazione ha 2 ILF di complessità bassa, uno di complessità media e due EIF di complessità alta, il conteggio degli FP per le funzione di tipo dati è FP = 2*7 + 10 + 2*10 = 14 + 10 + 20 = 44 Conteggio per funzioni di tipo transazione EI Come prima cosa si deve determinare per ogni funzione il numero di FTR e di DET trattati. Per contare gli FTR: Conta un FTR per ogni ILF mantenuto Conta un FTR per ogni ILF o EIF letti durante l esecuzione di un EI Conta solo un FTR per ogni ILF che è sia mantenuto che letto Per contare i DET: Conta un DET per ogni campo non ripetuto che entra o esce dal confine dell applicazione ed è richiesto per completare un EI Non contare campi che sono riportati o derivati dal sistema e registrati su un ILF durante il processo elementare se i campi non attraversano il confine del sistema Conta un DET per la capacità di inviare un di responso del sistema fuori dal confine dell applicazione per indicare che è stato riscontrato un errore durante il processo, confermare che il processo è completo o verificare che il processo può continuare. Conteggio per funzioni di tipo transazione EO ed EQ EO ed EQ hanno alcune regole comuni ma gli EO hanno delle regole aggiuntive Per contare gli FTR: Conta un FTR per ogni ILF o EIF letto durante l esecuzione di un processo elementare In più per gli EO Conta un FTR per ogni ILF mantenuto durante l esecuzione di un processo elementare Conta solo un FTR per ogni ILF che è sia mantenuto che letto durante il processo elementare ITIS A. Volta Flavia Lollis pag. 3
Per contare i DET: Conta un DET per ogni campo non ripetuto che entra dal confine dell applicazione Se un DET entra ed esce dal confine, deve essere contato solo una volta per il processo elementare Conta un DET per la capacità di inviare un di responso del sistema fuori dal confine dell applicazione per indicare che è stato riscontrato un errore durante il processo, confermare che il processo è completo, o verificare che il processo può continuare Non contare campi che sono riportati o derivati dal sistema e registrati su un ILF durante il processo elementare se i campi non hanno attraversato il confine del sistema Dopo aver individuato per ogni EI, EO ed EQ dell applicazione il numero di FTR e DET, in base alle seguenti tabelle si individuano le loro complessità funzionali tramite le quali poi si calcolano i function point non pesati Per EI 1-4 DET 5-15 DET 16 o più DET 0-1 FTR Bassa Bassa media 2 FTR Bassa Media alta 3 o più FTR Media Alta alta Per EO e EQ 1-5 DET 6-19 DET 20 o più DET 0-1 FTR Bassa Bassa media 2-3 FTR Bassa Media alta 4 o più FTR Media Alta alta Per calcolare i function point Complessità EI ed EQ EO Bassa 3 4 Media 4 5 Alta 6 7 ITIS A. Volta Flavia Lollis pag. 4
Come esempio consideriamo le applicazioni Gestione professori e gestione studenti relative al seguente schema dei dati: Nella quale in rosso sono segnati i confini delle due applicazioni ed occupiamoci del conteggio della Gestione professori che comprende le seguenti funzioni: 1. Gestione dei dati sui professori a. Inserisci Professore: inserisci i dati di un nuovo professore (Nome matricola e Anzianità). b. Interroga Professori: dato il nome di un professore evidenzia i suoi dati c. Elenca Professori: mostra la lista di tutti i professori stampando alla fine il numero totale dei professori d. Cancella professore 2. Gestione dei dati sui corsi a. Inserisci Corso: inserisci i dati di un nuovo corso. I dati comprendono il Codice, l'istituto e il nome del professore che tiene il corso. b. Interroga Corsi: richiedi i dati di un corso dato il suo Codice. I dati comprendono il codice, l'istituto e il nome del professore c. Elenca Corsi: mostra la lista di tutti i corsi stampando alla fine il numero totale dei corsi. I dati comprendono il Codice, l'istituto e il Nome_Professore 3. Gestione degli esami superati. a. Inserisci Esame Superato: inserisci un nuovo esame superato. I dati comprendono il Codice_Corso, la Matricola dello studente e il Voto. b. Interroga Esami Superati: richiedi i dati di un esame superato dato il suo codice. I dati comprendono il Codice_Corso, la Matricola_Studente e il Voto ITIS A. Volta Flavia Lollis pag. 5
c. Elenca Esami Superati: mostra la lista di tutti gli esami superati stampando alla fine il numero totale di esami La prima cosa da fare è identificare gli ILF e gli EIF, individuando il numero dei loro RET e DET che ci permetteranno di individuare la loro complessità ILF EIF Numero di FTR Numero di DET complessità FP Professore 1 3 Bassa 7 Corso 1 4 Bassa 7 Esame 1 4 Bassa 7 studente 1 5 Bassa 5 Totale FP 26 Poi si passa ad identificare EI, EO ed EQ con i relativi FTR e DET coinvolti EI FTR DET complessità FP Inserisci professore 1 4 3 DET da ILF, 1 da bassa 3 Inserisci corso 2 5 4 DET da ILF, 1 da media 4 Inserisci esame 3 5 4 DET da ILF, 1 da alta 6 Cancella professore 1 2 1 DET da ILF (PK), 1 da Bassa 3 Totale FP 16 EO FTR DET complessità FP Elenca professori 1 5 3 DET da ILF, 1 da bassa 4, 1 totale calcolato Elenca corsi 2 6 4 DET da ILF, 1 da media 5,1 totale calcolato Elenca esami 3 6 4 DET da ILF, 1 da media 5, 1 totale calcolato Totale FP 14 EQ FTR DET complessità FP Interroga professore 1 4 3 DET da ILF, 1 da bassa 3 Interroga corso 2 5 4 DET da ILF, 1 da Bassa 3 Interroga esame 3 5 4 DET da ILF, 1 da bassa 3 Totale FP 9 ITIS A. Volta Flavia Lollis pag. 6
Totale funzioni dati 26 Totale funzioni transazione 39 Totale FP 69 Supponiamo che il VAF calcolato per l applicazione con un valore di 1,1 otteniamo FPA = FP*VAF = 69*1,1 = 75,9 ITIS A. Volta Flavia Lollis pag. 7