Methoden und Werkzeuge für die Software Migration · 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos,...

Post on 09-Oct-2020

1 views 0 download

Transcript of Methoden und Werkzeuge für die Software Migration · 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos,...

pro et conpro et con

Innovative Informatikanwendungen GmbHInnovative Informatikanwendungen GmbH

10. Workshop 10. Workshop SoftwareSoftware--ReengineeringReengineering06. Mai 2008, Bad Honnef06. Mai 2008, Bad Honnef

U. U. ErdmengerErdmenger, U. Kaiser, A. Loos, D. , U. Kaiser, A. Loos, D. UhligUhlig

Methoden und Werkzeuge für die Software Migration

06.05.200806.05.2008 22U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

HistorieHistorie

Lehrstuhl Compilerbau an derTU Karl-Marx-Stadt/Chemnitz

Gründung pro et con GmbH

Methoden und kommerzielle Werkzeuge für Software Migration und Reengineering� Einsatz in Kundenprojekten

1994

1977

WSR

2008

06.05.200806.05.2008 33U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

ThemenThemen

1 Konvertierung von JCL-Prozeduren

2 Konvertierung von Host-Masken

3 Programmkonvertierung und Translatoren

4 Datenmigration

06.05.200806.05.2008 44U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

ThemenThemen

1 Konvertierung von JCL-Prozeduren

2 Konvertierung von Host-Masken

3 Programmkonvertierung und Translatoren

4 Datenmigration

06.05.200806.05.2008 55U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

Konvertierung von Konvertierung von JCLJCL--ProzedurenProzeduren

� 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.200806.05.2008 66U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

s2p.pl Convert

Analyse

Parse

SDF Perl

Analyse-ergebnisse

Syntaxbaum

Konfigurations-dateien

Repository

SDFSDF--toto--PerlPerl--TranslatorTranslator (1)(1)

� Architektur:

06.05.200806.05.2008 77U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

jcl_base.pm

BS2SYS

Betriebssystem (z.B. Solaris)

Jobs

System-programme

Programme Dateien/Datenbanken

SDFSDF--toto--PerlPerl--TranslatorTranslator (2)(2)

� Laufzeitumgebung:

06.05.200806.05.2008 88U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

ThemenThemen

1 Konvertierung von JCL-Prozeduren

2 Konvertierung von Host-Masken

3 Programmkonvertierung und Translatoren

4 Datenmigration

06.05.200806.05.2008 99U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

Konvertierung von HostKonvertierung von Host--Masken (1)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.200806.05.2008 1010U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

Host

TCP

Requestor1

Requestorn

Server1

Servern

.

.

.

.

.

.

Terminal1

Terminalk

.

.

.

Message

I/O-Daten

Konvertierung von HostKonvertierung von Host--Masken (2)Masken (2)

� Quellarchitektur:

06.05.200806.05.2008 1111U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

HTML-Masken

Message-Strukturen

Javascript-Bibliotheken Server

1

Servern

.

.

.

Webbrowser1

Webbrowserk

Webserver

Server2

.

.

.

JSON

gSOAP

JSON

gSOAP

gSOAP

Konvertierung von HostKonvertierung von Host--Masken (4)Masken (4)

� Zielarchitektur:

06.05.200806.05.2008 1212U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

SC-Konverter

ScreenConv

HTML-Masken

Screen-Informationen

Message-Strukturen

� Konvertierungsprozess:

Konvertierung von HostKonvertierung von Host--Masken (3)Masken (3)

06.05.200806.05.2008 1313U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

ThemenThemen

1 Konvertierung von JCL-Prozeduren

2 Konvertierung von Host-Masken

3 Programmkonvertierung und Translatoren

4 Datenmigration

06.05.200806.05.2008 1414U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

Programmkonvertierung und Programmkonvertierung und

TranslatorenTranslatoren

� 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.200806.05.2008 1515U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

