Der Kunde
Die Zurich Gruppe Deutschland gehört zur weltweit tätigen Zurich Insurance Group. Sie zählt zu den führenden Versicherungen im Schaden- und Lebensversicherungsgeschäft in Deutschland. Sie bietet Lösungen zu Versicherungen, Vorsorge und Risikomanagement.
Ausgangslage und Herausforderung
Das Team „Actuarial Practice“ entwickelt bei Zurich die versicherungsmathematische Software für die Sales-Systeme und die Bestandsführung im Bereich der Lebensversicherung. Die Hauptaufgabe besteht darin, neue Produkte in der Lebensversicherung sowie regulatorische und administrative Themen zu implementieren.
Dabei werden die benötigten Funktionalitäten und mathematischen Verfahren auf der Basis von Vertrags- und Produktdaten im Detail konzipiert und anschließend als C-Code implementiert.
Eine mit der agilen Arbeitsweise verschränkte zeitnahe Bereitstellung der versicherungsmathematischen Software für die Einbindung in die Umsysteme ist einer der zentralen Aspekte für den gesamten Produktentwicklungsprozess.
itemis war damit beauftragt, herauszufinden, an welchen Stellen sich der Softwareentwicklungsprozess optimieren lässt. Weiter sollte itemis eine konkrete Lösung erarbeiten, um eine schnellere Bereitstellung der versicherungsmathematischen Software zu gewährleisten.
Herangehensweise und Aha-Erlebnis
Zunächst beobachteten und analysierten wir die internen Prozesse. Dabei wurde deutlich, dass zeitaufwändige, manuelle Arbeitsschritte in der IT-technischen Umsetzung die Entwicklung neuer Versicherungsprodukte verlangsamen.
Zurichs Business Analysten definierten die Funktionslogik in einem Microsoft Word-Dokument. Dies geschah in Form von (unter formalen Aspekten) wenig homogenen Pseudocode. Für die Implementierung der Funktionslogik in C-Code wurde ein externer Dienstleister beauftragt.
Die Entwicklung der versicherungsmathematischen Software, mit den Arbeitsschritten Konzeption, Implementierung und Test, erfolgt in einer Reihe von Iterationen. Testresultate zeigen dabei Notwendigkeiten zur Anpassung in der fachlichen Detaillierung sowie der versicherungstechnischen Funktionalitäten auf.
Die externe Programmierung beanspruchte, je nach Änderungsumfang, einen Zeitraum von mehreren Tagen.
Diese Verzögerung in der Bereitstellung des ausführbaren Codes unterbrach den Arbeitsrhythmus in der Softwareentwicklung eklatant.
Zurich benötigte somit eine Lösung für den Implementierungsprozess, der den Legacy Code als Basis hatte. Die Neuentwicklung des Rechenkerns war keine Option.
In dem zu wählenden Ansatz war zu berücksichtigen, dass für ein fachliches Release vorhandene Funktionen meist angepasst und nicht von Grund auf neu entwickelt werden müssen. Diese Anforderung ergab sich aus dem Umfang an bereits integrierten Produkten und der versicherungstechnischen Logik. Anpassungen an der Schnittstelle der Software gehören regelmäßig zum Änderungsumfang.
Lösung
Da Microsoft Word bereits genutzt wurde, lag es nahe, einen Editor zu entwickeln der ähnlich intuitiv bedienbar ist, die Business Analysten jedoch deutlich besser bei ihrer Arbeit unterstützt.
Mit dem Funktions-Modellierungs-Editor (FuMo-Editor) haben wir ein dediziertes Werkzeug entwickelt, das die Domänenkonzepte und die etablierte „Sprache“ von Zurich kennt.
Vor dem Hintergrund historisch gewachsener Altlasten, war ein Review des Rechenkerns erforderlich. Die rund 200.000 Zeilen Legacy Code haben wir zunächst händisch analysiert und vereinheitlicht. Ziel dieser Aktion war es Pattern in einfachere Konzepte einer möglichen Zielsprache übersetzen zu können.
Die Herausforderung bestand darin, die gegebene Funktionalität zu gewährleisten. Diese Anforderung konnten wir, auf Basis der bestehenden Testbasis von Zurich, durch umfangreiches Testen erfüllen.
Die entwickelte domänenspezifische Sprache (DSL) orientiert sich an der gewohnten Word Notation. Das Werkzeug parst den alten C-Code und übersetzt ihn mittels PatternErkennung in die „FuMo”-Sprache. Diese Funktionalität haben wir genutzt, um das bestehende System der Funktionenmodelle in die domänenspezifische Sprache des FuMo-Editors zu überführen.
In der fachlichen Weiterentwicklung wird nach den Anpassungen durch den Business Analysten aus der FuMoSprache wieder C-Code generiert. Der generierte Code ist sofort verfügbar und kann unmittelbar getestet werden.
Der FuMo-Editor baut auf dem Meta Programming System (MPS) auf. MPS ist eine Language Workbench, die wir in den letzten Jahren sehr erfolgreich zur Erstellung von domänenspezifischen Sprachen für Nicht-Programmierer eingesetzt haben.
Der große Vorteil von MPS: Es gibt keine Beschränkung hinsichtlich der Notation von Daten. Daten können in jeder erdenklichen Form definiert und visualisiert werden, beispielsweise als Text, Tabelle, Grafik oder mit versicherungsmathematischen Zeichen. Dadurch können die Business Analysten ihre Funktionen in der gewohnten Sprache und mit der üblichen Notation beschreiben.
Ähnlich wie in der Entwicklungsumgebung (IDE) eines Softwareentwicklers bietet der FuMo-Editor dem Benutzer eine Fülle an Funktionen. Diese erleichtern die Arbeit erheblich und beugen Fehlern vor.
Der FuMo-Editor …
- erkennt Fehler der Syntax und Semantik und meldet diese dem Nutzer.
- erkennt bereits existierende Funktionen, Methoden und Variablen und bietet eine Autovervollständigung an.
- navigiert auf Befehl zu anderen Regeln.
- gewährt Typsicherheit.
- ermöglicht automatisierte Refactorings.
Ein Codegenerator rundet den Funktionsumfang des Editors ab. Auf Mausklick generiert dieser aus der zuvor beschriebenen Funktion den sofort testbaren C-Code. Der zeit- und kostenintensive Umweg über den externen Dienstleister konnte eliminiert werden.
Kundenvorteil / Kundennutzen
Durch die unmittelbare Bereitstellung von Sourcecode, im Anschluss an konzeptionelle Tätigkeiten, wird der Entwicklungszyklus deutlich beschleunigt.
Die direkte Möglichkeit zum Test macht Fehler – auch fachlicher Natur – schnell sichtbar und ermöglicht zeitnahe Verbesserungen. Zudem weist der generierte Code einen sehr hohen Grad an Konsistenz und Formalität auf. Dies hat insbesondere bei der Verwendung des Codes im Debug-Modus – also innerhalb der Entwicklungszyklen – einen hohen Vorteil.
Das fachlich getriebene Fehler-Handling hat sich stark vereinfacht; IT-spezifische Fehler sind nun grundsätzlich ausgeschlossen.
In der Entwicklungsphase eines Release entfällt die manuelle Code-Implementierung, die einen Zeitraum von bis zu vier Wochen betragen hatte. Terminliche Engpässe in der Entwicklung des Rechenkerns konnten beseitigt werden.