Skip to main content

Ein wertvolles Asset mit technischer Historie

Die automatisierte Berechnung von Löhnen im öffentlichen Sektor inkl. aller steuerlicher und sozialversicherungsrechtlicher Aspekte stellt höchste Anforderungen an Präzision und Performance. Das über Jahrzehnte gewachsene gesetzliche Regelwerk bietet unzählige Kombinationsmöglichkeiten und Randfälle. IT-Lösungen müssen auf dieser Basis auf Knopfdruck für jeden Stichtag aktuell und rückwirkend hunderttausende Gehälter zuverlässig und auf den Cent genau berechnen.

Das System unseres Kunden, bestehend aus über 1 Mio. Zeilen COBOL-Code, war hierfür seit Beginn der Siebzigerjahre erfolgreich im Einsatz.

Technologisch jedoch wurde es jedoch immer schwieriger, die oftmals kurzfristig umzusetzenden gesetzlichen Neuregelungen zu integrieren. Zudem war die Technologie weder auf Online- und Cloud-Betrieb ausgelegt noch für die zwischenzeitlich geschäftlich gewünschten Echtzeit-Auswertungen geeignet. Abnehmende Wartbarkeit, veraltete Architekturmuster, unvollständige Dokumentation und der Mangel an Spezialisten für Legacy-Technologien wurden somit zu einem existentiellen Risiko.

Wie modernisiert man eine derart komplexe Applikation, ohne den laufenden Betrieb zu gefährden und ohne den Fachbereich mit Anforderungserhebung oder manuellen Tests zu belasten?

Wie löst man ohne „Feature Freeze“ einen COBOL-Monolithen – im Wesentlichen ein einziger großer Batchprozess – durch eine technologisch moderne und hochwartbare Anwendung ab, die mit der Performance des spitzenoptimierten Mainframes mithalten kann und auf den Cent genau dieselben Berechnungsergebnisse liefert wie das Altsystem?

Man muss sich vor Augen führen, dass ein höchst komplexes Gehaltsabrechnungssystem neu realisiert wurde. itestra und die beteiligten Mitarbeiter können auf diese Leistung stolz sein.

Abteilungsleitung

Reverse Engineering und eine innovative Architektur

Das erste Ziel für das itestra-Team war das Extrahieren der fachlichen Regeln und Sachverhalte aus dem bestehenden COBOL-Code. Hierzu wurden mittels manuellem und tool-gestütztem Reverse Engineering die komplexen, über Jahrzehnte entstandenen Bedingungen und Berechnungsvorschriften schrittweise analysiert und zugleich Werkzeuge zur späteren Nachverfolgung der Code-Migration vorbereitet.

Parallel entstand die Idee, die Komplexität der neuen Implementierung durch einen – für objektorientierte Systeme seltenen – mathematisch Ansatz radikal zu reduzieren und damit sowohl den Code verständlicher und wartbarer als auch die Berechnungen für die Zukunft nachvollziehbarer zu machen.

Durch die Kombination von Prinzipien der funktionalen und objektorientierten Programmierung wird jeder berechnete Wert und jedes im Laufe der Berechnung entstehende Zwischenergebnis einmalig durch genau eine Funktion berechnet. Hierdurch werden

  • Teilberechnungen in wiederverwendbare, benannte Funktionen gekapselt,
  • Code-Redundanz und Fehlerquellen reduziert,
  • Seiteneffekte verhindert und
  • während der Ausführung wiederholte Berechnungen vermieden.

Jeder Berechnungsprozess wird dabei auf Ebene der extrahierten Funktionen, welche die Fachlichkeit widerspiegeln, automatisch protokolliert, was die Nachverfolgung vereinfacht und isolierte Tests von Teilberechnungen ermöglicht.

Alter Code - COBOL

COBOL

Der neue Code in C#

C#

Berechnungsprotokoll des neuen Systems

Berechnungsprotokoll

Vergleichstests: Schlüssel zum Erfolg und enorme Herausforderung

