Codeballast über Bord?! Erfahrungen aus der Identifikation von nutzlosem Code und dem Umgang damit

Dr. Tobias Roehm

Since this post accompanies a talk in German, it is written in German, too.

Koordinaten

Zusammenfassung

Viele historisch gewachsene Systeme sammeln über die Jahre Code an, den niemand mehr braucht und der deshalb nutzlos ist. Ein Grund dafür ist beispielsweise, dass bereits implementierte Anforderungen obsolet werden und der Code, der diese Anforderungen implementiert, in der Codebasis verbleibt. Da meist unbekannt ist, welcher Code nutzlos ist, verursacht er oft Kosten ohne Wert zu stiften: Er erhöht Wartungsaufwände, da er bei querschnittlichen Änderungen unnötig mitgewartet wird. Und er verteuert Migrationen wenn er migriert aber nicht gebraucht wird. Deshalb ist es wünschenswert, nutzlosen Code zu kennen und diese unnützen Aufwände einzusparen.

 

In diesem Vortrag stellen wir drei statische und dynamische Analyseansätze vor, die wir in den letzten Jahren bei der Analyse von Kundensystemen und im Rahmen von Forschungsarbeiten entwickelt haben: Wir haben basierend auf statischer Unerreichbarkeit nicht ausführbare und damit nutzlose Programme identifiziert; basierend auf den statischen Codeeigenschaften Stabilität und Dezentralität nutzlose Klassen erkannt; und basierend auf der Aufzeichnung von Codeausführung auf mehreren Produktivsystemen Code gefunden, der mehrere Jahre nicht ausgeführt wurde. Jeder Analyseansatz wurde an einer oder mehreren realen Anwendungen erprobt und die Analyseergebnisse zusammen mit dem Entwicklungsteam evaluiert. Wir stellen die Ergebnisse im Vortrag vor. Da keine der Analysen nutzlosen Code zweifelsfrei erkennen kann, skizzieren wir wie mit dieser Unsicherheit in der Praxis umgegangen werden kann und wie Herausforderungen bei der Interpretation der Analyseergebnisse adressiert werden können. Schließlich beschreiben wir konkrete Handlungsoptionen zum Umgang mit nutzlosem Code bei Migration und Wartung.