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

Werbung
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
Herunterladen