Fixing the Water Leak with H2O – Predictive Maintenance für SonarQube
Wartungsbudget ist in der Regel ein knappes Gut. Wie kann man es im Projektalltag effizient einsetzen? Die „Fixing the Water Leak“-Methode versucht, das Entstehen technischer Schulden schon beim Schreiben von Quellcode zu verhindern. Dies funktioniert gut für neuen Code, durch enge Qualitätskriterien oder etwa harte Quality Gates für neue Klassen. Bei der Wartung von bestehendem Code hingegen hilft dieser Ansatz nur begrenzt.
Hier sind auch qualitative Kriterien, wie sie in Tools wie SonarQube verwendet werden, nur bedingt anwendbar. Denn die Entscheidung, ob und in welchem Umfang technische Schulden aufgelöst werden sollten, ist immer abhängig vom jeweiligen Kontext. Hier ist vor allem ausschlaggebend, ob die technischen Schulden in den betroffenen Klassen im weiteren Verlauf noch negative Auswirkungen haben. Dies geschieht meistens dann, wenn Änderungen an Klassen durch die technischen Schulden komplexer und aufwendiger werden oder durch Code Smells ausgelöste Missverständnisse zu unerwünschten Ergebnissen führen können.
Mit „Change Prediction“ kann man in diesem Fall bessere Ergebnisse erzielen. Über die Vorhersage, welche Klassen sich in näherer Zukunft ändern werden und welche nicht, können die Code Smells und Issues ausgewählt werden, die nicht nur qualitativ relevant sind, sondern bei deren Behebung man mit großer Wahrscheinlichkeit auch in der Wartung besonders profitieren wird. Somit geht die Wartung Hand in Hand mit zukünftigen erwarteten Anpassungen an den Klassen und bereitet diesen den Weg.
Im Vortrag stellen wir das OpenSource-Projekt SonarIssueScoring vor, welches Issues aus SonarQube mit einer ergänzenden Bewertung versieht, um eine effiziente Auswahl von Issues zu unterstützen. Diese Bewertung, der „Desirability-Score“, setzt sich aus zwei Komponenten zusammen:
Zum einen der funktionalen Bewertung auf Basis der strukturellen Eigenschaften einer Klasse (u.a. Alter, Abhängigkeiten) und der SonarQube-Metriken (u.a. Severity, Effort). Zum anderen der Vorhersage der Änderungswahrscheinlichkeit der betroffenen Klasse. Diese wird auf Basis einer Analyse des Code-Repository mit einem H2O-Modell berechnet. Dabei wird analysiert, welche Faktoren in der commit-Historie Änderungen an bestimmten Klassen bzw. Typen von diesen ausgelöst haben und das entstehende Modell auf den aktuellen Stand des Repository angewandt. Die resultierende Vorhersage der Änderungswahrscheinlichkeit wird anschließend genutzt, um den funktionalen Score zu gewichten.
Im Ergebnis bekommt man so eine erweiterte und aufgewertete SonarQube-Analyse, die eine effizientere Steuerung der Wartungsaktivitäten ermöglicht. Neben den technischen Grundlagen stellen wir im Vortrag unsere Erfahrungen bei der Erarbeitung und Erprobung des Konzeptes, u.a. durch die Analyse eines laufenden Wartungsprojektes, vor und geben einen Ausblick auf mögliche Erweiterungen des Konzeptes.
Fortgeschritten
Zeit
12:15-13:00
04. Juli
Raum
Raum "Paris"
Themengebiet
Clean Code
ID
Do2.4