Post on 18-Aug-2019
Wie können Softwaremetriken tatsächlich
das Entwicklerleben verbessern?
Dr. Andreas Arnold (andreas.arnold@andrena.de)Dr. Joachim Melcher (joachim.melcher@andrena.de)
Entwicklertag Karlsruhe, 9. Mai 2012
Metriken - Der erste Ansatz
I Idee: Software-Metriken könnten für Projekt nützlich seinI Umsetzung:
I viele Metriken werden automatisiert berechnetI Unsicherheit, was damit nun anzufangen istI keine abgeleiteten Handlungen
I Konsequenz: Metriken werden nach kurzer Zeit ignoriert
9. Mai 2012 2
Was sind Software-Metriken?
I statische Code-Analyse
I Grundlage Quelltext (bzw. abgeleiteter Kontroll-/Daten�ussgraph)
I Quanti�zierung einer internen Eigenschaft anhand konkreterRegeln
I eigentlich Interesse an externen Eigenschaften
I Software-Metrik als Indikator für externe Eigenschaft
I Abhängigkeit muss durch Experiment gezeigt werden (in der Praxisoft vernachlässigt!)
9. Mai 2012 3
Was können Metriken?
I Vergleich über die Zeit oder mit anderen Projekten
I Indikator für Entwicklungstendenz bzw. aktuellen Zustand
I Hinweis auf mögliche Problemstellen
I Feststellen von Handlungsbedarf
I aber auch: Argumentationsgrundlage für Entwickler gegenüberManagement
9. Mai 2012 4
Es gibt viele MetrikenAuswahl einiger Metriken
I Lines of Code (LOC)
I zyklomatische Komplexität (McCabe)
I Depth of Inheritance Tree (DIT)
I Number of Children (NOC)
I Response For a Class (RFC)
I Weighted Methods per Class (WMC)
I Coupling Between Objects (CBO)
I Lack of Cohesion in Methods (LCOM)
9. Mai 2012 5
Es gibt viele MetrikenMögliche Klassi�kation
I traditionellI GröÿenmetrikenI Komplexitätsmetriken
I objekt-orientiertI MethodenebeneI KlassenebeneI Vererbungshierarchie
9. Mai 2012 6
Entscheidungskriterien
I Einfachheit (einfach zu messen/verstehen)
I Handlung ableitbar (einfach zu reparieren)
I Robustheit (Zusammenhang zwischen Metriken)
9. Mai 2012 7
Sinnvolle MetrikenISIS/USUS-Metriken
I Testabdeckung
I Anzahl Pakete in Zyklen
I Average Component Dependency
I Anzahl Methoden mit zyklomatische Zahl gröÿer 5
I Anzahl Klassen mit mehr als 20 Methoden
I Anzahl Methoden mit mehr als 15 LOC
I Anzahl Compiler-Warnungen
9. Mai 2012 9
Weniger sinnvolle MetrikenLines of Code (LOC)
I Problem der eindeutigen De�nitionI KommentarzeilenI Zeilenumbrüche
I LOC und Funktionsumfang stehen in keinem direkten VerhältnisI Code-Duplizierung (Copy & Paste)I ine�ziente ImplementierungI Refactoring kann Wert bei gleichem Funktionsumfang verringern
I Konsequenz: keine wirkliche Aussagekraft für Qualität
Aber: Anzahl Codezeilen pro Methode ist eine durchaus sinnvolle Metrik!
9. Mai 2012 10
Integration in ProzessContinuous Build Server vs Integration in IDE
Continuous Build (ISIS)
I Historisierung der Änderungen
I langfristiger Erfolg wird sichtbar
Integration in IDE (USUS)
I Entwickler kann Problemstellen lokalisieren
I Entwickler sieht Erfolg der Änderung
9. Mai 2012 14
Integration in ProzessBroken Window E�ect
Visualisierung der Metriken
I Erfolg messbar
I Erfolg sofort sichtbar
I ISIS: Historisierung
I USUS: sofortiger Erfolg
I Burndown-Chart: Fortschritt
9. Mai 2012 15
Integration in ProzessMaÿnahmen
I TDD + PP + CI + XP einsetzen
I Refactoring gezielt einsetzen
I Code-Konventionen nutzen
I Retrospektive: Probleme adressieren
9. Mai 2012 16
MetrikenWas bringen sie?
I Verstand benutzen
I Spaÿ beim Entwickeln
I Feedback für den Entwickler!
9. Mai 2012 17