Jedes der rund 400.000 zu berechnenden Gehälter ergibt sich aus bis zu 45.000 einzelnen Werten, die wiederum das Ergebnis von Zwischenberechnungen oder aber vorgegebenen Eingabegrößen sein können.

Um im neuen System auf den Cent genau dieselben Ergebnisse wie in COBOL zu erzielen, waren nicht nur eigens entwickelte Festkomma-Datentypen in C# notwendig, sondern auch umfangreiche maschinelle Vergleichstests, bei denen vorhandene Eingabedaten in beiden Systemen durchgerechnet und sämtliche Zwischenergebnisse und Ausgaben vollständig verglichen wurden.

Was zunächst einfach klingt, erwies sich in der Praxis als äußerst komplexes Unterfangen:

  • Während der Entwicklung waren gewisse Teilberechnungen noch nicht vollständig implementiert. Die entsprechenden Zwischenergebnisse, sowie alle davon abhängigen Folgeberechnungen, mussten beim Vergleich ausgeklammert werden.
  • Eine einzelne, minimale Differenz konnte umfangreiche Abweichungen nach sich ziehen, was die Klassifikation und Suche nach der Ursache deutlich erschwerte.

Auch die enormen Datenmengen, die automatisierte Steuerung des Altsystems im Testprozess und die Sicherstellung aller Datenschutz-Anforderungen an das Vorgehen machten die Vergleichstests zu einer sehr anspruchsvollen Aufgabe.

Nach Überwindung dieser Hürden durch das Team wurden die automatisierten Vergleichstests zu einem wesentlichen Faktor für den Erfolg des Projekts.

Ein funktionaler und objektorientierter Rechenkern

Abgelöste Plattform
Zielarchitektur
COBOL
C#, .NET
Imperativ, IFs
Funktionaler Programmierstil
Legacy-Datenhaltung (nur durch Programm lesbar)
Normalisierte relationale DB in MS SQLServer
Monolith
Objektorientierte, modulare Architektur
Dateibasierte Schnittstelle
REST Services
Ausführung nur als Gesamtsystem
Unit-Tests, Entwickler-Tests, automatisierte Regressionstests

Migration zum Festpreis und ohne Feature Freeze

Dank langjähriger Erfahrung im Reengineering umfangreicher geschäftskritischer Informationssysteme sowie dem Einsatz eigens entwickelter Tools zur statischen Codeanalyse konnte itestra nach intensiver Abstimmung mit dem Auftraggeber die gesamte Ablösung als Werk zum Festpreis mit einem verbindlichen Meilensteinplan anbieten und somit das Projektrisiko für den Kunden auf ein Minimum reduzieren.

Parallel zur Modernisierung wurden im dreijährigen Projektzeitraum 340 Änderungen am Altsystem durchgeführt um gesetzliche und andere fachliche Anforderungen zu erfüllen. Sämtliche Changes wurden sorgfältig mit der Modernisierungsroadmap abgestimmt. Ein Feature Freeze konnte dank des automatisierten Migrations-Trackings ebenso effektiv vermieden werden wie wiederholte Änderungen bereits abgelöster Code-Umfänge.

Vorsprung im Wettbewerb

Mit der neu geschaffenen Lösung steht eine äußerst leistungsfähige und flexible Basis für zukünftige Innovationen und Anforderungen zur Verfügung. Unmittelbar nach Fertigstellung erwies sich dies bereits als enormer Vorteil, als im Zuge der Corona-Pandemie kurzfristig und zum Teil auch befristet mehrere neue Vergütungsregelungen und Verordnungen erlassen wurden. Alle Anforderungen konnten in der neuen Lösung termingerecht umgesetzt werden, was im Altsystem nicht möglich gewesen wäre.

Die vollständige Modernisierung des komplexen Rechenwerks inklusive Abschaltung der alten COBOL-Programme verschafft unserem Kunden einen Vorsprung im Wettbewerb.

