Ein Plädoyer für die Scriptsprache Python

Altdaten-Migration wird oft unterschätzt

08.03.2002
Bei der Überführung von Altdaten in moderne IT-Systeme muss man praktisch auf alles gefasst sein. Für einen möglichst effizienten Migrationsprozess eignet sich die Scriptsprache Python zur Transformation der Daten in ein Zwischenformat. Von Rainer Fischbach, Ingrid Lachmann und Mario Winnemuth*

"How could God create the world within six days?" fragt ein alter Witz aus der IT-Branche. Die Antwort, "there was no installed base", erinnert die IT-Experten an die Vergeblichkeit ihres Traumes, einmal Tabula rasa zu machen und ganz von vorne anzufangen. Wo heute neue Systeme entstehen, waren meist vorher schon welche da, deren Funktionen, vor allem aber auch deren Daten übernommen werden müssen. Diese selbstverständliche Aufgabe wird oft unterschätzt. Dass sich hier beachtliche Aufwände verbergen, stellt sich meist erst dann heraus, wenn das Projekt schon weit fortgeschritten, das Budget weitgehend verbraucht oder gar überzogen ist und der Zeitplan keine Puffer mehr aufweist.

Kein Neuanfang möglichIn einer IT-Welt, in der es einen Neuanfang praktisch nicht gibt, ist es ratsam, parallel zur Ergänzung oder Ablösung alter Systeme auch die Migration der dazugehörenden Daten zu planen. Tatsächlich bedeutet dies meist ihre Runderneuerung, denn so, wie sie vorliegen, sind sie selten zu gebrauchen. Das liegt nicht nur daran, dass den Altdaten normalerweise ein anderes Modell zugrunde liegt als den neuen Anwendungssystemen und schon deshalb eine Reorganisation etwa in der Neuzuordnung von Komponenten ansteht. Hinzu kommt, dass die alten Daten meist eine Reihe von Defiziten aufweisen. Hier eine Auswahl von typischen Mängeln:

- Für identische Sachverhalte finden sich manchmal über ein Dutzend unterschiedliche Schreibweisen.

- Auch identische Attribute haben in unterschiedlichen Altsystemen und im Neusystem inkongruente Wertemengen.

- Die Daten in Altsystemen sind aus aktueller, dem neuen Zieldatenmodell entsprechender Sicht meist unvollständig.

- Unterschiedliche Quellen spiegeln unterschiedliche Bearbeitungsstände von Dokumenten beziehungsweise Vorgängen, wobei es "Datenleichen" gibt, die jahrelang nicht gepflegt wurden.

- Gleiche Anwendungen arbeiten an verschiedenen Standorten mit unterschiedlichen Datenformaten, die sich aus oft undokumentierten Abweichungen von einem inzwischen obsoleten Schema ergeben.

Bei Altdaten muss man auf praktisch alles gefasst sein. Besonders bei den Metadaten verlässt man sich meist darauf, dass die dort beschriebenen Dokumente bestimmte Formatierungen und Notationsweisen einhalten oder Dateinamen nach bestimmten Regeln aufgebaut sind. Doch Vorlagen, seien es Word-Dokumente oder CAD-Zeichnungen mit standardisierten Schriftfeldern, sind geduldig. Andererseits stellen diese beschreibenden Daten, die sich aus alten Dokumenten (Schriftverkehr, Memos, technische Zeichnungen etc.) extrahieren lassen, einen größtenteils noch ungehobenen Schatz im Unternehmen dar.

Die systematische Extraktion und Bereinigung der Altdaten inklusive einer Plausibilitätsprüfung der unterschiedlichen Quellen ist also aus zwei Gründen angesagt: Beides sichert eine weitgehend fehlerfreie Bearbeitung der Daten im neuen System und erschließt darüber hinaus bislang ungenutzte Wertpotenziale.

Angesichts dieser Situation ist ein Vorgehen unerlässlich, das Mängel systematisch aufdeckt und dokumentiert, um dann die notwendige Bereinigung und Restrukturierung auszuführen. Der erste Schritt einer erfolgreichen und nachvollziehbaren Übernahme der Altdaten besteht darin, die Migration mit dem voraussichtlichen Renovierungsaufwand und den erkennbaren Risiken im Projektplan zu berücksichtigen. Als Ad-hoc-Aktion kurz vor dem Rollout des neuen Systems sprengt die Altdaten-Migration mit der meist erforderlichen Renovierung auf jeden Fall sowohl das Budget als auch den Zeitplan.

Ein Bild für den Migrationsprozess ist der Bau einer Brücke, wobei die Widerlager an den gegenüberliegenden Ufern die Datenmodelle hinter den Altdaten einerseits und hinter dem Zielsystem andererseits darstellen. Während vom Ziel und insbesondere von den dort involvierten Datenmodellen und Ladeformaten eine ziemlich klare Vorstellung besteht, ist das Gelände auf der Ausgangsseite alles andere als gut befestigt: Um das faktisch vorhandene Datenmodell zu bestimmen, ist nicht selten ein gewisses Maß an Reverse Engineering angesagt. Befragungen der Anwender und Entwickler führen dabei oft erst nach mehreren Annahme-Test-Annahme-Schleifen zum Erfolg.

