Wie die Bison Schweiz AG die Kern-Geschäftslogik eines ERP-Produkts mit Generatoren auf Basis des OMAN Frameworks teilautomatisiert in eine neue Architektur überführt – mit über 50 % weniger Aufwand für die Code-Migration.
AusgangslageBison will die Kern-Geschäftslogik eines ERP-Produkts aus einer monolithischen Vererbungshierarchie neu strukturieren.
AufgabeDie Code-Migration in die neue Architektur teilautomatisieren – von Hand wäre der Aufwand enorm.
ErgebnisGeneratoren auf Basis von OMAN senken den Aufwand der Code-Migration um über 50 %, mit deutlich weniger Fehlern.
Die Bison Schweiz AG mit Sitz in Sursee ist ein Unternehmen der fenaco-Landi-Gruppe. Für ihre Kunden innerhalb und ausserhalb der fenaco erstellt sie moderne betriebswirtschaftliche Software-Produkte und -Lösungen, unter anderem für die Agrar- und Retail-Märkte in der Schweiz und in Deutschland.
Kerngeschäft der Bison war über viele Jahre die Entwicklung und Vermarktung von ERP-Lösungen. Zum Portfolio gehören daher mehrere ERP-Produkte, die bei zahlreichen Kunden im Einsatz sind. Über sie wickeln die Kunden jedes Jahr Umsätze von vielen Millionen Franken ab. Für Bison und ihre Kunden ist es deshalb entscheidend, dass der Wert dieser klassischen Backend-Systeme erhalten bleibt und dass sie sich laufend und kostengünstig an neue Bedingungen, Gesetze, Märkte und Regularien anpassen lassen.
Zu lösendes Problem
Für diesen Werterhalt muss man früher angestrebte Produkt-Eigenschaften auf den Prüfstand stellen, gegebenenfalls neu definieren und daraus die nötigen Umbauten der Architektur ableiten.
Für eines ihrer ERP-Produkte wollte Bison deshalb die Kern-Geschäftslogik neu strukturieren: Sie lag in einer umfangreichen monolithischen Vererbungshierarchie mit einem zusätzlichen Geflecht an Hilfsklassen. In der bisherigen sequentiellen Code-Struktur war es eine der grössten Herausforderungen, bei Wartung und Erweiterung die richtigen Codestellen zu finden und sicherzustellen, dass Berechnungsregeln in der richtigen Reihenfolge ausgeführt werden.
Lösung
Die Lösung entstand in mehreren Schritten:
Das Reengineering-Team von Bison definierte das Ziel-Design und begann die Code-Migration zunächst von Hand. Weil der personelle Aufwand dafür enorm hoch ist, suchte Bison nach Möglichkeiten, die Code-Migration von der alten in die neue Architektur zu automatisieren.
Gemeinsam mit Object Engineering führte Bison einen Proof of Concept (PoC) durch. Er zeigte, dass sich bestimmte Code-Muster erkennen und Methoden-Aufrufe im Quellcode nachverfolgen lassen. Damit war die wichtigste Voraussetzung für eine teilautomatisierte Migration erfüllt.
In einem gemeinsamen Reengineering-Projekt wurden die Erkenntnisse aus dem PoC verfeinert und die Analyse-Werkzeuge entsprechend angepasst. Dazu entstanden gezielt Generatoren, die die neuen Code-Artefakte erzeugten.
Das Entwicklungs-Team baute den generierten Code in die Codebasis ein, prüfte und passte ihn an und löschte schliesslich den Legacy-Code.
Vorteile der Lösung
01Gezielt migriert Mit OMAN (Object Metadata Analyzer) liess sich der zu migrierende Code ermitteln und analysieren. Daraus entstanden die neuen Klassen für die Zielarchitektur.
02Weniger Aufwand Dank der Automatisierung sanken Aufwand und Durchlaufzeit der Code-Migration erheblich.
03Weniger Fehler Der generierte Code enthielt deutlich weniger Fehler als bei der rein manuellen Umsetzung.
04Schnell bereit Auf der bestehenden OMAN-Plattform entwickelte Object Engineering die Analysen und Generatoren in kurzer Zeit. So profitierte Bison schnell davon.
Die Reengineering-Plattform
Das Verfahren hat vier Schritte:
Parsing: die ganze Code-Basis einlesen und für jede Klasse einen abstrakten Syntax-Baum (AST) erstellen.
Recognizer: den AST durchlaufen, die projekt- und sprachspezifischen Regeln erkennen und die relevanten Informationen im Meta-Modell speichern.
Analyzer & Transformer: den Metadaten-Baum durchlaufen und mit weiteren Metainformationen ergänzen.
Generator: den Metadaten-Baum durchlaufen und Reports und neue Artefakte generieren.
Die Analysen und Generatoren sind auf die Applikation von Bison zugeschnitten und in die OMAN-Plattform integriert. So begann der Bau der Generatoren nicht bei null. Dazu kam die Erfahrung von Object Engineering aus einer langen Reihe von Reengineering-Projekten, von deren Beratung Bison in diesem Projekt profitierte.
Interessant ist ein solches Automatisierungs-Vorhaben dann, wenn sehr viele ähnliche «Teile» erkannt und daraus sehr viele neue, wiederum ähnliche «Teile» erzeugt werden müssen. Denn natürlich investiert man nicht ohne betriebswirtschaftliche Erwartungen.
Das Ziel war, den Aufwand der eigentlichen Code-Migration um 40 bis 50 % zu senken. Für dieses erste Projekt erstellte Bison zunächst ein Mengengerüst der Zielklassen: rund 3’500. Lässt sich der Aufwand für eine Zielklasse im Durchschnitt auch nur um wenige Stunden auf die Hälfte senken, macht der Multiplikator von 3’500 daraus ein sehr lohnendes Unterfangen.
Von Beginn an über 40 % Produktivitätsgewinn, später sogar über 50 %.
Aufwand und Durchlaufzeit des Gesamtprojekts sanken dadurch erheblich.
Zudem nimmt die Automatisierung den Entwicklern eine grosse Arbeit von den Schultern. Den Legacy-Code akribisch und feingranular zu analysieren, um die Code-Teile für eine neue Klasse zu finden, entspricht dem Naturell der meisten Entwickler überhaupt nicht. Dabei muss man mit enormer Denkleistung alle Bedingungen berücksichtigen, die zu den relevanten Statements führen. Und man muss vermeiden, dieselben Bedingungen und Statements mehrfach in neue Klassen zu migrieren, oder zumindest darüber Buch führen, damit sich gleiche Code-Teile später wiederverwenden lassen.
Viel Denken, wenig Kreativität wäre das Resultat. Mit der Automatisierung entfällt ein Grossteil dieser anstrengenden, aber wenig erfüllenden «Boilerplate»-Arbeit.
Reduktion von Projektaufwänden um mehr als 40 %
«Wir wollten das bereits gestartete Reengineering-Projekt effizienter gestalten und haben nach Automatisierungs-Möglichkeiten gesucht. Bei der Internetrecherche habe ich direkt keine vielversprechenden Ansätze dafür gefunden. Schliesslich stiess ich auf den «Workshop Software Reengineering» in Bad Honnef, zu dem ich mich anmeldete. Ich hoffte, hier Informationen zu bekommen, wie solche Automatisierungen machbar wären. Bei der Konferenz lernte ich Andres Koch von der Object Engineering kennen und hörte seinen Vortrag, der bei mir ins Schwarze traf.
Nach meiner Rückkehr habe ich das Thema bei uns intern vorgestellt (unter anderem dem Leiter Entwicklung und dem Chief-PO für die Produktlinie). Begeistert nahm man die Idee auf, und ich konnte das Bison Management für einen Proof of Concept (PoC) gewinnen. So konnten wir belegen, dass die Idee funktioniert.
Während des PoC ist bereits eine Vertrauensbasis mit Object Engineering entstanden, die sich mit Marketing-Slides nicht erklären lässt. Inzwischen ist die Methode bei Bison etabliert, die Object Engineering hat eine Grundlage geschaffen, auf der sich weitere Generatoren aufsetzen lassen. Sie sind offen für Diskussionen, geben qualifiziertes Feedback, haben Erfahrung, Ideen und sie sind flexibel und schnell in der Umsetzung. Nicht zuletzt vermindert es unsere Entwicklungszeiten ja wirklich signifikant, d.h. der Erfolg gibt ihnen und mir recht. Unser Management fragt jetzt bei jeder Gelegenheit, ob sich da nicht was automatisieren liesse, und auch wenn das nicht immer möglich ist, so finde ich es doch wichtig und richtig, immer wieder darüber nachzudenken.»
Technologisch und betriebswirtschaftlich ausgezahlt
«Die Zusammenarbeit mit Object Engineering hat sich für Bison technologisch und betriebswirtschaftlich ausgezahlt. Der Fortschritt, respektive die erzielte Beschleunigung in einem technologisch herausfordernden Projekt, ist signifikant, weshalb wir uns auf die weitere Zusammenarbeit freuen.»
Der Transformation Support überführt Ihr System teilautomatisiert in die Ziel-Architektur. Ein Fehler im Generator wird einmal behoben – und ist damit überall behoben.
Sie müssen noch nicht wissen, welchen Baustein Sie brauchen. Im Erstgespräch klären wir, welche Frage zählt und welche Quellen sie beantworten. Danach entscheiden Sie, ob und wie es weitergeht.
Sie schreiben uns
Ein Satz zu Ihrem Vorhaben genügt. Kein Briefing, keine Unterlagen, keine Vorbereitung.
Erstgespräch, 30 Minuten
Wir hören zu und zeigen, welche Analyse für Ihre Situation richtig ist. Und wenn wir nicht passen, sagen wir auch das.
Klarer Plan, fester Rahmen
Ein konkreter Vorschlag: was wir untersuchen und was Sie danach über Ihr System wissen. Erst dann entscheiden Sie, ob wir anfangen.