Upload
meryle
View
43
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Metriken. Seminar Programmierstil, WS2002/03 Clemens Holzmann. Was 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 - PowerPoint PPT Presentation
Citation preview
Metriken
Seminar Programmierstil, WS2002/03
Clemens Holzmann
Was ist eine Metrik?
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 can‘t control what you can‘t 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.“
2/17
Nutzen von Metriken
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
3/17
Einsatz von Metriken (1)
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!
4/17
Einsatz von Metriken (2)
GQM (Goal-Question-Metric)- Ansatz
Pro
ject
Pla
n
Planning
Goal
Question
Metric
GoalAttainment
Answer
Measurement
Collected Data
Definition
Data Collection
Interpretation
[Wallmüller]
Zielorientiertes Messen5/17
Gütekriterien für Metriken
Objektivität Zuverlässigkeit Nützlichkeit Normierung Vergleichbarkeit Ökonomie Messtauglichkeit
Kein subjektiver Einfluss durch Prüfer möglich
Wiederholung liefert gleiche Ergebnisse
Messergebnisse erlauben Rückschluss auf Ausprägung der Qualitätseigenschaft
Es gibt eine Skala für die Messergebnisse
Messung mit geringen Kosten durchführbar
Mit anderen Maßen vergleichbar
Parktische Bedürfnisse werden erfüllt
6/17
Maßtheoretische Grundlagen
Absolutskala
Verhältnisskala
Intervallskala
Nominalskala
Ordinalskala
Kosten (Preis eines Moduls)
Anzahl an Codezeilen
Anwendungs-bereich
Eignung für kleine Unternehmen
Verfügbarkeit
f: reale Welt Zahlenbereich
Skalenhierarchie am Beispiel eines Softwaremoduls
Skala: Kalendertage
Skala: --, -, o, +, ++ Skala: EURO
Skala: Logistik, Personal,Rechnungswesen
Skala: nicht-negativeganze Zahlen
7/17
Klassifikation von Metriken
Prozess-Metriken
Software-Metriken
Zeitverbrauch
Produkt-Metriken
Häufigkeit bestimmterEreignisse
Ressourcen-verbrauch
statisch dynamisch
objektorientiertkonventionell
Umfangsmetriken
LogischeStrukturmetriken
Stilmetriken
Datenstruktur-Metriken
Aggregations-hierarchien
Klassenebene
Vererbungs-hierarchien
Methodenebene
8/17
EingabenAbfragenAusgabenDatenbeständeReferenzdaten
Beispiele für Metriken (1)
Function-Points-MetrikProduktanforderungen
Abfragen Ausgabedaten Datenbestände
einfachmittel
komplex
einfachmittel
komplex
einfachmittel
komplex
einfachmittel
komplex
Einflussfaktoren
Referenzdaten
einfachmittel
komplex
<1> Jede Anforderung kategorisieren
<2> Jede Anforderung klassifizieren
<3> Anforderungen ins Berechnungsformular eintragen
<4> Einflussfaktorenbewerten
<5> Bewertete FPs berechnen
<6> Aufwand ablesen
<7> Tabelle aktualisieren
<1>
<2> <2> <2> <2> <2>
<3> <3> <3> <3> <3>
<4>
<5>
<6>
FPs 30%
Prozessmetrik: Ressourcenverbrauch
[Fähnrich]
Eingabedaten
2*3+1*4+2*6 22
3
46
4
57
9/17
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
Beispiele für Metriken (2)Statische, konventionelle Produktmetriken: Umfangsmetriken
10/17
Umfang V = (N1+N2) * ld(n1+n2)n1,n2 Anzahl unterschiedl. Operatoren, OperandenN1,N2 Gesamtzahl verwendeter Operatoren, OperandenOperator kennzeichnet Aktionen (+, *, While, For, ...)Operand kennzeichnet Daten (Variablen, Konstanten, ...)
Beispiele für Metriken (3)
McCabe Programm wird als gerichteter Graph dargestellt Einfach zu berechnen Komplexität von Anweisungen unberücksichtigt
IF FOR
Sequenz Auswahl AbweisendeSchleife
V(g) = 1-2+2 = 1 V(g) = 4-4+2 = 2 V(g) = 3-3+2 = 2
V(g) = e – n + 2pe … Anzahl der Kantenn … Anzahl der Knotenp … Anz. verbundener Komponenten
V(g) = 1 + Anzahl der Binärverzweigungen
Bei nur einem Ein- und Ausgang
Allgemein
Statische, konventionelle Produktmetrik: Logische Strukturmetrik
T F
T F
V(g) = 1+0 = 1 V(g) = 1+1 = 2 V(g) = 1+1 = 2
11/17
Beispiele für Metriken (4)
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 AnweisungenWertzuweisung=1, Goto=5, Prozeduraufruf=1+Parameterzahl, While/For=3, …
EC ... Summe der Ausdruckskomplexitäten aller Ausdrücke+/- =1, MOD=3, Indizierung=2, AND/OR=3, MUL/DIV=2, Dereferenzierung=2, …
DC ... Summe der Datenkomplexitäten aller BezeichnerLokale Namen=1, Formale Parameter=2, Globale Variablen=3
Statische, konventionelle Produktmetrik: Struktur- und Umfangsmetrik12/17
Beispiele für Metriken (5)
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
+ m1()+ m2()
F G
A D
C E
B
H I
+ m4()+ m3()
J
Statische, objektorientierte Produktmetriken13/17
Werkzeugunterstützung
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, ...
Werkzeugbeispiel JStyle 4.614/17
WerkzeugunterstützungWerkzeugbeispiel JStyle 4.6
15/17
Fazit
Einsatzgebiete Überprüfung von Qualitätseigenschaften Aufwandsabschätzung sicherheitsbewusste Wiederverwendung
Noch geringe Verbreitung Vielzahl von Metriken Zielorientiertes Messen (z.B. GQM) Werkzeugeinsatz
16/17
Literatur
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“, 2002http://ais.informatik.uni-leipzig.de/studium/vorlesungen/
Hindel, Bernd: „Software-Metriken“, 1999http://www.methodpark.de/f-l_swepwue_de.html
JStyle Code-Review-Tool, Man-Machine-Systemshttp://www.mmsindia.com/jstyle.html
Lichter, Horst: „Software-Qualitätssicherung Vorlesung“, 2002http://www-lufgi3.informatik.rwth-aachen.de/LUFGI3/EDUCATION/SS02/VL_SQS/CELLS/index.html
17/17