Misurazioni - Dipartimento di Matematica

Misurazione del software
Misurazione del software
IS
Misurazione del software
IS
Scienza e misura
Misurazione
del software

IS
Finalità della misura

Rendere oggettivi i risultati degli esperimenti effettuati

Avere dati da cui ricavare modelli matematici

L’oggettività della misura implica ripetibilità, confronto,
confidenza
Ingegneria del Software

V. Ambriola, G.A. Cignoni,
C. Montangero, L. Semini
Aggiornamenti di: T. Vardanega (UNIPD)
1/39
Dipartimento di Informatica, Università di Pisa
Misurazione del software
IS
Limiti intrinseci della misura

Approssimazione nella misura di realtà fisiche

Astrazione nella misura di valutazione o di stima
Dipartimento di Informatica, Università di Pisa
Misurazione del software
IS
Misurare

Un’attività quotidiana




Misurare per conoscere

Misurare per giudicare

L’effetto di semplificazione e imprecisione
Misura e metrica

Grandezze fisiche: massa, lunghezza, velocità …
Grandezze economiche: prezzi, indici (inflazione, PIL, AEX), ..
Di tutto di più: gradimento, reddito, caratteristiche fisiche, …
Misurazione





UniPD - 2013/14 - Ingegneria del Software mod. B
2/39
Processo che assegna numeri o simboli ad attributi di entità
del mondo reale per descriverle secondo regole definite
Misura
Risultato della misurazione
Assegnazione empirica e oggettiva di un valore (numerico o
simbolo) a un’entità per caratterizzarne un attributo specifico
Metrica = insieme di regole

Dipartimento di Informatica, Università di Pisa
3/39
Per fissare le entità da misurare, gli attributi rilevanti, l’unità
di misura, la procedura per assegnare e interpretare i valori
Dipartimento di Informatica, Università di Pisa
4/39
1
Misurazione del software
Misurazione del software
IS
Indicatori

Per caratteristiche difficilmente misurabili




Obiettivi della misurazione nel SW

La misura desiderata può essere ottenuta indirettamente a
partire da altre misure ottenute tramite stime o predizioni


Identificare gli attributi misurabili
Determinare gli indicatori per le caratteristiche non misurabili


Misura quantitativa del grado di possesso di uno specifico
attributo da parte di un sistema, componente, processo
5/39
Dipartimento di Informatica, Università di Pisa
Misurazione del software
IS

Strumenti di valutazione e controllo

Entità da misurare





Processi
Progetti
Prodotti
Risorse



Interni
Esterni
Dipartimento di Informatica, Università di Pisa
UniPD - 2013/14 - Ingegneria del Software mod. B
Importanza della misurazione

“Misura ciò che è misurabile e rendi misurabile ciò
che non lo è”
Lord William Thomson Kelvin (1824-1907)
“You can't control what you can't measure”

6/39
Galileo Galilei (1564-1642)
“If you cannot measure it, you cannot improve it”


misurabili rispetto alle entità
misurabili rispetto all’ambiente
7/39
Misurazione del software
IS

Categorie di attributi
Se necessario scegliere maggiore effetto per minor costo
Dipartimento di Informatica, Università di Pisa

insiemi correlati di procedure astratte
attività concrete legate a tempo e risorse
beni e servizi in uscita dai progetti
elementi impiegati e consumati dal progetto
In modo proattivo piuttosto che reattivo
Decidere quali azioni correttive intraprendere
Le metriche nella produzione

Progetti – stime, preventivi e consuntivi di costo e di tempo
Prodotti – qualità
Processi – qualità (capability, maturity), miglioramenti
Risorse – consumo
Interpretare, cogliere tendenze

Metrica secondo il glossario SWE di IEEE

Valutare lo stato di

Metriche usate per stimare caratteristiche

Misurazione del software
IS
Tom de Marco (1940, -) software engineering author
Dipartimento di Informatica, Università di Pisa
8/39
2
Misurazione del software
Misurazione del software
IS
Misurazione del software
IS
Processo di misurazione
 Strategie
 (Come

e discipline
ISO/IEC 15939 Software Measurement Process
Measurement Information Model: descrive i valori di misurazione da
produrre e le relazioni tra loro
 Measurement Process Model: descrive il processo di misurazione




misurare
Linee guida (p.es. Practical Software Measurement)
 Cosa
e perché
CMMI
9/39
Dipartimento di Informatica, Università di Pisa
Misurazione del software
IS
Secondo ISO 15939

definire) Cosa misurare

 Come
Come capire i bisogni informativi
“the information needs are based on goals, constraints, risks, and
problems which originate from the technical and mgmt processes”
CMMI suggerisce di determinarli nelle seguenti aree

Requirements Management

Design & Implementation

