This content is not available in English.

Bitrot not!

Tuesday 30.07.2019 Christian Walter
Christian Walter

Christian Walter ist Geschäftsführer und Redaktionsleiter von swiss made software. Bis Ende 2010 arbeitete er als Fachjournalist für das ICT-Magazin Netzwoche, publizierte zuletzt aber auch im Swiss IT Magazin, der Computerworld sowie inside-it.

Object Engineering baut teilautomatisiert aus Metadaten neue Software und löst so Legacy-Probleme bei komplexer Software von über einer Million Codezeilen.

Die Komplexität selbst relativ moderner Software macht klar warum Teilautomatisierung beim Refactoring nötig ist, um die Kosten tief zu halten – Beispiel mit nur 25’000 Codezeilen

In Digitalien stinkt es – und zwar regelmässig. Im Englischen bezeichnet man diesen Prozess als "bit rot" – den Vorgang also, in dessen Verlauf aus einer modernen, geschmeidigen Software ein altes Schlachtross wird, das mit Klebeband und Spucke zusammengehalten wird. Die Gründe sind vielfältig – so spielen ständig neue Business-Anforderungen genauso eine Rolle wie der technologische Wandel oder ein nicht optimales Management. Und selbst bei umsichtigster Planung werden Code und Architektur nach drei bis fünf Jahren erste Alterserscheinungen zeigen.

Früher oder später kommt es also zum Refactoring – der Strukturverbesserung von Quelltexten unter Beibehaltung des beobachtbaren Programmverhaltens. Handelt es sich dann um komplexe Softwareprodukte mit mehr als einer Million Codezeilen, kommen schnell einige Tausend Stunden Arbeitsaufwand zusammen, um die Software manuell wieder auf den neuesten Stand zu bringen.

Glücklicherweise lassen sich Teile dieser Aufgabe automatisieren. Somit sinken Zeitaufwand und Kosten. Das ist das Spezialgebiet des Ingenieurbüros Object Engineering, das Methoden und Werkzeuge entwickelt hat, um den Code entsprechend der Architektur wieder auf Vordermann zu bringen. Der Clou dabei ist die Rolle der Metadaten. "Wir schauen nicht ausschliesslich auf Code oder Datenbank. Zentral bei uns ist die Beziehung der einzelnen Komponenten in der Architektur", so CEO Andres Koch.

Einen Plan haben

Zentral für das Gelingen ist allerdings, dass der Kunde klare Zielvorstellungen hat. "Als erstes wird also die neue Architektur festgelegt", erklärt Koch.

Der Prozess läuft dann wie folgt: Nach einigen Vorabklärungen wird die gesamte Codebasis eingelesen – inklusive vorhandener Metadaten (z.B. von Datenbanken). Dies erlaubt bereichsübergreifende Abhängigkeiten, wie zum Beispiel Code zu Datenbank, zu ermitteln. Daraus ergibt sich ein Metamodell. Anhand dieses Modells entwickelt der Object Engineering Metadata Analyser (Oman), das hauseigene Refactoring-Tool, einen Code passend zur vorher festgelegten neuen Architektur. "Durch Teilautomatisierung reduzieren wir den Aufwand gegenüber einer ­manuellen Bearbeitung auf bis zu 50 Prozent und mehr", so Koch.

Dabei ist allerdings zu beachten, dass Oman kein universelles Werkzeug ist, sondern jeweils um die spezifischen Analyse- und Generator-Fähigkeiten für die konkrete Problemstellung erweitert werden muss. Erst dann kann das Refactoring-Tool neuen Code erstellen, der in die vorher festgelegte Architektur passt.

Guter Code aus der Maschine

Ein konkretes Beispiel ist die kürzlich erfolgte Sanierung eines ERP-Systems mit mehr als einer Million Zeilen Code. Dazu gehörte unter anderem, die Kern-Geschäftslogik neu zu strukturieren. Da das System über viele Jahre organisch weiterentwickelt worden war, gab es viele nicht immer klare Abhängigkeiten. So konnten Veränderungen an einem Teil des Systems nicht vorhersehbare Auswirkungen in anderen Bereichen haben. Durch die Refaktorierung konnten Wart- und Testbarkeit sowie die Stabilität verbessert werden. Gleichzeitig sank der Aufwand für die Entwicklung neuer Businessfunktionen.

Für einen anderen Kunden transformierte Object Engineering eine PC-basierte Client-Server-Lösung in eine moderne Webapplikation. Dabei war eine der Anforderungen die Eins-zu-Eins-Migration von 130 Masken mit 10’000 Feldern. Durch die Analyse der Metadaten konnte genau festgestellt werden, wo im Code die Bildschirme behandelt wurden oder welche Teile sich mit dem Zugriff auf die Datenbank befassten. Diese Beziehungen wurden isoliert und konnten via Oman von einer Desktop-Applikation in eine im Browser laufende Webapplikation transformiert werden. Oman ist somit vielseitig einsetzbar und liefert nicht nur guten Code, sondern solchen, der für die unternehmenseigenen Entwickler verständlich ist. Somit sind die neue Architektur und der Code anschliessend völlig unabhängig von Object Engineering wart- und weiterent­wickelbar.