Wie Legacy-Software überhaupt entsteht
In Working Effectively with Legacy Code (Effektiv mit Legacy-Code arbeiten) beschreibt Michael Feathers Legacy-Software als jedes Softwaresystem, das nicht getestet wird. Diese Beobachtung ist sehr aufschlussreich, ich würde aber noch einen Schritt weiter gehen: Für mich ist Legacy-Software jede Software, an der Entwickler aus Angst vor Fehlern keine Änderungen mehr machen.
Die beiden häufigsten Gründe für die Abneigung gegen Veränderungen sind:
- Komplexität
- Lücken in der Testabdeckung
Komplexer Code macht Tests noch zwingender. Und Löcher in der Testabdeckung machen deutlich, dass die automatisierte Testsuite nicht verlässlich ist.
Wenn man sie nach dem Testen fragt, betonen die meisten Software-Teams, dass sie sehr diszipliniert sind, wenn es darum geht, Tests zu schreiben, die alle Funktionen abdecken. Um wirklich herauszufinden, wie gut ihre Testsuite ist, reicht aber eine Antwort auf diese einfache Frage: Wie viel Zeit verbringt das Team mit manuellen Tests?
Meiner Erfahrung nach gibt es viele Teams, die behaupten, sehr diszipliniert zu sein, die aber auch sehr viel Zeit mit manuellen Tests verbringen. Der Grund dafür ist eindeutig, dass ihre automatisierten Tests erhebliche Lücken haben - häufig, weil ihre Tests nur auf Unit-Tests ausgerichtet sind und nicht auf emergente Funktionalität, die mit End-to-End-Tests abgedeckt werden kann.
Die mangelnde Testabdeckung verursacht einen schädlichen Loop:
Mangelndes Vertrauen in die Durchführung von Änderungen → Alle Änderungen werden ausgiebig manuell getestet → Größere Änderungen werden vermieden, weil manuelles Testen zeit- und arbeitsintensiv ist → Alle Änderungen folgen dem Weg des geringsten Widerstands → Der Code wird immer komplexer, sein Design immer schlechter und er enthält immer mehr Fehlerquellen → Mangelndes Vertrauen in die Durchführung von Änderungen.
Dieser verhängnisvolle Loop wird mit der Zeit immer schlimmer, bis man schließlich mit einem Legacy-System dasteht, das geschäftskritisch ist, mit dem man aber nur noch schlecht arbeiten kann. Es braucht immer mehr Zeit, um überhaupt noch Änderungen vorzunehmen. Schließlich kommt der Tag, an dem das System unter seinem eigenen Gewicht zusammenbricht.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
- ohne Werbung
- mit ausgeschaltetem Javascript
- mit RSS-Volltext-Feed
Legacy-Systeme: Von nützlicher Software zum nutzlosen Artefakt | Wie verhindert man, dass nutzlose Legacy-Systeme entstehen? |
Erstmal liegt ein ziemlich großer Fokus auf dem Testen, wobei ich nicht sagen würde, dass...
Genau meine Rede momentan, und jetzt eine gute Referenz auf einen entsprechenden Golem...
Es wird noch was nicht angefasst im Artikel: Software zur Steuerung von Maschinen. Der...
Vielen Dank für die Videos!
Da sieht man mal, dass die meisten Leute überhaupt keine Ahnung von dieser Software...
Kommentieren