U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig

06.05.2008 - ASBTSTA1,D1,K,20000,0040,SHR=S,SEG=(24,16),SBF=1,LF=0,AIM=N,VERT=I, ... Datensätze mit Schlüssel (numerisch und alphanumerisch).
837KB Größe 2 Downloads 248 Ansichten
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