Legacy-Systeme: Von nützlicher Software zum nutzlosen Artefakt

Wenn eine Software neue Anforderungen erfüllen soll, scheuen viele Firmen aus Angst vor Bugs tiefgreifende Code-Änderungen. Was dabei herauskommt, ist aber schlimmer als Bugs: erstarrte, nutzlose Legacy-Systeme.

Artikel von Rajiv Prabhakar veröffentlicht am
Manche Architektur altert nicht so gut - und das gilt auch für manche Software-Architektur.
Manche Architektur altert nicht so gut - und das gilt auch für manche Software-Architektur. (Bild: Wikimedia Commons/CC-BY-SA 4.0)

Dieser Artikel ist eine Übersetzung. Das Original des Softwareentwicklers und Bloggers Rajiv Prabhakar ist hier zu finden.

Inhalt:
  1. Legacy-Systeme: Von nützlicher Software zum nutzlosen Artefakt
  2. Wie Legacy-Software überhaupt entsteht
  3. Wie verhindert man, dass nutzlose Legacy-Systeme entstehen?

Es gibt ein Muster, das ich sehr oft in Software-Teams sehe:

Es existiert die Notwendigkeit, das bestehende Systemverhalten zu ändern, um eine neue Funktionalität zu erreichen.

Der Softwareentwickler erkennt, dass das vorhandene Design für die erforderliche Änderung nicht gut geeignet ist. Er schlägt Designänderungen und eine Restrukturierung vor, als Teil der Implementierung der gewünschten Funktionalität.

Stellenmarkt
  1. System Engineer (m/w/d) KDO-Cloud-Arbeitsplatz
    KDO Service GmbH, Oldenburg
  2. Spezialist (m/w/d) Field Service
    METRONA GmbH & Co. KG, München
Detailsuche

Die Kollegen überprüfen die Arbeit und machen sich Sorgen, dass die vorgeschlagenen Änderungen kritisch sein könnten. Da niemand im Team das System wirklich gut versteht, befürchten sie, dass jede Restrukturierung Fehler verursacht. Sie hatten das schon mal und sind entschlossen, es nicht noch einmal zu riskieren.

Sie versuchen also, signifikante Änderungen zu vermeiden. "Fügen Sie einfach hier, in der Methode Foo in der Klasse Bar, eine weitere if-Prüfung, einen Service-Aufruf und/oder eine Abhängigkeit zur Klasse Baz hinzu." Die Änderungen bestehen nur aus ein paar Zeilen Code - weit weniger riskant.

Die Klasse Bar und die Methode Foo waren aber nie dazu gedacht, Service-Aufrufe durchzuführen oder Ergebnisse aufgrund einer Abhängigkeit von Baz zu filtern. Es verstößt gegen den ursprünglichen Entwurf der Klasse. Aus einer einzigen Aufgabe der Klasse werden nun mehrere, denn aus "Bar gibt immer ABC zurück" wird "Bar gibt immer ABC zurück, es sei denn, DEF gibt in diesem Fall XYZ zurück". Die Trennung von Zuständigkeiten weicht einer Überschneidung der Zuständigkeiten.

Dennoch: Es sind nur ein paar zusätzliche Codezeilen, wie schlimm kann das schon sein? Außerdem ist das Risiko gering, schließlich fassen wir nur sehr wenig Code an. Es ist schwer, auf Basis abstrakter Designprinzipien dagegen zu argumentieren. Schließlich sind wir hier Pragmatiker, keine Architektur-Astronauten!

Hacking & Security: Das umfassende Handbuch. 2. aktualisierte Auflage des IT-Standardwerks (Deutsch) Gebundene Ausgabe

Und so beschließt das Team, den Weg des geringsten Widerstands zu gehen. Es aktualisiert pflichtbewusst die Unit-Tests. Außerdem testet es die relevanten Änderungen manuell, denn es weiß aus Erfahrung, dass Unit-Tests nur die halbe Miete sind. Der Code wird erfolgreich und ohne Probleme ausgerollt, alle atmen auf und beglückwünschen einander zu einer gelungenen Arbeit.

Irgendwann ist das System nur noch zum Bestaunen gut

Dieser Prozess wiederholt sich jedes Mal, wenn eine Änderung gemacht werden muss. Mit jeder Iteration wird das Design ein bisschen verwaschener, das System ein wenig schwieriger zu verstehen - und es verhält sich jedes Mal einen Tick unvorhersehbarer. All das macht das Team noch risikoscheuer und entschlossener, unnötige Änderungen zu vermeiden. Was den Verfall weiter beschleunigt.

Und jedes Mal, wenn jemand das Team verlässt und jemand Neues kommt, erhält diese Verfallsbeschleunigung noch einen Schub.

Ziemlich bald hat man ein vollwertiges Legacy-System, eine Legacy-Software, über die sich jeder gerne beschwert und in der niemand herumfuhrwerken möchte. Die Codebasis ist kein lebendiges System mehr, sondern ein Museumsartefakt. Sie wird mit Staunen und Bewunderung betrachtet, aber auf keinen Fall wird sie angefasst.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
Wie Legacy-Software überhaupt entsteht 
  1. 1
  2. 2
  3. 3
  4.  


minnime 17. Feb 2021

Erstmal liegt ein ziemlich großer Fokus auf dem Testen, wobei ich nicht sagen würde, dass...

lordasgart 14. Feb 2021

Genau meine Rede momentan, und jetzt eine gute Referenz auf einen entsprechenden Golem...

CptData 12. Feb 2021

Es wird noch was nicht angefasst im Artikel: Software zur Steuerung von Maschinen. Der...

der_onkel 12. Feb 2021

Vielen Dank für die Videos!



Aktuell auf der Startseite von Golem.de
Rotary Phone
Vom Wählscheiben-Bastelhandy zur eigenen Produktionsanlage

Justine Haupt hat ein Handy mit Wählscheibe entworfen - und gleich eine eigene Produktionsanlage zu Hause aufgebaut. Golem.de hat mit ihr gesprochen.
Ein Interview von Tobias Költzsch

Rotary Phone: Vom Wählscheiben-Bastelhandy zur eigenen Produktionsanlage
Artikel
  1. Internet: Indien verbannt den VLC Media Player
    Internet
    Indien verbannt den VLC Media Player

    Weder Downloadlink noch Webseite des VLC Media Players können von Indien aus aufgerufen werden. Der vermutete Grund: das Nachbarland China.

  2. John Deere: Ein Hacker präsentiert ein Jailbreak für Traktoren
    John Deere
    Ein Hacker präsentiert ein Jailbreak für Traktoren

    Nicht nur Telefonhersteller vernageln ihre Geräte. Der Hacker Sick Codes zeigt, wie Root-Zugriff auf die Systeme der Traktoren zu erlangen ist.

  3. Kryptowährungen: Tornado-Cash-Entwickler wegen Geldwäsche festgenommen
    Kryptowährungen
    Tornado-Cash-Entwickler wegen Geldwäsche festgenommen

    Der in den Niederlanden verhaftete Entwickler steht im Verdacht, für eine nordkoreanische Hackergruppe Kryptowährungen gewaschen zu haben.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • Playstation Summer Sale: Games für PS5/PS4 bis 84% günstiger • Günstig wie nie: SSD 1TB/2TB (PS5), Curved Monitor UWQHD LG 38"/BenQ 32" • Razer-Aktion • MindStar (AMD Ryzen 7 5800X3D 455€, MSI RTX 3070 599€) • Lego Star Wars Neuheiten • Bester Gaming-PC für 2.000€ [Werbung]
    •  /