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.

Björn Meschede
Björn Meschede

Björn Meschede ist Senior Berater bei der viadee IT-Unternehmensberatung. Als Software Engineer und Projektleiter hat er die Herausforderung, sauberen...


Hauke Husstedt
Hauke Husstedt

Hauke Husstedt ist Berater bei der viadee IT-Unternehmensberatung. Mit seiner Masterarbeit bei der viadee hat er den konzeptionellen Grundstein für das...

45 Minuten Vortrag

Fortgeschritten

Zeit

12:15-13:00
04. Juli


Raum

Raum "Paris"


Themengebiet

Clean Code


ID

Do2.4

Zurück

Copyright © 2019 HLMC Events GmbH