TranslatormodellTranslatormodell

06.05.200806.05.2008 1616U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

ArchitekturunterschiedeArchitekturunterschiede

� 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.200806.05.2008 1717U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

VorfVorfüührunghrung

� File-Struktur

� Parameter zu Includefiles

� Positionierung der Kommentare im Zielcode (Heuristik)

� Konvertierung von� Zeichenketten (Nullzeichen),

� Aufzählungen,

� Strukturen,

� Initialisierungen

06.05.200806.05.2008 1818U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

MetaMeta--WerkzeugeWerkzeuge

� 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.200806.05.2008 1919U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

ZusammenfassungZusammenfassung

� 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 Meta-Werkzeugen

� Erfahrung: 2.5 - 3 Mannjahre, 1 - 1.5 Zeitjahre

06.05.200806.05.2008 2020U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

ThemenThemen

1 Konvertierung von JCL-Prozeduren

2 Konvertierung von Host-Masken

3 Programmkonvertierung und Translatoren

4 Datenmigration

06.05.200806.05.2008 2121U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

Migration der DatenbestMigration der Datenbestäändende

� 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.200806.05.2008 2222U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

SchemaSchema-- und Datenmigrationund Datenmigration

� Dateibescheibungen: BS2000 (ca. 800)

� DDL-Statements: Oracle

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

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.200806.05.2008 2323U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

Datenzugriffe im AltsystemDatenzugriffe 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.200806.05.2008 2424U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

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

EmbeddedEmbedded SQL vs. SQL vs. DatenbankDatenbank--APIAPI

��������

��������

06.05.200806.05.2008 2525U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

Dynamisches vs. Statisches HTMLDynamisches vs. Statisches HTML

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;

� Dynamisches SQL� Invariante Funktionen

� Müssen nicht neu erzeugtwerden, wenn neueTabellen entstehen

� Performance inakzeptabel

� Statisches SQL� Funktionen mit jeder

neuen Tabelle neuerzeugen

� Performance deutlich besser

06.05.200806.05.2008 2626U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

SharedShared--MemoryMemory--CacheCache

� Laden einiger Tabellen im SHM (Prozessstart)

� Semaphorengesicherte Prozesssynchronisation

� Explizites Rückschreiben durch spezielle Funktionen

06.05.200806.05.2008 2727U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

APIAPI--GenerierungGenerierung

API-Generator- fsigen -

API-Generator- fsigen -

Template (qreadd)

switch (fhd->tabcode) {

case <:FHD_HASHVALUE:>: { //statisches SQL

EXEC SQL SELECT SATZ INTO :<:BUFFER:>

FROM <:FHD_TABLE:> WHERE ...;

case T0_TAB: { //SHM

ret = readd_t0(dname, fhdkey, eb);

case UNDEF_TAB: //dynamisches SQL

EXEC SQL FETCH C INTO :data_2000;

Datensatzbeschreibungen

AMATCPIP,T0,D,50,0024,SHR=S,

SEG=(04,0020),SBF=1,LF=0,

AIM=N,VERT=I,SVSN=(1),S

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.200806.05.2008 2828U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

FazitFazit

� Methoden und Werkzeuge haben sich in kommerziellen Projekten bewährt (z.B. Amadeus, MAN/TDB)

� Software-Reengineering-Architektur (SRA)

06.05.200806.05.2008 2929U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig U. Erdmenger, U. Kaiser, A. Loos, D. Uhlig -- pro et con GmbHpro et con GmbH

pro et conpro et conInnovative Informatikanwendungen GmbHInnovative Informatikanwendungen GmbH

Analyse Analyse ·· ReengineeringReengineering ·· MigrationMigration

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

www.proetcon.deTel.: 0371/5347-353Fax: 0371/5347-345

Vielen DankVielen Dank

Uwe.ErdmengerUwe.Kaiser

Andreas.LoosDenis.Uhlig

@proetcon.de