swk vortrag metriken

Post on 14-Apr-2017

210 Views

Category:

Software

0 Downloads

Preview:

Click to see full reader

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