Ein Zwischenschritt ist ratsamDie Altdaten unmittelbar in das Zielformat zu überführen ist grundsätzlich nicht ratsam, da der Aufwand zur Bereinigung dabei schlecht abschätzbar ist. Ebenso können Möglichkeiten zur Vereinheitlichung von Abläufen und Werkzeugen verloren gehen. Sinnvoll ist es vielmehr, um im Bild des Brückenbaus zu bleiben, einen Mittelpfeiler einzuführen: ein Zwischenformat, in dem sich Bereinigungs- und Reorganisationsschritte bequem über standardisierte Prozesse und Werkzeuge ausführen lassen und aus dem die Zielformate leicht zu erzeugen sind. Universelle Werkzeuge setzen am einfachsten bei einem solchen Format an.

Neben der sachlichen Korrektheit stellen Reproduzierbarkeit und Revidierbarkeit der Ergebnisse die wichtigsten Qualitätskriterien für eine Migration und Renovierung dar. Die erste Voraussetzung dafür bildet ein dokumentierter Prozess mit klar abgegrenzten Schritten und überprüfbaren, gegebenenfalls auch einzeln abzunehmenden Zwischenergebnissen.

Gezielte AutomatisierungDie nächste Voraussetzung besteht schon angesichts des meist beachtlichen Datenvolumens in einer weitgehenden Automatisierung der Abläufe. Große Datenmengen manuell, etwa mittels des Suche-und-ersetze-Befehls einer Anwendung, zu bearbeiten, heißt jedoch, sich dem Risiko nicht rekonstruierbarer Fehler leichtfertig auszusetzen. Ganz abgesehen davon, dass die Ablaufgeschwindigkeit solcher Features und deren Funktionalität etwa in Sachen Textmustererkennung und -ersetzung völlig unzureichend sind.

Um zu einer konsequenten Automatisierung zu kommen, sind Werkzeuge gefragt, die sich programmieren, parametrisieren und konfigurieren lassen. Als leistungsfähige Tools erweisen sich hier Scriptsprachen mit der Fähigkeit zur Textmusterverarbeitung und einer umfassenden Schnittstelle zum Betriebssystem.

Durch ihre Leistungsfähigkeit qualifizieren sich heute vor allem "Perl" und "Python" für die Aufgaben der Datenrenovierung. Beide sind vollwertige Programmiersprachen mit mächtigen höheren Datentypen (unter anderem Textketten, Listen und Assoziativlisten) sowie Funktionen für das Erkennen und Ersetzen von Textmustern. Für Python sprechen die bessere Verfügbarkeit, Portabilität und Integration mit C/C++ und Java, die besseren Software-Engineering-Eigenschaften, die sichere Textmanipulation und die leichtere Erlernbarkeit.

Die Verfügbarkeit von Python reicht von Windows, diversen Unix-Derivaten und Linux sowie den BSD-basierten Systemen über die IBM-Welt bis hin zu Embedded Systems mit QNX und Vx Works. Hinzu kommt Unterstützung für Apple und Handhelds mit Palm OS, Epoc oder Windows CE. Einheitliche Schnittstellen zu Systemfunktionen ermöglichen es, identische Python-Programme in gleicher Weise zum Beispiel in einer Unix- und in einer Windows-Umgebung einzusetzen. Python ist integrierbar mit Anwendungen und Bibliotheken, die in C/C++ oder Java geschrieben sind. Der Aufruf von Funktionen (Methoden) ist in beiden Richtungen möglich.

Klares DesignBezüglich der Software-Engineering-Eigenschaften steht hinter Python ein klares Design: Die Kombination einfacher semantischer Konzepte, eine schlüssige Syntax, abgestufte syntaktische und semantische Einheiten für die Gliederung des Codes sowie die mächtigen Standard-Datentypen ermöglichen es, konzise, lesbare Programme auch für relativ komplexe Aufgaben in kurzer Zeit zu erstellen.

Was die sichere Textmanipulation betrifft, erlaubt Python, reguläre Ausdrücke zur Analyse und Manipulation von Texten (auch Unicode) so zu gliedern, dass sich die Erstellung und Pflege des darauf bezogenen Codes entscheidend vereinfacht und typische Fehler bei einer Änderung der Ausdrücke auszuschließen sind.

Schließlich fällt noch ins Gewicht, dass die geringe Anzahl und die Einfachheit der Konzepte sowie die Übersichtlichkeit des Quellcodes Python zu einer Sprache machen, die einfacher zu erlernen ist als die meisten Konkurrenten.

Python ist deshalb nicht nur die Sprache für Ad-hoc-Scripte, sondern auch für universelle Werkzeuge wie etwa einen konfigurierbaren Filter für tabellarische Daten, den man zur Bereinigung von obsoleten oder uneinheitlichen Schreibweisen in Altdaten einsetzen kann. Tabellen oder auch reguläre Ausdrücke spezifizieren in jedem Feld die nötigen Substitutionen.

*Rainer Fischbach, Ingrid Lachmann und Mario Winnemuth sind Mitarbeiter der ECS GmbH in Neumarkt, Oberpfalz.

Abb: Ablaufschema

Quelle: ECS