Parsergestützte Analyse und Clusterbildung für Avaloq-Skripte
Entwicklung eines Tools zur Analyse und zum Vergleich von Avaloq-Reports der BLKB, das semantische und syntaktische Ähnlichkeiten erkennt und visualisiert.

Ähnlichkeitsplot
Ausgangslage
Im Kernbankensystem der Basellandschaftlichen Kantonalbank (BLKB) existieren mehrere hundert Reports, welche mit Avaloq Script (eine zu PL/SQL ähnliche Scriptsprache) implementiert worden sind. Die Anzahl dieser Reports ist über Jahre gewachsen. Jedes Report-Script konsumiert Daten von technischen Entitäten, aggregiert diese und wandelt sie in eine fachlich angemessene Form um. In der Verwendung unterscheiden sich diese Reports voneinander, beruhen jedoch meistens auf denselben oder ähnlichen Entitäten sowie Aggregationsschritten. Die Wartbarkeit dieser Reports ist sehr aufwendig und belastet beim Ausführen das Kernbankensystem.
Zielsetzung
Das Ziel dieser Arbeit ist die Entwicklung eines Analysetools, das Avaloq Reports systematisch analysiert, miteinander vergleicht, Überschneidungen erkennt und die Ergebnisse in einer übersichtlichen Visualisierung darstellt. Die Analyseergebnisse sollen beispielsweise aufzeigen, welche Reports dieselben Datenquellen verwenden oder identische beziehungsweise ähnliche Logiken implementieren. Dabei berücksichtigt die Analyse nicht nur syntaktische Gleichheit (z. B. identischen Code), sondern auch semantische Ähnlichkeiten, um funktionale Gemeinsamkeiten aufzudecken.
Abstract Syntax Tree
Zur Berechnung der Ähnlichkeit wird eine Baumstruktur verwendet, die den Code eines Skriptes repräsentiert. Diese Struktur wird aus dem Quellcode abgeleitet und ermöglicht einen fachlichen Vergleich der Skripte.
Tree Edit Distance
Die berechnete Ähnlichkeitsmetrix, die Tree Edit Distance, zeigt wie viele Elemente der Baumstruktur verändert werden müssen, um zwei Skripte gleich zu machen. Das Bild zeigt die relative Distanz zwischen einer Auswahl von Skripten.
Anziehungs-Abstossungs-Clustering
Die Skripte werden mithilfe der Simulation von Anziehungskräften im zweidimensionalen Raum positioniert. Einzelne Punkte repräsentieren Skripte, die Distanz zwischen den Punkten zeigt die Ähnlichkeit. Je näher zwei Punkte zueinander liegen, desto ähnlicher sind die Skripte.
K-Means (2D)
Die Skripte werden anhand der verwendeten Spalten und Features mit K-Means in Gruppen eingeteilt. Die Visualisierung zeigt die Clusterbildung im zweidimensionalen Raum. Es ist zu erkennen, dass viele Skripte ähnliche Spalten/Features verwenden, was auf eine gewisse Homogenität der Skripte hinweist. Die Cluster können genutzt werden, um die meistverwendeten Daten zu identifizieren.
K-Means (3D)
Im dreidimensionalen Raum, werden die Cluster etwas besser sichtbar. Die Visualisierung zeigt erneut die Clusterbildung mit K-Means.
Integration
Damit die Expertinnen und Experten der BLKB mit den Ergebnissen arbeiten können, wurden der Code in eine für sie geeignete Form gebraucht. Der Code kann über interaktive Steuerelemente ausgeführt werden. Ausgaben werden in Form von Text, Tabellen und Diagrammen dargestellt.
Ergebnisse
Es konnte ein Parser entwickelt werden, der die Avaloq-Skripte zuverlässig einlesen und verarbeiten kann.
Bis auf 18 von insgesamt 4'684 Skripten konnten alle Skripte mit dem Parser verarbeitet werden, was einer Erfolgsquote von 99.6% entspricht.
Eine 100% Quote konnte nicht erreicht werden, da einige Skripte syntaktische Fehler enthalten und auch durch den relaxierten Parser nicht verarbeitet werden konnten.
Eine bessere Sprachdokumentation wäre wünschenswert gewesen und hätte bei der Entwicklung des Parsers geholfen, jedoch ist auch zu erwähnen, dass es sich hierbei um einen nicht vorgesehenen Use Case handelt.
Für die fachliche Gruppierung der Skripte wurden drei zentrale Eigenschaften identifiziert: Datamart, Columns und Features. Diese konnte aus dem Syntax Tree extrahiert werden. Als Ähnlichkeitsmetrik wurde die Tree Edit Distance (TED) verwendet, die die Skripte anhand deren Abstract Syntax Trees vergleicht.
So konnten Unterschiede und Gemeinsamkeiten aus fachlicher Sicht erfasst werden. Mit TED konnten zuerst kleinere Gruppen von Dateien untereinander verglichen werden und in einem nächsten Schritt auf gleicher Basis, das Clustering auf alle Skripte angewendet werden.
Zusätzlich zum Clustering mit TED wurde auch das K-Means Clustering auf Basis der Feature-Columns untersucht.
Anhand der Visualisierungen und Untersuchungen der Cluster konnten für die Skripte verschiedene Empfehlungen abgegeben werden, wie sie verbessert werden können und wie der Wartungsaufwand reduziert werden kann.
Technische Schlüsselbegriffe
- SprachenAvaloq, PL/SQL, Python
- MethodenParsing, Clustering
Kundin
Basellandschaftliche Kantonalbank
Rheinstrasse 7
Postfach
4410 Liestal
zum Unternehmen
Team
Leon Lüthi
Janick Lehmann
Betreuer
Prof. Dr. Dominik Gruntz
Daniel Kröni