Methoden und Werkzeuge für die Software Migration U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig pro et con Innovative Informatikanwendungen GmbH 10. Workshop Software-Reengineering 06. Mai 2008, Bad Honnef Historie WSR 2008 Methoden und kommerzielle Werkzeuge für Software Migration und Reengineering Einsatz in Kundenprojekten 1994 Gründung pro et con GmbH Lehrstuhl Compilerbau an der TU Karl-Marx-Stadt/Chemnitz 1977 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 2 Themen 1 Konvertierung von JCL-Prozeduren 2 Konvertierung von Host-Masken 3 Programmkonvertierung und Translatoren 4 Datenmigration 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 3 Themen 1 Konvertierung von JCL-Prozeduren 2 Konvertierung von Host-Masken 3 Programmkonvertierung und Translatoren 4 Datenmigration 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 4 Konvertierung von JCL-Prozeduren Jobs bilden Basis für Softwaresysteme Ablauforganisation, Archivierung, Protokollierung, ... Beispiel: System Dialog Facility (SDF) Job Control Language (JCL) auf BS2000 Interpretativ Betriebssystemabhängig Automatisierte Migration SDF-to-Perl-Translator (S2P) Jobs benötigen Laufzeitumgebung 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 5 SDF-to-Perl-Translator (1) Architektur: SDF s2p.pl Convert Perl Analyse Parse Analyseergebnisse Syntaxbaum Konfigurationsdateien Repository 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 6 SDF-to-Perl-Translator (2) Laufzeitumgebung: Dateien/Datenbanken Programme Jobs jcl_base.pm Systemprogramme BS2SYS Betriebssystem (z.B. Solaris) 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 7 Themen 1 Konvertierung von JCL-Prozeduren 2 Konvertierung von Host-Masken 3 Programmkonvertierung und Translatoren 4 Datenmigration 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 8 Konvertierung von Host-Masken (1) Konvertierung browserbasiert Unabhängigkeit von Emulatoren (proprietär, lizenzpflichtig) Einsatz von Standardsoftware und -technologien Beispiel: SCREEN COBOL Dialekt zur Maskenentwicklung auf z.B. HP-Nonstop- Systemen Ziel der Konvertierung Erhaltung des Funktionsumfangs und der Bedienung Schaffung eines Rahmens für die Weiterentwicklung 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 9 Konvertierung von Host-Masken (2) Quellarchitektur: Terminal1 . . . TCP Requestor1 Server1 . . . . . . Requestorn Servern Terminalk Host I/O-Daten Message 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 10 Konvertierung von Host-Masken (4) Zielarchitektur: JavascriptBibliotheken gSOAP Server1 gSOAP Server2 JSON Webbrowser1 .. . . . . JSON Webserver Webbrowserk gSOAP HTMLMasken 06.05.2008 MessageStrukturen U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH Servern 11 Konvertierung von Host-Masken (3) Konvertierungsprozess: SC-Konverter ScreenConv ScreenInformationen HTML-Masken 06.05.2008 MessageStrukturen U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 12 Themen 1 Konvertierung von JCL-Prozeduren 2 Konvertierung von Host-Masken 3 Programmkonvertierung und Translatoren 4 Datenmigration 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 13 Programmkonvertierung und Translatoren Translator: Automatisierte Konvertierung von Programmen aus einer Programmiersprache in eine andere Ziel: Hoher Grad an Automatisierung Wartbarkeit der Zielsprache Beispiele: S2C – SPL-to-C++-Translator TTC – TAL-to-C/C++-Translator PTC – PL/I-to-C++-Translator 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 14 Translatormodell 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 15 Architekturunterschiede Kommentarerhaltung Erhaltung von Präprozessorinformationen Schnittstelle zwischen Quell- und Zielrepräsentation Attributierte Syntaxbäume Strikte Trennung Postprozessor Zerteilung (ein Syntaxbaum pro Ziel-File) Wiedereinbau von Kommentaren und Präprozessoranweisungen Generator Traversieren der Syntaxbäume; strukturierte Code-Ausgabe in Files Einstellbare Formatierung 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 16 Vorführung File-Struktur Parameter zu Includefiles Positionierung der Kommentare im Zielcode (Heuristik) Konvertierung von Zeichenketten (Nullzeichen), Aufzählungen, Strukturen, Initialisierungen 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 17 Meta-Werkzeuge BTRACC: Parsergenerator auf Basis Backtracking Wenige Umstellungen der originalen Grammatik Verarbeitung sehr großer Grammatiken Einfache Erweiterbarkeit (neue Dialekte) CTree: Deklarative Beschreibung von Baum-Modellen Weniger Schreibaufwand Generierung der Syntaxbaumknoten als C++-Klassen Generierung von Traversierungsmethoden CBack: Generierung von C++-Zielcode C++-Bibliothek Vielfältig einstellbare Code-Formatierung Unterstützung verschiedener Dialekte 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 18 Zusammenfassung Nutzung von Translatoren in Migrationsprojekten ist praktikabel Nachweis: Amadeus, HDM, Cosmos Translator besitzt gegenüber Compiler veränderte und erweiterte Funktionalität Translatorentwicklung ist anspruchsvolle Entwicklungsaufgabe unter Nutzung von MetaWerkzeugen Erfahrung: 2.5 - 3 Mannjahre, 1 - 1.5 Zeitjahre 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 19 Themen 1 Konvertierung von JCL-Prozeduren 2 Konvertierung von Host-Masken 3 Programmkonvertierung und Translatoren 4 Datenmigration 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 20 Migration der Datenbestände Schemamigration Struktur A Struktur B Oft Wechsel Datenverwaltungssystem (Datei Datenbank) Datenmigration Inhalt A Inhalt B Oft Wechsel Zeichensätze (EBCDIC ASCII) Zugriffsmigration Prozedural (Funktionsrufe im Programmcode) Deskriptiv (Embedded SQL) 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 21 Schema- und Datenmigration Dateibescheibungen: BS2000 (ca. 800) AKTSEITE,P1,K,300,1533,SHR=S,SEG=(13,1520),SBF=1,LF=0,AIM=J,VERT=I, SVSN=(6),D AMATCPIP,T0,D,50,0024,SHR=S,SEG=(04,0020),SBF=1,LF=0,AIM=N,VERT=I, SVSN=(1),S ASBTSTA1,D1,K,20000,0040,SHR=S,SEG=(24,16),SBF=1,LF=0,AIM=N,VERT=I, SVSN=(8),D ASWSTAZU,D1,D,002,39,SHR=S,SEG=(04,0035),SBF=1,LF=0,AIM=J,VERT=I, SVSN=(5),D DDL-Statements: Oracle CREATE TABLE AMATCPIP( SATZNUMMER NUMBER(10) NOT NULL, SATZLAENGE NUMBER(4), SATZ CHAR(24), TSTAMP TIMESTAMP ) PCTFREE 20 INITRANS 5; ALTER TABLE AMATCPIP ADD CONSTRAINT PK_AMATCPIP PRIMARY KEY (SATZNUMMER); 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 22 Datenzugriffe im Altsystem Bislang ca. 20 Funktionen In API gekapselt (z.B. QREAD(DATEINAME,PUFFER)) READ, WRITE, DELETE, … Hochoptimiertes Filemanagement (Performance!) Effiziente Schlüsselverwaltung Hauptspeicher-Cache Struktur Files mit Datensätzen Datensätze mit Schlüssel (numerisch und alphanumerisch) Datensätze mit interner Strukturierung Applikationsintern: SPL-Datenstrukturen über diesen Datensätzen 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 23 Embedded SQL vs. Datenbank-API Variante 1: Embedded SQL in C++ Komplexe Code-Änderungen notwendig Überproportionaler Entwicklungsaufwand für SPL-Translator Erhöhter Testaufwand Inhomogenes Exceptionhandling Variante 2: Datenbank-API BS2000-Funktionen in C++-Funktionen konvertieren Für Translator: konventionelle Funktionsmigration Effiziente Tests (Modultest) Adäquates Exceptionhandling 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 24 Dynamisches vs. Statisches HTML Dynamisches SQL Invariante Funktionen Müssen nicht neu erzeugt werden, wenn neue Tabellen entstehen Performance inakzeptabel Statisches SQL Funktionen mit jeder neuen Tabelle neu erzeugen Performance deutlich besser 06.05.2008 sprintf((char*)stmtbuf.arr, "SELECT SATZ FROM %s WHERE SATZNUMMER=:v1", dname); stmtbuf.len=strlen((char*)stmtbuf.arr); EXEC SQL PREPARE DYNREADD FROM :stmtbuf; EXEC SQL DECLARE C CURSOR FOR DYNREADD; EXEC SQL OPEN C USING :fhdkey; EXEC SQL FETCH C INTO :data_2000; SELECT SATZ INTO :data_24 FROM AMATCPIP WHERE SATZNUMMER=:fhdkey; U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 25 Shared-Memory-Cache Laden einiger Tabellen im SHM (Prozessstart) Semaphorengesicherte Prozesssynchronisation Explizites Rückschreiben durch spezielle Funktionen 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 26 API-Generierung Template (qreadd) Datensatzbeschreibungen switch (fhd->tabcode) { case <:FHD_HASHVALUE:>: { //statisches SQL EXEC SQL SELECT SATZ INTO :<:BUFFER:> FROM <:FHD_TABLE:> WHERE ...; AMATCPIP,T0,D,50,0024,SHR=S, SEG=(04,0020),SBF=1,LF=0, AIM=N,VERT=I,SVSN=(1),S case T0_TAB: { //SHM ret = readd_t0(dname, fhdkey, eb); case UNDEF_TAB: //dynamisches SQL EXEC SQL FETCH C INTO :data_2000; API-Generator API-Generator -- fsigen fsigen -- C++-Source (qreadd) switch (fhd->tabcode) { case TAB_AMATCPIP: { //statisches SQL EXEC SQL SELECT SATZ INTO :data24 FROM AMATCPIP WHERE ...; case T0_TAB: { //SHM ret = readd_t0(dname, fhdkey, eb); case UNDEF_TAB: //dynamisches SQL EXEC SQL FETCH C INTO :data_2000; 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 27 Fazit Methoden und Werkzeuge haben sich in kommerziellen Projekten bewährt (z.B. Amadeus, MAN/TDB) Software-Reengineering-Architektur (SRA) 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 28 Vielen Dank pro et con Innovative Informatikanwendungen GmbH Analyse · Reengineering · Migration U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig Uwe.Erdmenger Uwe.Kaiser Andreas.Loos @proetcon.de Denis.Uhlig www.proetcon.de Tel.: 0371/5347-353 Fax: 0371/5347-345 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig - pro et con GmbH 29