Verification & Validation (V&V)

Quality Assurance

Configuration Management

Project Management

Risk analysis & decision analysis

Training
11/39
Dipartimento di Informatica, Università di Pisa
Misurazione del software
IS
Esempio – 1
Visione globale di ISO/IEC 15939


Dipartimento di Informatica, Università di Pisa
UniPD - 2013/14 - Ingegneria del Software mod. B
10/39
Per i responsabili di progetto

Quale è il costo del processo?

Quale è la produttività degli sviluppatori?

Quale è la qualità dei prodotti?
Per gli sviluppatori

Quanto verificabili sono i requisiti?

Abbiamo rimosso tutti i difetti?

Abbiamo soddisfatto tutti i requisiti?
Dipartimento di Informatica, Università di Pisa
12/39
3
Misurazione del software
Misurazione del software
IS
Misurazione del software
IS
Un semplice modello di produttività
Lead time

Productivity
Metrica di project management

Cost
Personnel
Value
HW
Time
Quality
Reliability
Money
Quantity
Defects
Size
Resources
SW
Complexity
LT : lead time
Environmental
Constraints
WiP : work in progress
Problem
difficulty
Functionality
13/39
Dipartimento di Informatica, Università di Pisa
Misurazione del software
IS
Misura il tempo di calendario che intercorre tra un ordine di
sviluppo e la relativa consegna
Misurazione del software
IS
Esempio – 2 (CMMI level 2)

Requirements Management



Risk analysis

Configuration Management

Metriche software

Quanto le pratiche in uso aderiscono a quelle di riferimento
Quanto i prodotti del progetto soddisfano i requisiti
15/39
Dipartimento di Informatica, Università di Pisa
Problema aperto



Quali rischi gravano attualmente sul progetto e quanto

Il software è difficile da misurare
Il software ha caratteristiche multiformi
Le tecnologie cambiano rapidamente
L’ambiente di esecuzione ha una grande influenza

Quale è l’impatto di una data modifica
 Quale è il grado di integrità delle baseline di progetto





Project Management
Quanto sono affidabili i preventivi e quanto accurati i consuntivi
Quanto efficaci sono le misure correttive quando concretamente adottate
Tipi di metriche



Quality Assurance
Del prodotto in sé
Delle sue funzionalità
Del suo comportamento
quanto è grande
cosa deve fare
cosa succede e quando

Quanto le pratiche in uso aderiscono a quelle di riferimento
 Quanto i prodotti del progetto soddisfano le aspettative
Dipartimento di Informatica, Università di Pisa
UniPD - 2013/14 - Ingegneria del Software mod. B
14/39
Dipartimento di Informatica, Università di Pisa
16/39
4
Misurazione del software
Misurazione del software
IS
Misurazione del software
IS
Linee di codice sorgente (SLOC)

La metrica più intuitiva e più usata

Conteggio dei costrutti / comandi


Semplificato e adattato alle funzionalità degli editor

Usata per derivare informazioni di costo e produttività

Rapportata alla densità di commenti
Limiti

Dipendente da sintassi e potenza espressiva del linguaggio

Dipendente dallo stile di codifica
17/39
Dipartimento di Informatica, Università di Pisa
Misurazione del software
IS
Software Science – 2
Unità di misura
n1 = numero di operatori distinti usati dal programma
n2 = numero di operandi distinti usati dal programma
N1 = numero di occorrenze degli operatori
N2 = numero di occorrenze degli operandi
Per determinare (tra l’altro)
* La dimensione N di un programma
N = n1 log2 n1 + n2 log2 n2
tipicamente si ha N = (N1+N2)
* Il volume V di un programma
V = (N1+N2) log2 (n1+n2)
V varia al variare del linguaggio di programmazione
Halstead assegna un valore (livello) I come costante di linguaggio
Dipartimento di Informatica, Università di Pisa
19/39
ma la ricerca ha mostrato che essa dipende anche dal programmatore
Misurazione del software
IS
Software Science – 1
Complessità ciclomatica – 1

Maurice H. Halstead, Elements of Software Science,
Elsevier, 1977


Complessità del codice






Misura a posteriori (molto più facile che a priori!)
Controversa
Basata sul numero e sul tipo dei costrutti
Basata su elementi di psicologia cognitiva e statistica


UniPD - 2013/14 - Ingegneria del Software mod. B
Indipendente dal linguaggio di programmazione
Complessità del flusso di controllo

Adatta solo ai primi linguaggi di programmazione
Oggi è statisticamente inefficace
Dipartimento di Informatica, Università di Pisa


Limiti

Proposta da Thomas McCabe nel 1976
Funzione dei possibili cammini indipendenti all’interno di un
singolo sottoprogramma
Misurazione astratta di un attributo significativo del codice
Limiti

