Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Seminar Programmierstil, WS2002/03 Clemens Holzmann

Ähnliche Präsentationen


Präsentation zum Thema: "Seminar Programmierstil, WS2002/03 Clemens Holzmann"—  Präsentation transkript:

1 Seminar Programmierstil, WS2002/03 Clemens Holzmann
Metriken Seminar Programmierstil, WS2002/03 Clemens Holzmann

2 Was ist eine Metrik? Bedeutung des Messens
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.“

3 Nutzen von Metriken Ansatzpunkt für präventive Wartung
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

4 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!

5 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 Planning Data Collection [Wallmüller]

6 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

7 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, +, ++ Verfügbarkeit Skala: EURO Skala: Kalendertage

8 Klassifikation von Metriken
8/17 Software-Metriken Prozess-Metriken Produkt-Metriken Zeitverbrauch Häufigkeit bestimmter Ereignisse statisch dynamisch Ressourcen- verbrauch konventionell objektorientiert Umfangsmetriken Stilmetriken Vererbungs- hierarchien Aggregations- hierarchien Logische Strukturmetriken Datenstruktur- Metriken Methodenebene Klassenebene

9 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 3 einfach mittel komplex einfach mittel komplex 4 einfach mittel komplex einfach mittel komplex 4 5 6 7 <3> <3> <3> <3> <3> Eingaben Abfragen Ausgaben Datenbestände Referenzdaten 2*3+1*4+2*6 22 <4> [Fähnrich] Einflussfaktoren <5> FPs  30% <6>

10 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, ...)

11 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 Allgemein Sequenz Auswahl Abweisende Schleife 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) = = 1 V(g) = = 2 V(g) = = 2 V(g) = 1+0 = 1 V(g) = 1+1 = 2 V(g) = 1+1 = 2

12 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 der Anweisungskomplexitä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

13 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

14 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, ...

15 Werkzeugunterstützung
15/17 Werkzeugbeispiel JStyle 4.6

16 Fazit Einsatzgebiete Noch geringe Verbreitung Vielzahl von Metriken
16/17 Einsatzgebiete Überprüfung von Qualitätseigenschaften Aufwandsabschätzung sicherheitsbewusste Wiederverwendung Noch geringe Verbreitung Vielzahl von Metriken Zielorientiertes Messen (z.B. GQM) Werkzeugeinsatz

17 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 Hindel, Bernd: „Software-Metriken“, 1999 JStyle Code-Review-Tool, Man-Machine-Systems Lichter, Horst: „Software-Qualitätssicherung Vorlesung“, 2002


Herunterladen ppt "Seminar Programmierstil, WS2002/03 Clemens Holzmann"

Ähnliche Präsentationen


Google-Anzeigen