Ein Kunde wünscht sich Feature A, ein anderer Kunde kann die Software ohne das noch zu entwickelnde Feature B nicht weiterhin einsetzen und droht ansonsten abzuspringen. Der Alltag der Software-Entwicklung wird oft durch die Kundenanforderungen getrieben, die zum Teil ungefiltert in die Entwicklungsabteilung gegeben werden. Wir nennen dies mal ganz provokant „Featuritis“.

Durch dieses Vorgehen wächst die Software sehr schnell. Aufgrund der vielen neuen Features bleibt kaum Zeit für Aufräumarbeiten und sonstigen Refactoring-Maßnahmen. Die Folge ist, dass wichtige technische Strukturanpassungen an der Software nicht durchgeführt werden und sie Schritt für Schritt weniger wartbar und instabiler wird. Dennoch werden weiterhin neue Features implementiert – Es wird sozusagen mit der stumpfen Axt weitergearbeitet.

Die Dauer, die für die Implementierung neuer Features benötigt wird sowie die Anzahl der dadurch verursachten neuen Software-Fehler steigt an und sorgt für Unruhe bei den Kunden, den Führungskräften und den Software-Entwicklern. An dieser Stelle wird erfahrungsgemäß oft von den Software-Entwicklern eine Neu-Entwicklung der gesamten Software gefordert. „Wir müssen nochmal von Grund auf neu anfangen“, heißt es dann. Als Alternative bietet sich jedoch auch eine Sanierung der bestehenden Software an.

Die Software-Sanierung hat das Ziel, dass Erweiterungen und Änderungen an der Software wieder mit einem vertretbaren Aufwand umgesetzt werden können. Dabei können bereits durch einfache Refactoring-Maßnahmen (z.B. das Umbenennen von Variablen, das Extrahieren von Spaghetti-Code in Methoden) die ersten Erfolge eingefahren werden. Diese sorgen dafür, dass der Quellcode besser von den Entwicklern verstanden werden kann und stellt somit die Grundlage für weitere Sanierungs-Maßnahmen dar. Für die weitergehende Sanierung der Software bieten sich unterschiedliche Methoden an, die unter „Wie gehen wir vor?“ beschrieben werden.

Der Frage, ob eine Sanierung oder Neu-Entwicklung der Software sinnvoll ist, wird unter „Sanieren oder neu entwickeln?“ auf den Grund gegangen.