Der Begriff Legacy-Software wird häufig mit einer Reihe von Problemen verbunden, die den Betrieb und die Weiterentwicklung der Systeme aufwändig und die Benutzung unattraktiv machen. Wir unterscheiden zwischen fachlichen und ursächlichen Problemen. Fachliche Probleme werden von Benutzer:innen unmittelbar wahrgenommen, führen zu Unzufriedenheit bei der Benutzung bis hin zum Anbieterwechsel. Ursächliche Probleme sind technische, organisatorische oder Verfügbarkeitsprobleme, die von Entwickler:innen oder Administrator:innen unmittelbar und von Benutzer:innen mittelbar als fachliche Probleme wahrgenommen werden. So ist das technische Problem schlechte Wartbarkeit ursächlicher Natur und wird auf fachlicher Ebene als unzureichende Funktionalität wahrgenommen.
Fachliche Probleme
Funktionalität: Die Software unterstützt die Geschäftsprozesse nur noch unzureichend. Die Anpassung der Software an geänderte und neue Geschäftsprozesse ist aufwändig und teuer und erfolgt nur noch, wenn dies unbedingt notwendig ist. In der Folge verschlechtert sich die Funktionalität immer mehr mit der Gefahr, dass das System mittelfristig nutzlos wird.
Kosten: Hohe Kosten für Wartung und Betrieb sind eines der größten Probleme von Legacy-Systemen. Kosten entstehen im Wesentlichen durch Änderungsdruck, der sich nicht trivial abbauen lässt.
Sicherheit: Die Software unterstützt die gestiegenen Sicherheitsanforderungen nicht mehr.
Performance: Die Anwendung ist langsam, die Latenz- und Antwortzeiten sind hoch. Ladezeiten sind zu lang, die UI reagiert schleppend und die Backend-Verarbeitung oder Datenbank-Queries dauern zu lange.
Rechtliche Vorgaben: Neuere oder geänderte rechtliche Vorgaben, z.B. Vorgaben für die Datenhaltung, werden nicht mehr erfüllt und lassen sich nicht einfach umsetzen.
Ausfallsicherheit: Es kommt vermehrt zu Ausfällen. Datenbestände werden inkonsistent oder gehen verloren. Die Anzahl der Support-Fälle nimmt zu und Benutzende werden zunehmend unzufrieden.
Usability: Benutzungsoberfläche und UX-Workflows sind nicht mehr zeitgemäß. Die Benutzenden empfinden das Arbeiten mit dem System als langsam, umständlich und wenig modern.
Robustheit: Die Anwendung ist anfällig für Fehler und wenig tolerant gegenüber technischen Problemen, wie z.B. kurzzeitigem Internet-Ausfall oder der Nichtverfügbarkeit der Datenbank. Mangelnde Robustheit führt neben Unzufriedenheit auch zu einer Verlangsamung der "normalen" Entwicklungsgeschwindigkeit, da Entwickler:innen immer wieder für das Beheben technischer Probleme von ihrer geplanten Entwicklungstätigkeit abgezogen werden.
Ursächliche Probleme
Wartbarkeit: Ist das am häufigsten genannte technische Problem von Legacy-Systemen. Schlechte Wartbarkeit heißt, dass sich das System nur sehr schwer ändern und erweitern lässt. Änderungen sind schwer zu implementieren, da häufig die Ansatzpunkte fehlen und jede Änderung zu Regressionen führt. Die typischen Gründe für schlechte Wartbarkeit sind schlechte Codequalität, enge Kopplung, unzureichende Modularisierung, ein nicht mehr passender Architekturstil und fehlende Testautomatisierung.
Entwicklungs-Skills: Fehlende Entwicklungs-Skills bezeichnet das Problem, dass die für die Weiterentwicklung benötigten Expert:innen nur schwer zu finden sind. Der Grund dafür ist häufig die Verwendung veralteter Technologien, wie z.B. COBOL. Ein anderer Grund ist, dass die im Legacy-Umfeld verwendeten Technologie wenig attraktiv für jüngere Entwickler:innen sind.
Betrieb: Der Aufwand für den Betrieb der Software ist hoch und der Betrieb der Software ist teuer. Deployments werden manuell durchgeführt, sind zeitaufwändig und risikobehaftet. Sichere Rollbacks sind nicht möglich. Die Fehlersuche nach fehlgeschlagenen Deployments ist aufwändig und führt zu längeren Downtimes. In der Folge finden Deployments nur selten und außerhalb der Betriebszeiten statt.
Skalierbarkeit: Die Anwendung ist gar nicht oder nur schlecht skalierbar. Die Nutzerzahlen sind über die Jahre gestiegen, so dass die fehlende Skalierbarkeit zu einer von den Endanwender:innen wahrgenommenen schlechten Performance führt.
Dokumentation: Weder fachliche noch technische Dokumentation ist vorhanden. Dadurch werden Änderungen und Erweiterungen schwieriger, was sich negativ auf Wartbarkeit und in der Folge auf unzureichende Funktionalität im Sinne von schlecht unterstützen Geschäftsprozessen auswirkt.
Anbieter-Support: Der Support für verwendete Bibliotheken, Betriebssysteme oder Programmiersprachen läuft aus. Während sich der Austausch von Bibliotheken noch mit relativ überschaubarem Aufwand umsetzen lässt, erzeugen Plattformwechsel oder die Umstellung auf eine andere Programmiersprache deutlich höheren Aufwand.
Hardware-Unterstützung: Die genutzte Hardware ist veraltet und lässt sich nicht mehr neu beschaffen. Ausfälle der bestehenden Hardware sind mit extremem Risiko behaftet.