Fallibilità dimostrata

Costosa da applicare prima di progettare il codice in dettaglio

18/39
Nonostante ciò ancora largamente usata
Dipartimento di Informatica, Università di Pisa
20/39
5
Misurazione del software
Misurazione del software
IS
Misurazione del software
IS
Complessità ciclomatica – 2

Il valore rilevato va confrontato con soglie prefissate


Complessità ciclomatica – 4

P.es.: [1, 10] complessità bassa; [21, 50] complessità elevata;
[51, …) complessità inaccettabile

Corrisponde al numero di casi di prova necessari per
verificare ogni possibile esito di ogni ramo di
decisione della procedura

Misura la complessità del flusso di controllo ma non la complessità
del flusso dei dati

Il grado di fan-in e fan-out applicato ai dati può aiutare a stimare la
complessità del flusso dei dati

Meglio calcolarlo usando strumenti automatici
21/39
Dipartimento di Informatica, Università di Pisa
Misurazione del software
IS
Errore in difetto

La complessità reale è maggiore di quella misurata
Esempio: decisione, v(G)  6  5  2  3

Ma il codice sorgente è offuscato!
int _INT = 1; int INT_ =
0; int Int_ ( int _int )
{ if (_int == INT_) return
_INT; else
return _int
* Int_ ( _int – _INT ); }
Dipartimento di Informatica, Università di Pisa
Misurazione del software
IS
Complessità ciclomatica – 3

Definizione algebrica costruita sopra il grafo
di controllo G che descrive una procedura
v(G)  e  n  p
e
n
p

numero di percorsi lineari in G
numero degli archi (flusso)
numero dei nodi (espressioni o comandi)
numero delle componenti connesse da ogni
arco (p  2 per esecuzione sequenziale:
1 predecessore, 1 successore)
Esempio: sequenza, v(G)  3  4  2  1
Dipartimento di Informatica, Università di Pisa
UniPD - 2013/14 - Ingegneria del Software mod. B
22/39
23/39
Complessità ciclomatica – 5

Errore in eccesso


La complessità reale è inferiore
a quella misurata
Esempio, v(G)  10  2  2  4
 switch visto come una sequenza
di if annidati

v(G)  C  1

Dove C è il numero dei casi
Dipartimento di Informatica, Università di Pisa
24/39
6
Misurazione del software
Misurazione del software
IS
Misurazione del software
IS
Function Point – 1
Esempio
public void isValidSearchCriteria(SearchCriteria s) {
if(s!=null) {
return true;
} else {
CC = 2
return false;
}
}

Allan J. Albrecht e John E. Gaffney, IEEE TSE 1983

Non misura il software ma le sue entità logico-funzionali




Dimensione di progetto e di produttività in relazione ai requisiti funzionali
Indipendente dal linguaggio di programmazione
International Function Point User Group (IFPUG)
Conta le funzionalità differenziate per categorie e pesate in base ad
attributi del prodotto

Misurazioni diverse possono dare risultati diversi

Corrispondente interessante negli Use Case Points

tynerblain.com/blog/2007/02/12/software-cost-estimation-ucp-1/
Per approfondire: http://www.aivosto.com/project/help/pm-complexity.html
25/39
Dipartimento di Informatica, Università di Pisa
Misurazione del software
IS
Misurazione del software
IS
Probabilità di malfunzionamento
Osservazioni empiriche
Complessità ciclomatica
Dipartimento di Informatica, Università di Pisa
UniPD - 2013/14 - Ingegneria del Software mod. B
26/39
27/39
Dipartimento di Informatica, Università di Pisa
Function Point – 2
Componenti misurate
Definizione
External Input (EI)
Processo elementare a seguito del quale
dati entrano nella componente misurata
External Output (EO)
Processo elementare a seguito del quale
dati escono dalla componente
External Inquiry (EQ)
Processo elementare per il quale specifici
dati interni sono richiesti alla componente
e da essa emessi
Internal Logical File (ILF)
Gruppo di dati correlati interni alla
componente e alimentati tramite EI
External Interface File (EIF)
Gruppo di dati correlati esterni alla
componente e usati come riferimento
Dipartimento di Informatica, Università di Pisa
28/39
7
Misurazione del software
Misurazione del software
IS
Misurazione del software
IS
Function Point – 3
Standard per misure funzionali – 1

Complessità
Componente
Totale
Bassa
Media
Alta
EI
3
4
6
EO
4
5
7
EQ
3
4
6
ILF
7
 10
 15
EIF
5
7
 10
ISO/IEC 14143 – Functional size measurement




Concetti definiti





