Codezeilen | Legacy Code

Legacy Code – Unliebsame Relikte der Vergangenheit

Als Menschen sind wir es gewohnt, unsere Gegenwart aus der Vergangenheit heraus zu legitimieren, bzw. ihre jeweils aktuelle Ausgestaltung explizit auf eine Historie zurückzuführen. Auch und gerade hinsichtlich der konkreten Form gegenwärtiger Code- und Systemarchitekturen vermag ein solcher Blick Licht ins sprichwörtliche Dunkel zu bringen. Ein Umstand, der in diesem Zuge besonders interessant erscheint, ist jener des Legacy Codes. Doch was ist Legacy Code eigentlich genau? Und wieso kann er so lästig, um nicht zu sagen, gefährlich werden? In diesem kurzen Blogbeitrag soll es nun also um residuale Sachverhalte gehen und um den Appell: „kontinuierliches Aufräumen lohnt sich extrem!“
Inhaltsverzeichnis

Aber beginnen wir von vorne...

 

Was ist Legacy Code?

Legacy Code ist, wie der Name es bereits programmatisch andeutet, eine Art Überlieferung aus vergangenen Zeiten: ein regelrechtes „Erbe“. Ein Blick auf den State of the Art von vor ein paar Jahren oder gar Jahrzehnten eröffnet sich uns beim Blick auf Legacy Code-Zeilen. Dabei besteht die wahre Schwierigkeit im Zusammenhang mit Legacy Code in der fortlaufenden Wartung, der teilweise mangelhaften Anschlussfähigkeit, sowie eklatanten Sicherheitslücken, die sich bei ungeprüfter Übernahme eröffnen können. Ähnlich wie bei einer genetischen Mutation, kann es sich auch mit „quasi-organisch“ gewachsenen Zeilen von Legacy Code verhalten: sie führen häufig zu zunehmend instabilem Prozessieren oder dem sukzessiven Auftreten von Fehlermeldungen, die nicht ohne weiteres behoben werden können, da die Gründe für das Auftreten solcher Error-Messages allzu häufig unter einem regelrechten Wust aus behelfsmäßigen Anpassungen begraben liegen.

Code-Zeilen, so lässt sich dieser Abschnitt schließen, sind das Herzstück einer jeden Software. Dabei ist Legacy Code häufig ein Resultat mangelnder Clean Code-Praxis.

Verantwortung für Legacy Code und dessen Verhinderung

Die Verantwortung für eine möglichst langfristige Funktionstüchtigkeit des einmal geschaffenen verteilt sich bei der Softwareentwicklung auf verschiedene Schultern: an allererster Stelle seien die Programmierer:innen genannt, die mit ihrer Arbeit überhaupt erst etwas produzieren, das man als funktionstüchtiges Fundament für jede Art von codegetriebenen Softwaregefügen bezeichnen könnte. UX/UI-Designer:innen sind die zweite Gruppe, die sich hinsichtlich der Pflege des jeweiligen Code-Gebildes als prüfend herausstellen. Sie zeichnen sich verantwortlich für eine kohärente Übersetzungsstruktur zwischen Backend und Frontend, dafür also, wie die jeweilige Software schlussendlich genutzt wird. Projektmanager:innen sind eine dritte Gruppe, der an der Verhinderung von Legacy Code gelegen ist, da sie den Kunden eine möglichst reibungslos funktionierende und überdies sichere Lösung zukommen lassen wollen.

LegacyCode hält somit Hindernisse für verschiedene Stakeholder-Gruppen bereit undsollte somit von Beginn eines Softwareentwicklungsprojektes an vermiedenwerden.

Legacy Code hält Hindernisse für verschiedene Stakeholder-Gruppen bereit und sollte somit von Beginn eines Softwareentwicklungsprojektes an vermieden werden.

Wie vermeidet man Legacy Code?

Es mag verschiedene Wege geben, Legacy Code zu begegnen bzw. ihm entschlossen entgegenzutreten. Eines der wohl lohnendsten Unterfangen stellt dabei die Idee des Clean Codes dar. Diese baut maßgeblich auf der Wahrnehmung von Software(entwicklung) als iterativem Prozess auf, der niemals wirklich endet. Es geht, so verstanden, um die kontinuierliche Pflege, die es möglich macht, Informationsströme einfach nachvollziehen zu können, auf dass potenziell auftretende Fehler einfach identifiziert und behoben zu werden vermögen. Was sich recht einfach anhört, ist tatsächlich relativ komplex: da es sich um eine regelrechte Mammutaufgabe handelt, wirklichen Clean Code zu erstellen, verbleiben viele Ambitionen in diese Richtung als gut gemeinte Heuristik. Eine weitere, wesentlich konventionellere Art und Weise Legacy Code zu begegnen, besteht im Refactoring. Beim Refactoring werden spezifische Änderungen am Code vorgenommen, um die interne Struktur zu verbessern, ohne das Verhalten der Software nach außen hin zu ändern. Das bedeutet, dass die Ausgabe und das Verhalten der Software nach dem Refactoring genauso sein sollten wie vorher. Es handelt sich im Wesentlichen um eine interne Umgestaltung, die darauf abzielt, den Code sauberer und besser organisiert zu generieren. Letztlich zahlt das Refactoring so zwar auch auf das Projekt des Clean Code ein, ist allerdings ein in sich abgeschlossener Prozess, keineswegs eine fortlaufende Anstrengung samt zugehöriger Ethik, wie sie die Praxis des Clean Codes voraussetzt.

Wie auch immer man sich vornimmt, Legacy Code zu vermeiden oder ihn zu beheben, es wäre töricht, das Thema in Gänze auszuklammern. Jede Softwareentwicklung ist nur so gut, wie sie es schafft, das jeweilige Ziel möglichst effektiv und effizient zu erreichen.

Lassen Sie sich von unseren Expert:innen beraten.
Gemeinsam können wir Legacy Code vermeiden und Ihr Unternehmen auf eine sichere und nachhaltige Softwarebasis stellen.
Jetzt kontaktieren
Photo by Unsplash
Teilen
LinkedIn Logo
LinkedIn Logo
LinkedIn Logo
Assecor Kontakt - IT Dienstleister aus Berlin
Assecor Kontakt - IT Dienstleister aus Berlin
Assecor Linkedin - IT Unternehmen aus Berlin