Title: Metriken
1Metriken
- Seminar Programmierstil, WS2002/03
- Clemens Holzmann
2Was ist eine Metrik?
2/17
- Bedeutung des Messens
- Spielt in allen Ingenieursdisziplinen eine
wichtige Rolle -
- Wichtig für die Qualitätssicherung von Software
- Definitionen für Software-Metriken
- IEEE Standard 1061
-
- Ian Sommerville (Software Engineering)
-
To measure is to know (J.C.Maxwell) You cant
control what you cant measure (Tom de Marco)
Eine Softwarequalitätsmetrik ist eine Funktion,
die eine Software-Einheit in einen Zahlenwert
abbildet. Dieser berechnete Wert ist
interpretierbar als der Erfüllungsgrad einer
Qualitätseigenschaft der Software-Einheit.
Eine Softwaremetrik ist jede Art von Messung,
die sich auf ein Softwaresystem, einen Prozess
oder die dazugehörige Dokumentation bezieht.
3Nutzen von Metriken
3/17
- Ansatzpunkt für präventive Wartung
- Softwareentwicklung wird vorhersagbarer
- Test- und Wartungsaufwand beurteilen
- Ergänzung der Programmierrichtlinien
- Schwachstellen identifizieren
- Kundenanforderungen überprüfbar machen
- Erzieherischer Effekt auf den Programmierer
4Einsatz von Metriken (1)
4/17
- Probleme in der Praxis
- Nutzen von Metriken oft unklar
- Fehlen von Standards
- Programmierer wehren sich dagegen
- Durchführung von Messungen
- Messgrößen werden definiert und Messwerte
gesammelt - Welche Ziele verfolgt man?
- Messwerte werden analysiert, interpretiert und
beurteilt - Gibt es eine Bewertungsskala?
- Gefahr von schwer interpretierbaren
Zahlenfriedhöfen - Zielorientiertes Messen!
5Einsatz von Metriken (2)
5/17
Zielorientiertes Messen
- GQM (Goal-Question-Metric)- Ansatz
Goal
Goal Attainment
Question
Answer
Project Plan
Metric
Measurement
Definition
Interpretation
Collected Data
Planning
Data Collection
Wallmüller
6Gütekriterien für Metriken
6/17
- Objektivität
- Zuverlässigkeit
- Nützlichkeit
- Normierung
- Vergleichbarkeit
- Ökonomie
- Messtauglichkeit
Kein subjektiver Einfluss durch Prüfer möglich
Wiederholung liefert gleiche Ergebnisse
Parktische Bedürfnisse werden erfüllt
Es gibt eine Skala für die Messergebnisse
Mit anderen Maßen vergleichbar
Messung mit geringen Kosten durchführbar
Messergebnisse erlauben Rückschluss auf
Ausprägung der Qualitätseigenschaft
7Maßtheoretische Grundlagen
7/17
Skalenhierarchie am Beispiel eines Softwaremoduls
f reale Welt ? Zahlenbereich
Anzahl an Codezeilen
Anwendungs-bereich
Absolutskala
Skala nicht-negative ganze Zahlen
Skala Logistik, Personal, Rechnungswesen
Verhältnisskala
Intervallskala
Ordinalskala
Nominalskala
Eignung für kleine Unternehmen
Kosten (Preis eines Moduls)
Skala --, -, o, ,
Verfügbarkeit
Skala EURO
Skala Kalendertage
8Klassifikation von Metriken
8/17
Software-Metriken
Prozess-Metriken
Produkt-Metriken
Zeitverbrauch
Häufigkeit bestimmter Ereignisse
statisch
dynamisch
Ressourcen- verbrauch
objektorientiert
konventionell
Aggregations- hierarchien
Umfangsmetriken
Stilmetriken
Vererbungs- hierarchien
Logische Strukturmetriken
Datenstruktur- Metriken
Klassenebene
Methodenebene
9Beispiele für Metriken (1)
9/17
Prozessmetrik Ressourcenverbrauch
lt1gt Jede Anforderung kategorisieren lt2gt Jede
Anforderung klassifizieren lt3gt Anforderungen ins
Berechnungsformular eintragen lt4gt
Einflussfaktoren bewerten lt5gt Bewertete FPs
berechnen lt6gt Aufwand ablesen lt7gt Tabelle
aktualisieren
Produktanforderungen
lt1gt
Abfragen
Ausgabedaten
Datenbestände
Referenzdaten
Eingabedaten
lt2gt
lt2gt
lt2gt
lt2gt
lt2gt
einfach mittel komplex
einfach mittel komplex
einfach mittel komplex
einfach mittel komplex
einfach mittel komplex
3
4
4
5
6
7
lt3gt
lt3gt
lt3gt
lt3gt
lt3gt
231426
22
Eingaben Abfragen Ausgaben Datenbestände Referenzd
aten
?
Fähnrich
lt4gt
Einflussfaktoren
lt5gt
FPs ? 30
lt6gt
10Beispiele für Metriken (2)
10/17
Statische, konventionelle Produktmetriken
Umfangsmetriken
- LOC (lines of code)
- ? Starke Korrelation mit anderen Maßen
- ? Komplexität von Anweisungen und
Ablaufstrukturen unberücksichtigt, abhängig von
Programmierstil/ -sprache - Halstead
- ? Komplizierte Ausdrücke sowie viele verschiedene
Variablen berücksichtigt - ? Schwer messbar, Ablaufstrukturen
unberücksichtigt
Umfang V (N1N2) ld(n1n2) n1,n2 Anzahl
unterschiedl. Operatoren, Operanden N1,N2 Gesamtza
hl verwendeter Operatoren, Operanden Operator kenn
zeichnet Aktionen (, , While, For,
...) Operand kennzeichnet Daten (Variablen,
Konstanten, ...)
11Beispiele für Metriken (3)
11/17
Statische, konventionelle Produktmetrik Logische
Strukturmetrik
- McCabe
- Programm wird als gerichteter Graph dargestellt
- ? Einfach zu berechnen
- ? Komplexität von Anweisungen unberücksichtigt
Abweisende Schleife
Sequenz
Allgemein
Auswahl
V(g) e n 2p e Anzahl der Kanten n
Anzahl der Knoten p Anz. verbundener Komponenten
IF
FOR
T
F
T
F
Bei nur einem Ein- und Ausgang
V(g) 1 Anzahl der
Binärverzweigungen
V(g) 4-42 2
V(g) 3-32 2
V(g) 1-22 1
V(g) 10 1
V(g) 11 2
V(g) 11 2
12Beispiele für Metriken (4)
12/17
Statische, konventionelle Produktmetrik
Struktur- und Umfangsmetrik
- Rechenberg
- ? Detailliert, betrachtet viele verschiedene
Aspekte - ? Schwer zu berechnen, nicht intuitiv verständlich
CC SC EC DC Gesamtkomplexität
SC ... Summe der Anweisungskomplexitäten aller
Anweisungen Wertzuweisung1, Goto5,
Prozeduraufruf1Parameterzahl, While/For3,
EC ... Summe der Ausdruckskomplexitäten aller
Ausdrücke /- 1, MOD3, Indizierung2, AND/OR3,
MUL/DIV2, Dereferenzierung2,
DC ... Summe der Datenkomplexitäten aller
Bezeichner Lokale Namen1, Formale Parameter2,
Globale Variablen3
13Beispiele für Metriken (5)
13/17
Statische, objektorientierte Produktmetriken
- Objektorientierte Metriken
- CBO (coupling between objects)
- Anzahl der Klassen, mit denen eine Klasse
gekoppelt ist - CBO(A)4
- DIT (depth of inheritance tree)
- Maximaler Weg von der Wurzel bis zur betrachteten
Klasse - DIT(A)0, DIT(G)1, DIT(H)2
- NOC (number of children)
- Anzahl der direkten Unterklassen
- NOC(A)2, NOC(B)0, NOC(F)3
- RFC (response for a class)
- Anzahl der Methoden, die potentiell ausgeführt
werden können, wenn Objekt auf eingehende
Nachricht reagiert - RFC(A)4, RFC(B)0, RFC(C)1
A
D
B
m1() m2()
C
E
m4()
m3()
F
G
H
I
J
14Werkzeugunterstützung
14/17
Werkzeugbeispiel JStyle 4.6
- Code-Review
- Automatische Analyse des Sourcecodes
- Namenskonventionen, Designfehler, Redundanz, ...
- Skriptsprache zum Definieren eigener Regeln
- Beautifier mit umfangreichen Einstellmöglichkeiten
- Metriken
- Berechnung einer Vielzahl von Sourcecode-Metriken
- Projekt-Level Anzahl an Klassen,
Kommentardichte, ... - Klassen-Level DIT, RFC, WMC, ...
- Methoden-Level LOC, Halstead, McCabe, ...
- Diagramme zur Darstellung von Metriken
- Balken-, Torten- und Streudiagramm, Summenkurve,
Box-Plot, ...
15Werkzeugunterstützung
15/17
Werkzeugbeispiel JStyle 4.6
16Fazit
16/17
- Einsatzgebiete
- Überprüfung von Qualitätseigenschaften
- Aufwandsabschätzung
- sicherheitsbewusste Wiederverwendung
- Noch geringe Verbreitung
- Vielzahl von Metriken
- Zielorientiertes Messen (z.B. GQM)
- Werkzeugeinsatz
17Literatur
17/17
- Rechenberg, Peter Ein neues Maß für die
softwaretechnische Komplexität von Programmen - Informatik Forschung und Entwicklung, Band 1,
1986. - Sommerville, Ian Software-Engineering
- Addison-Wesley, 2001
- Wallmüller, Ernest SW-Qualitätsmanagement in
der Praxis. - Hanser, 2001
- Fähnrich, Klaus-Peter Software-Management
Vorlesung, 2002 - http//ais.informatik.uni-leipzig.de/studium/vorl
esungen/ - Hindel, Bernd Software-Metriken, 1999
- http//www.methodpark.de/f-l_swepwue_de.html
- JStyle Code-Review-Tool, Man-Machine-Systems
- http//www.mmsindia.com/jstyle.html
- Lichter, Horst Software-Qualitätssicherung
Vorlesung, 2002