Die neue, innovative Lösung zeichnet sich durch hohe Effizienz und Flexibilität aus, ist auf dem neuesten Stand der Technik und kann ohne proprietäre Hardware in einer Cloud oder auch on premise eingesetzt werden. Die hohe Qualität der Software hat es dem Kunden ermöglicht, das erstellte System nahtlos zu übernehmen, eigene Entwickler einzuarbeiten und die Weiterentwicklung inzwischen selbst durchzuführen.

Mit dem Blick auf den Markt und die wachsenden Anforderungen ist das Unternehmen ausgezeichnet für die Zukunft vorbereitet.

Zahlen und Fakten

42%
reduzierter Umfang bei voller Funktionalität
13%
unused Code entfernt
Daten:
vollständig migriert
Code Cloning:
um Faktor 3 reduziert
Zukunftsaussichten:
sehr gut
Projektsicherheit:
Werk zum Festpreis
Migration:
Kein Feature Freeze

Über itestra

Wir entwickeln und erneuern Unternehmens-Softwarelösungen

Bei allem, was wir tun, leiten uns zwei zentrale Werte:

Wir wollen den bestmöglichen Mehrwert für unsere Kunden durch unsere Lösungen erzielen. Das beruht auf Qualität, also dem zweiten Punkt: Unsere MitarbeiterInnen können und sollen sich fachlich und persönlich entwickeln, immer besser werden und Großartiges erreichen. Für sich selbst, für unsere Leistungsfähigkeit und den Mehrwert unserer Kunden.

Kontakt

Sie haben Fragen zu Reverse Engineering?

Schreiben oder rufen Sie uns gerne an.

info@itestra.de
+49 89 381570-110

Software Renovation/Softwarerenovierung

Software verstehen, Vermögen erhalten

Alt aber wertvoll

Erfolgreiche IT- bzw. Software-Systeme sind bereits seit Jahrzehnten in nahezu allen Branchen vorhanden und steuern Geschäftsprozesse sowie Geräte. Sie wurden über Jahre entwickelt, sind für das Business unverzichtbar, verwalten die Kunden- und Geschäftsdaten und beinhalten präzises Detailwissen über das Geschäft. Vorhandene Software hat damit enormen Wert und ist Teil des Vermögens der Unternehmen.

Doch Effizienz und Performance nehmen ab

Technischer Wandel und sich verändernde Anforderungen lassen Softwarelösungen jedoch altern. Qualitätsmängel nehmen über die Zeit zu und ziehen abnehmende Performance, steigende Time-to-System und zunehmende Kosten nach sich. Eine Ablösung durch Neubeschaffung oder Neurealisierung ist aufgrund des enormen Umfangs der Systeme jedoch oft teuer, riskant oder sogar unrealistisch.

Softwarerenovierung ist eine neue Handlungsoption

Softwarerenovierung bedeutet vorhandene Software zu verstehen, existierende Assets zu nutzen und mit innovativen Methoden und Werkzeugen Zukunftsfähigkeit wiederherzustellen.

Zukunftsfähigkeit effizient herstellen

Systemgrößen:

0,5 Mio – 50 Mio LoC

Software-Wert:

5 Mio € – 1 Mrd €

Software-Alter:

3 – 52 Jahre, Schnitt: 25 Jahre
50%-75% Duplikation, 30% Dead Code, Workarounds, Undocumented

Technologien:

Assembler, COBOL, NATURAL, PL/I, MATLAB, VaGen, PowerBuilder, C++, Java, IMS/CICS, AngularJS, Struts, z/OS, iSeries, Windows, UNIX/Linux und 100e weitere
  • Full-Scale Redesign
  • Reverse Engineering, Wissensextraktion
  • Algorithmische Performance-Optimierung
  • Re-Dokumentation
  • Plattform-Migration, Technologie-/Framework Wechsel
  • Code-CleanUp, Stabilization
  • Architektur Change, Refactoring

Methoden und Tools bei Software Renovation

Wie wird Software renoviert?

Innovation statt Grobmechanik

