230 likes | 653 Views
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
E N D
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 • 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.“
Nutzen 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
Einsatz 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!
Einsatz 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 Data Collection Planning [Wallmüller]
Gü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
Maßtheoretische Grundlagen 7/17 Skalenhierarchie am Beispiel eines Softwaremoduls f: reale Welt Zahlenbereich Anwendungs-bereich Anzahl an Codezeilen 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, +, ++ Skala: EURO Verfügbarkeit Skala: Kalendertage
Klassifikation von Metriken 8/17 Software-Metriken Prozess-Metriken Produkt-Metriken Zeitverbrauch Häufigkeit bestimmter Ereignisse statisch dynamisch Ressourcen- verbrauch konventionell objektorientiert Aggregations- hierarchien Umfangsmetriken Stilmetriken Vererbungs- hierarchien Logische Strukturmetriken Datenstruktur- Metriken Methodenebene Klassenebene
Beispiele für Metriken (1) 9/17 Prozessmetrik: Ressourcenverbrauch • Function-Points-Metrik <1> Jede Anforderung kategorisieren <2> Jede Anforderung klassifizieren <3> Anforderungen ins Berechnungsformular eintragen <4> Einflussfaktoren bewerten <5> Bewertete FPs berechnen <6> Aufwand ablesen <7> Tabelle aktualisieren Produktanforderungen <1> Eingabedaten Abfragen Ausgabedaten Datenbestände Referenzdaten <2> <2> <2> <2> <2> einfach mittel komplex einfach mittel komplex einfach mittel komplex einfach mittel komplex einfach mittel komplex 3 4 4 5 6 7 <3> <3> <3> <3> <3> 2*3+1*4+2*6 22 Eingaben Abfragen Ausgaben Datenbestände Referenzdaten [Fähnrich] <4> Einflussfaktoren <5> FPs 30% <6>
Beispiele 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 = (N1+N2) * ld(n1+n2) n1,n2 Anzahl unterschiedl. Operatoren, Operanden N1,N2 Gesamtzahl verwendeter Operatoren, Operanden Operator kennzeichnet Aktionen (+, *, While, For, ...) Operand kennzeichnet Daten (Variablen, Konstanten, ...)
Beispiele 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-4+2 = 2 V(g) = 3-3+2 = 2 V(g) = 1-2+2 = 1 V(g) = 1+1 = 2 V(g) = 1+1 = 2 V(g) = 1+0 = 1
Beispiele 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 derAnweisungskomplexitäten aller Anweisungen Wertzuweisung=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 Bezeichner Lokale Namen=1, Formale Parameter=2, Globale Variablen=3
Beispiele 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 B A D + m1() + m2() C E + m3() + m4() F G H I J
Werkzeugunterstü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, ...
Werkzeugunterstützung 15/17 Werkzeugbeispiel JStyle 4.6
Fazit 16/17 • Einsatzgebiete • Überprüfung von Qualitätseigenschaften • Aufwandsabschätzung • sicherheitsbewusste Wiederverwendung • Noch geringe Verbreitung • Vielzahl von Metriken • Zielorientiertes Messen (z.B. GQM) • Werkzeugeinsatz
Literatur 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/vorlesungen/ • 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 http://www-lufgi3.informatik.rwth-aachen.de/LUFGI3/EDUCATION/SS02/VL_SQS/CELLS/index.html