Metriken im Qualitätsmanagement im Rahmen des Seminars Qualitätsmanagement in der Softwaretechnik SS 2004 Christian Mertens
Metriken im Qualitätsmanagement Gliederung Grundlagen der Software-Messung Für das QM relevante Metriken Praxiseinsatz Zusammenfassung
Grundlagen der Software-Messung Begriffsbestimmung Metrik = „Funktion, die eine Softwareeinheit in einen Zahlenwert abbildet“ (IEEE-Definition) Maß = Messwert (Zahlenwert) = Ergebnis der Messung hier: Metrik = Maß
Grundlagen der Software-Messung Ziele des Metrik-Einsatzes im QM Forderung nach hochwertigen, fehlerfreien Software-Produkten (besonders bei sicherheitskritischer SW) Fehler keine Ausnahme, sondern Regelfall Quantifizierung durch Metriken „What get's measured get's done.“ „You can't control what you can't measure.“ Ziele: Fehler und Missstände früh erkennen & ausbessern Vergleichsmöglichkeiten schaffen Aufwands- & Kostenschätzung
Grundlagen der Software-Messung Forderungen an Metriken Objektivität, Reproduzierbarkeit Vergleichbarkeit Gültigkeit, Sensitivität, Robustheit Einfachheit, Nützlichkeit angemessener Aufwand Rechtzeitigkeit Analysierbarkeit Statistiken, automatisierte Verarbeitung
Grundlagen der Software-Messung Maßtypen c) b) d) e) f) für bestimmte Zwecke angepasste Maße (z.B. Objektorientierung, Wiederverwendung)
Metriken im Qualitätsmanagement Gliederung Grundlagen der Software-Messung Für das QM relevante Metriken Linguistische Maße Strukturelle Maße Systemmaße Zuverlässigkeitsmaße Prozessmaße Maße der Software-Wiederverwendung Praxiseinsatz Zusammenfassung
Für das QM relevante Metriken a) Linguistische Maße statische Code-Messung ohne Berücksichtigung der Code-Struktur Messung von Umfang, Komplexität, Fehlerraten einfache Maße: Lines of Code (LOC) Statement Count Token Count Dateigröße Problem: Subjektivität (Wie wird gezählt?) Vergleichbarkeit?
Für das QM relevante Metriken a) Linguistische Maße Halstead-Metriken: Metriksystem von 1977 Basis-Größen: n1 Anzahl der unterschiedlichen Operatoren n2 Anzahl der unterschiedlichen Operanden N1 Gesamtzahl der verwendeten Operatoren N2 Gesamtzahl der verwendeten Operanden n = n1+n2 Größe des verwendeten Vokabulars N = N1+N2 Länge der Implementierung abgeleitete Größe: zu erwartende Programmlänge: N' N' = n1 · log2n1 + n2 · log2n2
Für das QM relevante Metriken a) Linguistische Maße Halstead-Metriken (2): Beispielmethode in Java void changeSize(int n) { if (n > this.n) { Object[] temp = array; array = new Object[n]; for (int i = 0; i < anfang; i++) array[i] = temp[i]; for (int i = n-1; i >= ende+n-this.n; i--) array[i] = temp[i-(n-this.n)]; ende = ende+n-this.n; this.n = n; for (int i = anfang; i < ende; i++) array[i] = null; }
Für das QM relevante Metriken a) Linguistische Maße Halstead-Metriken (3): Basis-Größen: Vokabular n = 29 Programmlänge N = 114 Operatoren n1 Verwendungen N1 () 6 {} 2 [] 7 int 4 this. 5 ... ; 13 = 10 n1 = 20 N1 = 70 Operanden n2 Verwendungen N2 changeSize 1 temp 3 array 5 anfang 2 ende 4 n 13 i 14 n2 = 9 N2 = 44 abgeleitete Größe: N' = 20 · log220 + 9 · log29 = 115
Für das QM relevante Metriken a) Linguistische Maße Halstead-Metriken (4): weitere abgeleitete Größen: Programmgröße in Bits: G = N · log2n (im Beispiel: 554) zu erwartende Fehler: F = G/3000 (im Beispiel: 0,18) potenzielle Programmgröße (bei optimaler Sprache): G* = (N1+N2) · log2(n1+n2) = (2+N2) · log2(2+n2) (im Beispiel: 249) Schwierigkeitsgrad (Eignung der verwendeten Sprache): S = G/G* (im Beispiel: 2,22) Aufwand: A = S · G = G/G* · G = G²/G* (im Beispiel: 1230) quadratischer Anstieg mit der Programmgröße Ansatz für Modularisierung
Metriken im Qualitätsmanagement Gliederung Grundlagen der Software-Messung Für das QM relevante Metriken Linguistische Maße Strukturelle Maße Systemmaße Zuverlässigkeitsmaße Prozessmaße Maße der Software-Wiederverwendung Praxiseinsatz Zusammenfassung
Für das QM relevante Metriken b) Strukturelle Maße statische Analyse der inneren Struktur eines Programms Messung von Komplexität einfache Maße: Live Variables durchschnittliche „lebendige Variablen“ pro Anweisung „lebendig“ = zwischen erster & letzter Referenz Variablenspanne Mittelwert aller Spannen aller Variablen In welchen Abständen treten die Variablen im Code auf? Abstand z.B. gemessen in LOC
Für das QM relevante Metriken b) Strukturelle Maße Zyklomatische Zahl (McCabe-Metrik): weit verbreitetes Komplexitätsmaß von 1976 basiert auf Kontrollflussgraphen Annahme: Test- & Wartbarkeit eines Programms abhängig von Anzahl der Ablaufpfade Z = V – K + 2·T V: Anzahl der Kanten des Graphen K: Anzahl der Knoten des Graphen T: Anzahl der unverbundenen Teile des Graphen
Für das QM relevante Metriken b) Strukturelle Maße Zyklomatische Zahl (McCabe-Metrik) (2): Beispiel-Kontrollflussgraphen
Für das QM relevante Metriken b) Strukturelle Maße Zyklomatische Zahl (McCabe-Metrik) (3): Anhaltspunkt für die benötigte Zahl an Testfällen beim Zweigüberdeckungstest Richtwert für die Modularisierung McCabes Empfehlung: Modul für Z > 10 in mehrere Teilmodule aufteilen einfach zu berechnen, in Praxis sehr gebräuchlich
Metriken im Qualitätsmanagement Gliederung Grundlagen der Software-Messung Für das QM relevante Metriken Linguistische Maße Strukturelle Maße Systemmaße Zuverlässigkeitsmaße Prozessmaße Maße der Software-Wiederverwendung Praxiseinsatz Zusammenfassung
Für das QM relevante Metriken c) Systemmaße Messung der Interaktionen & Zusammenhänge einzelner Programmteile / Module Messung der Gesamtkomplexität eines Systems weit verbreitet: fan-in/fan-out-Metrik (für Prozeduren) fan-in = lokale Datenflüsse in die Prozedur hinein + von der Prozedur benutzte, globale Datenstrukturen fan-out = lokale Datenflüsse aus der Prozedur heraus + durch die Prozedur veränderte, globale DS Komplexität einer Prozedur: PK = L · (fan-in)² · (fan-out)² L = Länge der Prozedur (z.B. in LOC gemessen)
Für das QM relevante Metriken c) Systemmaße MMC-Metrik von Harrison / Cook: MMC = „Macro-Micro-Complexity“ Mikro-Komplexität einer Systemkomponente i: Makro-Komplexität: Gi = Anzahl der in Komponente i verwendeten globalen Variablen Pi = Anzahl der in Komponente i verwendeten Parameter Di = „Dokumentations-Index“ für Komponente i (z.B. Anteil der Kommentarzeilen an den LOC) n = Gesamtzahl der Komponenten des Systems
Metriken im Qualitätsmanagement Gliederung Grundlagen der Software-Messung Für das QM relevante Metriken Linguistische Maße Strukturelle Maße Systemmaße Zuverlässigkeitsmaße Prozessmaße Maße der Software-Wiederverwendung Praxiseinsatz Zusammenfassung
Für das QM relevante Metriken d) Zuverlässigkeitsmaße dynamische Beobachtung der Fehleranfälligkeit im Zeitablauf einfache, intuitive Metriken Mean Time Between Failure (MTBF) Ausfallrate = Verfügbarkeit = Mean Time To Repair während des Software-Entwicklungsprozesses durch Simulationen & Testläufe ermittelt im laufenden Betrieb für Prognosezwecke messen
Metriken im Qualitätsmanagement Gliederung Grundlagen der Software-Messung Für das QM relevante Metriken Linguistische Maße Strukturelle Maße Systemmaße Zuverlässigkeitsmaße Prozessmaße Maße der Software-Wiederverwendung Praxiseinsatz Zusammenfassung
Für das QM relevante Metriken e) Prozessmaße Messung der Entwicklung von Produktmetriken im Zeitablauf Analyse & Optimierung des SW-Entwicklungsprozesses Phasen, beteiligte Personen, ... Erstellen von Statistiken: Entwicklung der Fehlermeldungen im Zeitablauf Verteilung der Fehlerentdeckung auf die verschiedenen Phasen erforderlicher Zeitaufwand für die Fehlerbehebung in den einzelnen Phasen Schwere der Fehler, die in einer bestimmten Phase entdeckt werden Ziele: Aufdecken von Schwachstellen in der Prozesskette sinnvolle Aufteilung von Testressourcen auf die Phasen der Entwicklung (frühe Fehlerentdeckung & -behebung) Aufstellen von Prognosen SW-Entwicklung nicht nur effektiv, sondern auch effizient gestalten!
Metriken im Qualitätsmanagement Gliederung Grundlagen der Software-Messung Für das QM relevante Metriken Linguistische Maße Strukturelle Maße Systemmaße Zuverlässigkeitsmaße Prozessmaße Maße der Software-Wiederverwendung Praxiseinsatz Zusammenfassung
Für das QM relevante Metriken f) Maße der Software-Wiederverwendung Produkt- & Prozessmaße mit Berücksichtigung der Software-Wiederverwendung Wiederverwendungslevel = Anteil WV-Komponenten an Gesamtsoftware ökonomische Metriken: Wiederverwendungseinfluss = Produktivitätssteigerung durch WV Kosten-Nutzen-Untersuchungen Break-Even-Analysen ROI-Modelle Relative Cost of Reuse (RCR) meist: 0,03 < RCR < 0,25 Relative Cost of Writing for Reuse (RCWR) meist: 1 < RCWR < 2,2 Anpassung bestehender Metriken durch RCR & RCWR
Metriken im Qualitätsmanagement Gliederung Grundlagen der Software-Messung Für das QM relevante Metriken Praxiseinsatz Zusammenfassung
Praxiseinsatz Voraussetzungen Qualitätsnorm DIN EN ISO 9001: Forderung zur Messung, Analyse, Überwachung, Verbesserung der Produkte und Prozesse regelmäßige Messungen im Rahmen der ISO 9001-Zertifizierung Überwachung der Wirksamkeit der Messungen Objektivität, Reproduzierbarkeit Gültigkeit, Sensitivität, Robustheit Einfachheit, Nützlichkeit Rechtzeitigkeit Analysierbarkeit zielgerichtetes & systematisches Auswählen der einzusetzenden Metriken Sind Anforderungen erfüllt? Einsatz einer Gruppe von Metriken Anpassung, ggf. Eigenentwicklung von Metriken Einsatz während des gesamten Entwicklungsprozesses Messaufwand darf gewonnenen Nutzen nicht übersteigen!
Praxiseinsatz Vorgehen Messziele bestimmen, Messaufgaben ableiten Metriken & Auswertungsmodelle auswählen Messplan aufstellen Daten sammeln & validieren Messwerte analysieren und interpretieren Ergebnisse zielgerecht nutzen verwendete Metriken verbessern / anpassen Automatisierungsmöglichkeiten nutzen! Werkzeugeinsatz In welchen Phasen des Entwicklungsprozesses sind welche Messungen durchzuführen?
Praxiseinsatz Auswertung & Nutzung der Ergebnisse Visualisierung z.B. durch Kiviat-Diagramm
Praxiseinsatz Auswertung & Nutzung der Ergebnisse Auswertung durch statistische Methoden z.B. Regressionsanalyse Auswertung durch Erfahrungswissen Auswertungsmodelle: Daten brauchbare Ergebnisse z.B.: Zykl. Zahl & Halstead Modularisierung? Multimetriken Multifaktormodelle Zusammenfassung interdependenter Metriken zielgerechte Nutzung z.B. für Modularisierung, Verteilung von Testressourcen, ... Akzeptanz der Messungen bei allen Beteiligten Bewertung und Vergleiche einzelner Mitarbeiter nicht förderlich
Praxiseinsatz Werkzeugunterstützung Automatisierung statischer Codeanalyse automatische Erfassung dynamischer Daten ggf. schrittweise Einführung von Messungen und Werkzeugen integrierte, unternehmensweite Messung einheitlicher Werkzeugeinsatz kleine Hilfsprogramme umfangreiche Messwerkzeuge Mess-Komponenten in Entwicklungstools
Praxiseinsatz Werkzeugunterstützung kleine Hilfsprogramme oft auf Kommandozeilenbasis für kleinere Ad-Hoc-Messungen geeignet z.B.: C and C++ Code Counter (Open Source)
Praxiseinsatz Werkzeugunterstützung umfangreiche Messwerkzeuge ganzheitliches Qualitätsmanagement Produkt- & Prozessüberwachung z.B.: SEER-SEM (Galorath)
Praxiseinsatz Werkzeugunterstützung Mess-Komponenten in Entwicklungstools Datenerfassung direkt durch das Entwicklungstool Produkt- & Prozessmetriken z.B.: Together Control Center Quality Suite (Borland) 55 Qualitätsmetriken für Java & C++
Metriken im Qualitätsmanagement Gliederung Grundlagen der Software-Messung Für das QM relevante Metriken Praxiseinsatz Zusammenfassung
Metriken im Qualitätsmanagement Zusammenfassung Einsatz von Metriken im QM notwendig Anforderungen an Software-Maße Vielzahl verschiedener Metriken geeignete Maße auswählen & anpassen Einsatz während des gesamten Entwicklungsprozesses Werkzeugunterstützung, Automatisierung Mess-Aufwand muss sich immer lohnen!
Vielen Dank für die Aufmerksamkeit. Fragen?