Fertig?
Eine Applikation ist schnell mal geschrieben. Dann ist sie fertig. Dann ist sie fertig? Dann beginnt erst das eigentliche Problem, nämlich die Applikation auf aktuellem Stand zu halten. Dies trifft besonders auf Business-Applikationen zu, deren Funktion oft über viele Jahre erhalten und an die aktuellen Anforderungen angepasst werden soll. Macht man das nicht, so verrottet sie langsam und Rufe werden laut, sie von Grund auf neu zu schreiben. Das versuchen wir aus mehreren Gründen zu vermeiden, die wir aber an dieser Stelle nicht ausführen wollen. Vielmehr stellen wir die Frage, warum Applikationen oft nicht auf modernem Stand gehalten werden.
- Ein Grund ist, dass Applikationen oft in Projekten entwickelt werden. Ein Projekt hat definitionsgemäß einen Anfang und ein Ende. Wenn das Projekt zu Ende ist, ist die Applikation nach Ansicht vieler Verantwortlicher fertig. Das Projektteam wird in eine Wartungsorganisation umgewandelt, die zwingend notwendige Features ergänzt. Technische Modernisierung wird hintangestellt.
- Manch ein/e Entwickler:in oder Architekt:in hat vielleicht Ideen, was man verbessern könnte, aber nachdem die Applikation ja “funktioniert” und “fertig” ist, ist kein Budget für grundlegende Änderungen vorhanden.
- Architekturen sind teilweise aufgebaut wie ein Kristall. Maximale Wiederverwendung von Code, ungebrochene Abhängigkeitsgraphen, wunderschön anzusehen. Doch bricht man einen Teil heraus, zersplittert das Werk in tausend Teile. Man kann nicht einen Teil ändern, ohne dass man alles ändert. Teilweise oder iterative Modernisierung ist in solchen Architekturen nicht möglich.
- Oft ist auch die Testabdeckung gering und wenn auch das Wissen über Designentscheidungen und Zusammenhänge verloren geht, so traut sich niemand mehr tiefer in den Code einzugreifen. Statt strukturellen Anpassungen werden Rucksäcke gebaut, die Komplexität steigt und immer mehr Abhängigkeiten kommen ins System.
- Vielfach fehlt auch eine langfristige Strategie, in welche Richtung sich eine Applikation verändern soll. Was bedeutet “besser” konkret? Wie kann ich messen, ob eine Änderung das System verbessert hat? Nachdem man nicht weiß, wohin man gehen soll, bleibt man stehen.
Je länger Systeme in solchem Zustand verharren, desto schwieriger wird eine Modernisierung, desto teurer wird die Wartung, desto unzufriedener werden alle Beteiligten, desto lauter wird der Ruf nach einem Schlussstrich: “Schreiben wir alles neu!”