L’Ingegneria del Software non studia le leggi quantitative della fisica, ma processi e prodotti legati ad attività umane.
Non è possibile effettuare misure assolute, ma è necessario ricorrere a misure indirette.
Negli ultimi trent’anni molti studiosi hanno tentato di sviluppare una singola metrica che offrisse una misura globale della complessità del software.
Fenton paragona questi tentativi alla ricerca del “sacro Graal” …
La misurazione del software ha lo scopo di assegnare un valore ad un attributo caratterizzante un processo o prodotto software
Sebbene molte aziende produttrici di software utilizzino procedure di misurazione, l’uso sistematico della misurazione del software non è ancora una pratica comune
Metrica: misura quantitativa del grado di possesso di uno specifico attributo da parte di un sistema, un componente, o un processo [IEEE Std 610.12-1990: IEEE Standard Glossary of Software Engineering Terminology]
Es: numero di linee di codice di un modulo, numero di casi d’uso di un’applicazione, …
Molto spesso, metrica è usato come sinonimo di misura o misurazione;
La definizione di metrica include procedure e modalità di misurazione.
La Misurazione è il processo mediante il quale si assegnano numeri o simboli ad attributi di entità del mondo reale in modo tale da descriverle secondo regole chiaramente definite [Fenton].
Una misura è una funzione che mappa un insieme di oggetti in un altro insieme di oggetti (tipicamente numeri o insiemi di numeri, ma anche simboli).
Spesso i termini metrica e misura (e anche misurazione) sono usati come sinonimi.
Dai testi classici della misura.
Una misura è una empirica oggettiva assegnazione di un numero (o simbolo) ad una entità al fine di caratterizzarne uno specifico attributo.
Un tentativo di distinzione:
Una metrica caratterizza con valori (numericamente o con simboli) attributi semplici;
Una misura è una funzione di metriche che può essere usata per valutare o predire attributi più complessi.
Misura diretta: la misura di un attributo che non dipende da quella di altri attributi.
Misura indiretta: la misura di un attributo che dipende da quella di almeno un altro attributo.
Metriche: tutto ciò per cui possiamo fare misure dirette
Misure dirette • Metriche
Misure: tutto ciò per cui dobbiamo fare misure indirette
Misure indirette • f(metriche)
- ad attributi semplici sono associate le metriche;
- ad attributi complessi sono associate le misure.
Entità di interesse per la misurazione nella IS sono:
Una Scala di valori è l’insieme:
• dei numeri / simboli da assegnare ad un attributo di un’entità
• delle relazioni tra tali numeri / simboli
Esistono 5 tipologie di scala:
1. Nominale
La relazione tra i valori consente una semplice classificazione degli oggetti della misurazione, ma non ci indica nulla sulla relazione fra di essi.
Esempio:
la classificazione degli errori di programmazione in lessicali, sintattici e semantici ci consente di suddividerli ma non di sapere se un errore sia più o meno grave di un altro;
In termini più analitici questo tipo di scala coincide con l’introduzione nell’insieme di partenza di classi di equivalenza.
2. Ordinale
Si introduce una relazione d’ordine fra gli oggetti, per cui si è in grado di determinare le posizioni relative degli oggetti (cioè dire se uno venga prima di un altro);
Non si è però in grado di quantificare la distanza fra gli oggetti;
Esempio:
in una scala di valutazione (sufficiente, buono, ottimo) possiamo dire che buono è peggiore di ottimo ma non di sufficiente.
3. Intervalli:
Si è in grado di misurare la distanza fra gli oggetti del dominio, e non solo posizionarli tra di loro come con le scale ordinali
Esempio:
la classificazione del rendimento scolastico con “6″, “8″ e “10″ in sostituzione di “sufficiente”, “buono” e “ottimo”, rispettivamente, consente non solo di dire che “6″ precede “8″, ma anche di quanto.
4. Ratio
Introduce l’elemento zero che rappresenta l’assenza totale dell’attributo che si sta misurando nell’entità sottoposta a misurazione. L’introduzione dello zero, inoltre, conferisce al valore di un attributo il senso di positività, negatività o nullità.
Esempio:
la misura di una temperatura, quantificata con un numero maggiore, minore, o uguale a zero.
5. Assoluta
Esiste una strategia di conteggio per la quale possiamo assegnare ad ogni oggetto un numero univocamente determinato.
La scala assoluta è usata per quegli attributi di un oggetto che richiedono un semplice conteggio di elementi.
Esempio:
si consideri l’entità “studente” e si voglia quantificare il suo attributo “numero di esami superati”. La misura in questo caso consiste nel semplice conteggio degli esami superati da uno studente; il totale conteggiato rappresenta lo studente in esame, visto attraverso l’attributo “numero di esami superati”.
Che tipo di metriche si possono usare in fase di analisi?
Metriche basate sulle funzionalità
Metriche per la qualità delle specifiche.
Per stimare la dimensione finale del codice:
Studi hanno rilevato una correlazione tra FP e numero di LOC, variabile a seconda del linguaggio di programmazione.
Es.
COBOL: 1 FP -> 100 LOC
PL1: 1FP -> 80 LOC
OO lang: 1 FP ->60 LOC
Per stimare lo sforzo (in ore/uomo) di sviluppo:
Es. se 1 mese/uomo ->12 FP, allora …
Per valutare la completezza del testing
studi hanno misurato la correlazione fra FP e numero di difetti scoperti durante il testing.
Sono stati proposti alcuni attributi di qualità dello SRS (non ambiguità, completezza, correttezza, comprensibilità, verificabilità, coerenza interna ed esterna, realizzabilità, concisione, tracciabilità, modificabilità, precisione e riusabilità).
Un metodo per valutare tali attributi:
Metriche analoghe sono proposte per tutti gli altri attributi di qualità dell’SRS.
Si concentrano sulle caratteristiche dell’architettura del software, non tenendo conto della struttura interna dei singoli moduli.
Si basano sull’analisi di modelli di progetto nei quali si evidenziano i moduli del sistema (qualora esso sia scomponibile) e i dati che vengono scambiati tra essi.
Molto semplici da misurare, ma poco affidabili in quanto a legame con lo sforzo effettivo legato allo sviluppo del sistema.
Architectural design metrics (applicabili a moduli di architetture gerarchiche)
Henry e Kafura (HK) metric: complessità architetturale vista come funzione del fan-in e fan-out dei moduli.
Morphology metrics (Fenton): una funzione del numero dei moduli e del numero delle interfacce tra i moduli.
Peculiarità Sistemi O-O
Metriche di Chidamber and Kemerer [A Metrics Suite for Object-Oriented Design, 1994]:
WMC è la somma pesata dei metodi di una classe
Il peso di un metodo è dato da un fattore di complessità a scelta.
Distanza massima di un nodo (una classe) dalla radice dell’albero rappresentante la struttura ereditaria.
Maggiore è la profondità della classe nella gerarchia, maggiore è il numero di metodi che essa può ereditare, rendendo più complesso predire il suo comportamento.
Alberi di ereditarietà con elevata profondità possono aumentare la complessità del progetto (più classi e metodi sono coinvolti).
Maggiore è la profondità di una classe in una gerarchia, maggiore è il riuso potenziale dei metodi ereditati.
Ma i metodi della superclasse devono essere nuovamente testati per ciascuna sottoclasse.
Numero di sottoclassi, figlie di una super-classe.
Al crescere del NOC, cresce il livello di riuso (NOC è dunque un indicatore di Riuso) …
Al crescere del NOC, cresce la quantità di test case necessari a testare ogni figlia.
Insieme dei metodi che possono essere potenzialmente eseguiti in risposta ad un messaggio ricevuto da un oggetto della Classe.
Include l’insieme dei metodi della classe e di tutte le classi a cui essa invia messaggi.
RFC è un indicatore del ‘volume’ di interazione fra classi.
A valori elevati di RFC:
aumenta la complessità progettuale della classe;
cresce lo sforzo per il testing.
Numero di collaborazioni di una classe, ovvero numero di altre classi cui essa è accoppiata.
L’accoppiamento può avvenire a seguito di lettura/modifica attributi, chiamata metodi, instanziazione oggetti;
Eccessivo accoppiamento è negativo per la modularità ed il riuso;
Maggiormente indipendente è una classe più facilmente è riusabile;
Per migliorare la modularità, l’accoppiamento va tenuto al minimo; esso influisce sull’impatto di modifiche in altri moduli;
Valori elevati del CBO complicano testing e modifiche.
La coesione di un metodo esprime la proprietà di un metodo di accedere in maniera esclusiva ad attributi della classe.
La Mancanza di Coesione deriva dalla presenza di più metodi che accedono ad attributi comuni.
Se ogni attributo è acceduto da un solo metodo, allora LCOM=0 (massima coesione dei metodi).
Altrimenti, LCOM >0 ed aumenta quanto più i metodi vanno ad operare sugli stessi attributi, rendendo quindi difficile il controllo di tutte le interazioni tra i metodi dovuti all’uso degli attributi comuni.
Quindi se LCOM è elevato, i metodi potrebbero essere molto accoppiati tra loro attraverso gli attributi, ed aumenta la complessità del design della classe.
2. Ciclo di Vita e Processi Software
3. Processi per lo sviluppo rapido del software
4. Sviluppo Agile del Software
5. Test Driven Development (TDD)
7. Component Based Software Engineering (CBSE): Generalità
8. Component Based Software Engineering (CBSE): Il processo di svi...
9. Ingegneria del Software orientato ai Servizi
10. Ingegnerizzazione dei Servizi
11. I Processi di Manutenzione del Software
12. Reengineering, Refactoring e Reverse Engineering del Software
13. Verifica e Convalida del Software. Richiami e concetti di base ...
14. Tecniche di Testing Dinamico
15. Testing di Sistemi Object Oriented
16. Automazione del testing e Analisi Mutazionale
17. Tecniche di Analisi Statica del codice e il Debugging
18. Stima dei costi nei progetti Software
19. Il Modello COCOMO per la stima dei costi Software – La gestio...
20. Gestione e Miglioramento dei Processi di Produzione del Softwar...
21. La Valutazione della Qualità dei Processi Software – Il Capa...