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 : { //statisches SQL EXEC SQL SELECT SATZ INTO : FROM 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