swk vortrag metriken
Post on 14-Apr-2017
210 Views
Preview:
TRANSCRIPT
Software Qualitätsmetriken
alexander.michehl@gmail.com
Inhalt
1.Anlass
2.Einspruch!
3.Alte Metriken
4.Bessere Metriken?
5.Neue Metriken
6.Durchführung
7.Vorläufiges Fazit
1.Anlass
● Iterative Entwicklung● „Wie verändert sich die Qualität unserer
Software pro Iteration? Wie können wir das ausdrücken?“
➔ Qualitätsmetriken
2.Einspruch!
● Metrik = Quantität → Quantität <> Qualität● Früher: LOC = Produktivität
3.Alte Metriken
● Anzahl Bugs● Anzahl Tests● Anzahl Warnungen● Testabdeckung
3.Alte Metriken
● Anzahl Bugs● Anzahl Tests● Anzahl Warnungen● Testabdeckung➔ Alle nutzlos, da ambivalent
4.Bessere Metriken?
1.Programmierstil
2.Programmstruktur
3.Wartbarkeit
4.Performance
5.Produktivität pro Iteration
6.Testqualität
4.Bessere Metriken?
1.Programmierstil● Mittel: Codeanalyse auf Basis fester Regeln
(Programmierkonventionen)● Ergebnis: Anzahl Verstoße gegen Regeln● Aussage: Werden Konventionen eingehalten?
4.Bessere Metriken?
1.Programmierstil● Mittel: Codeanalyse auf Basis fester Regeln
(Programmierkonventionen)● Ergebnis: Anzahl Verstoße gegen Regeln● Aussage: Werden Konventionen eingehalten?➔ ABGELEHNT, obsolet durch automatische
Refactorings
4.Bessere Metriken?
2.Programmstruktur● Mittel: Strukturelle Codeanalyse● Ergebnis: Anzahl bestimmter
Programmierartefakte● Aussage: Architektur in Ordnung?
4.Bessere Metriken?
2.Programmstruktur● Mittel: Strukturelle Codeanalyse● Ergebnis: Anzahl bestimmter
Programmierartefakte● Aussage: Architektur in Ordnung?➔ ABGELEHNT, da Absolutwerte, die i.d.R. nur
steigen
4.Bessere Metriken?
3.Wartbarkeit● Mittel: „Maintainability Index“
MAX(0, (171-5.2*ln(H)-0.23*C-16.2*ln(L)*100/171)● Ergebnis: Codeanalyse-Ergebnisse miteinander
korreliert● Aussage: Ist der Code einfach wartbar?
4.Bessere Metriken?
3.Wartbarkeit● Mittel: „Maintainability Index“
MAX(0, (171-5.2*ln(H)-0.23*C-16.2*ln(L)*100/171)● Ergebnis: Codeanalyse-Ergebnisse miteinander
korreliert● Aussage: Ist der Code einfach wartbar?➔ OK, trotz öffentlicher Zweifel
4.Bessere Metriken?
4.Performance● Mittel: Dauer von Testdurchläufen messen● Ergebnis: Geschwindigkeit jedes Tests● Aussage: Wurde durch ein neues Feature
bestehende Funktionalität verlangsamt?
4.Bessere Metriken?
4.Performance● Mittel: Dauer von Testdurchläufen messen● Ergebnis: Geschwindigkeit jedes Tests● Aussage: Wurde durch ein neues Feature
bestehende Funktionalität verlangsamt?➔ OK, leider schwer umsetzbar
4.Bessere Metriken?
5.Produktivität pro Iteration● Mittel: Implementierte Features & gelöste Bugs
pro Iteration zählen● Ergebnis: Anzahl abgeschlossener Aufgaben● Aussage: Gibt es Fortschritt?
4.Bessere Metriken?
5.Produktivität pro Iteration● Mittel: Implementierte Features & gelöste Bugs
pro Iteration zählen● Ergebnis: Anzahl abgeschlossener Aufgaben● Aussage: Gibt es Fortschritt?➔ ABGELEHNT, da Aufwand von Aufgabe zu
Aufgabe variiert
4.Bessere Metriken?
6.Testqualität● Mittel: Testabdeckung● Ergebnis: Testabdeckung pro Projekt, reduziert
auf Testdurchläufe aus dazugehörigem Testprojekt
● Aussage: Machen wir TDD richtig?
4.Bessere Metriken?
6.Testqualität● Mittel: Testabdeckung● Ergebnis: Testabdeckung pro Projekt, reduziert
auf Testdurchläufe aus dazugehörigem Testprojekt
● Aussage: Machen wir TDD richtig?➔ OK
5.Neue Metriken
Maintainability Index
Testabdeckung
Testperformance
Codeanalyse auf Basis fester Regeln
Strukturelle Codeanalyse (absolute Zahlen)
Implementierte Features
Gelöste Bugs
6.Durchführung
● Von Hand?● Erfassung: Schwer, da untersch. Plugins● Analyse: Schwer, da untersch. Ausgabeformate➔ Automatisierung selbst programmieren!
7.Vorläufiges Fazit
● Qualität <> Quantität● Manuelle Reviews weit besser
Eigene Erfahrungen?Fragen?
top related