Software-Renovierung ist keine mechanische Tätigkeit oder Tool sondern eine innovative Disziplin, die Spezialwissen, Methoden, besondere Aktivitäten und in Teilbereichen Werkzeuge umfasst und einsetzt.

Der Health Check schafft Klarheit

Softwarerenovierung beginnt mit einer strukturierten Bestandsaufnahme, dem Health Check, der vorhandenen Lösung in Bezug auf Abdeckungsgrad der Business-Anforderungen, technische Qualität (Implementierung, Dokumentation, Datenhaltung), Kosten (Entwicklung, Betrieb, Infrastruktur) sowie Entwicklungs- und Betriebsprozesse.

Ist – Soll = Roadmap

Die Bestandsaufnahme wird mit alternativen Lösungsdesigns, Branchen-Benchmarks und dem strategischen Zielbild des Unternehmens gegenübergestellt. Aus Ist und Soll wird unter Berücksichtigung ökonomischer Rahmenbedingungen eine Transformations-Roadmap abgeleitet, die abschließend in Projekten kurzfristig oder mehrjährig – ganz entsprechend dem Bedarf – umgesetzt wird.

Mehrwert durch Software Renovation

Wir stellen zukunftsfähig wieder her

Experte für Software-Renovierung

Auf Basis eigener wissenschaftlicher Arbeiten bewertet, optimiert und renovieren wir seit mehr als 15 Jahren umfangreiche Softwaresysteme namhafter Unternehmen diverser Branchen.

Unsere Leistungen bei Softwarerenovierung

Unser Portfolio umfasst das vollständige Re-Design von Software-Landschaften, z.B. von RPG, NATURAL, COBOL, C/++ in moderne, Objekt- und Service-orientierte sowie web-basierte Systeme in Java, C# u.a. ebenso wie Plattform-Migration, Neudokumentation von Altsoftware, Wiederherstellung von Wartbarkeit durch Code Cleanup oder Performance-Optimierung zentraler Algorithmen zur Reduzierung von Laufzeiten und CPU-Kosten um mehr als 50%.

Wir renovieren den Wert von Software

Hierbei übernehmen wir Verantwortung, garantieren vertraglich Erfolg und setzen innovative Methoden, wie manuelles Reverse Engineering, automatisiertes Vergleichstesten, Migration Tracking (zur Nachverfolgung des Redesign-Fortschritts), Write-Through Architektur zur Vermeidung von Parallelentwicklung und spezielle Analysewerkzeuge ein.

Vorteile von Reverse Engineering

Reverse Engineering vs. Neuentwicklung

Reverse Engineering beschreibt den Prozess des Analysierens und Verstehens einer bestehenden Softwarelösung, um es zu verbessern oder eine neue Lösung zu entwickeln.

Im Vergleich zu einer kompletten Neuentwicklung bietet Reverse Engineering diese Vorteile:

  • Zeit- und Kosteneinsparung
    Durch das Studium des bestehenden Designs können vorhandene Funktionalität genutzt werden und müssen nicht neu entwickelt werden, was Zeit und Kosten spart.
  • Verbesserung von Designs
    Das Verständnis der ursprünglichen Funktionsweise fördert zielgerechtes Re-Engineering, z.B. um neue Anforderungen angepasst werden zu können.
  • Vermeidung von Duplizierung
    Durch Reverse Engineering kann sichergestellt werden, dass bereits existierende Lösungen nicht erneut entwickelt werden.
  • Schutz geistigen Eigentums
    Reverse Engineering kann dazu beitragen, geistiges Eigentum zu schützen, indem man sicherstellt, dass keine bereits existierenden Designs verwendet werden.
  • Erweiterung von Kenntnissen
    Durch das Reverse Engineering können Entwickler ihr technisches Verständnis verbessern und neue Technologien und Methoden kennenlernen.
Schreiben oder rufen Sie uns gerne an.

Sie haben Fragen zu Reverse Engineering?

This form is currently disabled. Please check again later.

info@itestra.de
+49 89 381570-110

Zukunft gemeinsam gestalten.

Leave a Reply