29/39
Dipartimento di Informatica, Università di Pisa
Misurazione del software
IS
Definire la terminologia del settore
Definire i criteri per valutare le metriche funzionali
Definire i criteri per accreditare i professionisti che le usano
Accuratezza di una misura funzionale
Accuratezza di una metrica funzionale
Ripetibilità e riproducibilità di una metrica funzionale
Soglia di sensibilità di una metrica funzionale
Applicabilità a un dominio funzionale
Misurazione del software
IS
Object point

Boehm et al., 1995, insieme a COCOMO 2.0

Conteggio delle componenti
Tipo
Screen
Report
3GL Component

semplice
1
2
-
medio
2
5
-
Standard per misure funzionali – 2

Le metriche tecniche dipendono dalla
tecnologia


difficile
3
8
10

Dipartimento di Informatica, Università di Pisa
UniPD - 2013/14 - Ingegneria del Software mod. B
Che è variabile nel tempo!
Utili come vista interna per stimare il costo di produzione
ISO/IEC 14143 (functional size measurement)
aiuta a orientarsi verso metriche funzionali


Fattore di aggiustamento rispetto alla
percentuale di riuso

Che possono fornire valori di misura più significativi
Utili come vista esterna per stimare il prezzo di vendita
La misurazione è resa indipendente dalla fase del progetto

30/39
31/39
Dipartimento di Informatica, Università di Pisa
A meno delle richieste esplicite di cambiamento
Dipartimento di Informatica, Università di Pisa
32/39
8
Misurazione del software
Misurazione del software
IS
Misurazione del software
IS
Misure interne ed esterne


Esempi di misure interne
Metrica per i metodi

Un metodo è sostanzialmente procedurale

Numero di requisiti, loro volatilità


Function Points, Use Case Points


Coesione, accoppiamento, fan-in / fan-out

SLoC, complessità ciclomatica

Livello di copertura delle prove

Si può usare McCabe come metrica di base
Corretta per tenere conto di interfacce e variabili locali
Complessità di un metodo
complessità dell’interfaccia del metodo
complessità delle variabili locali
complessità ciclomatica del codice
peso determinato statisticamente
Esempi di misure esterne

ISO/IEC 9126-1
33/39
Dipartimento di Informatica, Università di Pisa
Misurazione del software
IS
Misurazione del software
IS
Metriche per software OO

Metrica per le classi

Occorrono metriche dedicate
35/39
Dipartimento di Informatica, Università di Pisa
Complessità di una classe

Le metriche tradizionali non sono accurate
 Complessità funzionale e complessità strutturale
 Non linearità del codice


∑
La misura SLOC non funziona!
Uso di strutture e funzioni complesse

McCabe non funziona come misura assoluta!

Metriche per i metodi

Metriche per le classi

Metriche per i sistemi
Dipartimento di Informatica, Università di Pisa
UniPD - 2013/14 - Ingegneria del Software mod. B
∑
∑
34/39
complessità dell’interfaccia della classe
complessità locale
complessità locale esterna
complessità locale interna
complessità degli attributi locali
complessità dei metodi locali
costante o CC di classe attributo
peso determinato statisticamente
Dipartimento di Informatica, Università di Pisa
36/39
9
Misurazione del software
Misurazione del software
IS
IS
Metrica per i sistemi

Proprietà della metrica per le classi




Considera solo la parte locale della classe
Considera la complessità dell’uso delle classi negli attributi
Riferimenti

T.J. McCabe, “A Complexity Metric”, IEEE Trans. on
Software Engineering, 1976

A.J. Albrecht, J.E. Gaffney. “Software Function, […]:
A Software Science Validation”, IEEE Trans. on
Software Engineering, 1983

N.E. Fenton, S.L. Pfleeger, “Software Metrics: A
Rigorous & Practical Approach, II Ed., Int. Thompson
Computer Press, 1997

B. Boehm et al., “Cost Models for Future Software Life
Cycle Processes: CoCoMo II”, http://sunset.usc.edu/
Complessità del sistema
Metriche utilizzabili come fattori d’influenza
NC
NRC
NLC
Numero totale di classi
Numero di classi radice
Numero di classi foglia
37/39
Dipartimento di Informatica, Università di Pisa
Misurazione del software
Dipartimento di Informatica, Università di Pisa
39/39
Misurazione del software
IS
Qualità delle metriche

Precisione

In termini di esattezza e ripetibilità rispetto ai valori prodotti




SLOC e McCabe
FP
sì
no (questione di maturità)
Aderenza alla realtà

La misura corrisponde all’evidenza sperimentale

Quando le metriche sono usate come indicatori
Accuratezza

Corrispondenza con la percezione o la realtà effettiva
Dipartimento di Informatica, Università di Pisa
UniPD - 2013/14 - Ingegneria del Software mod. B
38/39
10