Methoden und Werkzeuge für die Software Migration · 06.05.2008 U. Erdmenger, U. Kaiser, A. Loos,...
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