Ein Translator für die COBOL-Java-Migration

نویسندگان

  • Uwe Erdmenger
  • Denis Uhlig
چکیده

In [1] wurden von pro et con bereits erste Ansätze der Migration von COBOL nach Java dargestellt. Nach dem erfolgreichen Abschluss des Projektes SOAMIG1 sollen in diesem Beitrag die Ergebnisse im Bereich der COBOLMigration vorgestellt werden. Neben einem Überblick über das entstandene Werkzeug CoJaC (COBOL to Java Converter) sollen dabei die Migration der Schnittstellen eines COBOL-Programms und eine differenzierte Betrachtung des generierten Java-Codes bezüglich seiner Wartbarkeit und Qualität im Vordergrund stehen. 1 CoJaC COBOL to Java Converter CoJaC besteht aus einer Reihe von Werkzeugen (toolchain), welche in ihrer Gesamtheit die Konvertierung von COBOL-Programmen in Java-Klassen ermöglichen. Alle Werkzeuge sind Entwicklungen von pro et con. Es handelt sich dabei um Komponenten der hauseigenen Software Reengineering Architecture (SRA [2]), welche für diese Funktionalität orchestriert wurden. Die folgende Abbildung zeigt einen Überblick des gesamten Werkzeugs: Die Einund Ausgaben des Werkzeugs sind mit COBOL bzw. Java vorgegeben. Als Schnittstellenformat der einzelnen Verarbeitungsschritte kommt bei CoJaC XML zum Einsatz. Alle Werkzeuge der SRA nutzen ein einheitliches Modell zur Abbildung von COBOL respektive Java. Die Modellierung erfolgt in einem eigenen Format, welches vom Metatool mk_obj verarbeitet und den anderen Werkzeugen in entsprechender Form zur Verfügung gestellt wird. Bei CoJaC kommt das Modell als XML-Schema und Definition der internen Darstellung (C++) zum Einsatz. Den Einstieg in die Verarbeitung bildet das COBOLFrontend. Die COBOL-Programme werden analysiert und in das bereits beschriebene Zwischenformat überführt. Die entstandene XML-Datei ist die Eingabe des Modelltransformators. Dieser baut auf dem regelbasierten Metawerkzeug TransR auf. Der Transformator überführt den ihm übergebenen COBOL-Syntaxgraphen in eine Menge von Java-Graphen und stellt diese in Form von XML-Dateien bereit. Abschließend werden diese Ausgaben durch den Java-Generator JGen und den Formatierer JFormat in Java-Quellcode überführt. 2 Realisierung der eingebetteter Systeme Neben der interaktiven Kommunikation zwischen Programmen haben externe Datenbestände im Allgemeinen eine große Bedeutung für produktive COBOL-Systeme. Dazu zählen unter anderem Dateien und Datenbanken. Bei der Migration eines Legacy-Systems müssen alle diese Schnittstellen bzw. deren Zugriffsoperationen migriert werden.CoJaC unterstützt in der aktuellen Version die Abbildung von COBOL-Servern in Java Webservices und die Migration von COBOL-Dateien und embedded SQL. Bei der Abbildung der Kommunikationsschnittstellen der COBOL-Server als Services wird auf die Möglichkeiten der Java Webservices zurückgegriffen. Je ein COBOLServer bildet einen Webservice. Für die Realisierung des Services kommt ein Bottom-Up-Verfahren zum Einsatz. Als erster Schritt des Verfahrens erfolgt eine Analyse der bisherigen Schnittstellen, welche zumeist über eine Middleware (z. B. TUXEDO) bedient wurden. Die Kommunikation findet über Messages in einem spezifischen Format statt. Das Message-Format wird in den COBOL-Servern definiert. Auf Basis dieser Informationen wird im zweiten Schritt der Verarbeitung eine Java-Klasse mit einer Schnittstellen-Methode generiert. Diese bedient das nach Java umgesetzte Meldungsformat. Die Methode und die Klasse werden über Annotationen (z. B. @WebMethod, @WebService) markiert. Anschließend werden vorhandene Werkzeuge wie JAXWS genutzt, um den eigentlichen Webservice zu erstellen und in Betrieb zu nehmen. In COBOL gibt es Dateien verschiedener Speicherorganisation (sequentiell, index-sequentiell, relativ). Die Umsetzung der Dateien aus COBOL sieht vor, die vorhandenen Dateien in Datenbanktabellen zu überführen. Die Informationen zu Dateinamen, Organisationsstrukturen, Schlüsselfeldern sowie die Satzstruktur werden in einem vorgelagerten Analyseschritt aus den COBOL-Programmen ermittelt. Auf Basis dieser Informationen werden SQLSkripte zur Erstellung der Datenbanktabellen generiert, welche die COBOL-Dateien repräsentieren. Die Migration des COBOL-Programms orientiert sich an der von CoJaC vorgegebenen Strategie. Die in COBOL vorhandenen Befehle zur Interaktion mit Dateien werden als Aufrufe von Methoden nach Java übernommen. Auch embedded SQL wird nicht direkt übernommen, da es in Java keinen echten Präprozessor gibt, welcher die eingebetteten SQL-Kommandos umsetzen würde. Aus diesem Grund werden die vorhandenen statischen SQL-Befehle in dynamisches SQL überführt. Da bei dieser Umsetzung viel organisatorischer Code notwendig ist (Datenbankverbindung herstellen, Exceptions behandeln, ...), werden, analog zu der Umsetzung der Dateien, Funktionen in einem Laufzeitsystem bereit gestellt. 3 Wartbarkeit und Codequalität Generiertem Quellcode wird nachgesagt, nur schwer oder überhaupt nicht wartbar zu sein. Dass dieses Vorurteil nicht zutrifft, wurde jedoch schon mehrfach bewiesen. Als ein Beispiel seien die aus der Programmiersprache SPL automatisch generierten C++-Programme aus dem Projekt ARNO [3] benannt. Auch für das Werkzeug CoJaC wurde die Wartbarkeit und Lesbarkeit des Quellcodes als eine wesentliche Eigenschaft des Werkzeuges definiert. Die daraus entstehenden Vorund auch Nachteile sollen in den folgenden Abschnitten diskutiert werden. Ein wesentliches Konzept von CoJaC ist die Abbildung eines COBOL-Programms in ein semantisch äquivalentes Java-Programm bzw. eine Java-Klasse. Das bringt natürlich mit sich, dass die bestehende Programmstruktur übernommen wird. Wenn im Legacy-Code eine nach aktuellen Gesichtspunkten ungünstige Struktur vorlag, wird diese mit migriert. Wenn die Struktur verändert werden soll, muss sie entweder schon im Legacy-System (Sanierung) oder im neuen Java-System (Refaktorierung) vorgenommen werden. Die COBOL-Datenobjekte werden in Java zu Objekten von Klassen der Laufzeitbibliothek, welche aus den COBOL-Typen abgeleitet wurden. Diese Klassen bilden die Eigenschaften der entsprechenden COBOLDatentypen ab. Sie wurden darüber hinaus mit den entsprechenden Java-Standard-Typen (z. B. CharSequence, Number) verknüpft. Dadurch ist für dieWeiterentwicklung des migrierten Systems die Möglichkeit gegeben, auch nach Java-Standard zu entwickeln, ohne an das durch die Migration vorgegebene Typsystem gebunden zu sein. Auch das Laufzeitsystem an sich ist eine wichtige DesignEntscheidung bei diesem Ansatz. Es erlaubt die Verwendung von kurzen und sprechenden Aufrufen in den generierten Klassen, da die Implementierung der Funktionalität „versteckt“ werden kann. Das hat zur Folge, dass der generierte Quelltext kurz und verständlich bleibt. Da die Aufrufe aber kein „reiner“ Java-Quellcode sind, wird eine gewisse Bindung an das Laufzeitsystem unabdingbar. Eine zukünftige Weiterentwicklung ohne die Laufzeitfunktionen ist aber dennoch möglich. Der gewählte Ansatz stellt einen gesunden Kompromiss zwischen der Übernahme alter Strukturen und Funktionen in einen typschen Java-Quelltext dar. Dadurch wird der Quelltext für sowohl COBOLals auch für Java-Entwickler lesund wartbar. Selbstverständlich kann CoJaC an spezielle Kundenwünsche flexibel angepasst werden.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Ein Framework für Integration, Build und Deployment bei Maintenance- und Reengineering-Prozessen

Andreas Fuhr, Volker Riediger (Universität Koblenz-Landau): An Integrated Tool Suite for Model-Driven Software Migration towards Service-Oriented Architectures Uwe Erdmenger, Denis Uhlig (pro et con GmbH): Ein Translator für die COBOL-Java-Migration Uwe Erdmenger (pro et con GmbH): Ein Metatool für die model-to-model Transformation Harry Sneed (SORING Kft): Migration einer veralteten Power-Buil...

متن کامل

Test der semantischen Äquivalenz von Translatoren am Beispiel von CoJaC

Im Rahmen des SOAMIG-Projektes1 wurde u.a. der Translator CoJaC (COBOL to Java Converter) entwickelt. Entwicklungsziele von CoJaC waren, performanten und zum COBOL-Code semantisch äquivalenten Java-Code zu generieren. Der vorliegende Beitrag beschreibt die Testmethodik zum Nachweis dieser semantischen Äquivalenz. 1 CoJaC COBOL to Java Converter CoJaC konvertiert ein vollständiges COBOL-Programm...

متن کامل

Vom COBOL-Server zum Java-Webservice

Der Einsatz von Konvertierungswerkzeugen (Translatoren) beschleunigt ein Migrationsprojekt wesentlich und gestaltet es kostengünstiger. Gegenstand der folgenden Ausführungen sind ausgewählte Entwicklungsaspekte für einen COBOL→ Java-Translator, an dem die Firma pro et con GmbH gegenwärtig arbeitet. Dabei werden neben der reinen 1:1-Sprachmigration auch insbesondere die Anpassungen des Quellcode...

متن کامل

Testautomatisierung am Beispiel des COBOL-to-Java-Converters CoJaC

Im Rahmen von Migrationsprojekten steht immer die Frage, ob sich das migrierte System semantisch äquivalent zum Ausgangssystem verhält. Dabei liegen die Fehlerquellen nicht nur in den migrierten Programmen, sondern auch in deren Laufzeitumgebung. Der folgende Beitrag zeigt die Integration von automatisch erstellten Unittests am Beispiel der Migration von COBOL nach Java mit CoJaC. Das Ziel ist ...

متن کامل

Messung und Nachdokumentation eines uralten COBOL-Systems zwecks der Migration zu Java

Abstrakt: Der folgende Beitrag beschreibt die Analyse einer uralten COBOL Applikation als Voraussetzung für eine Migration zu Java. Zunächst wurde der Code gemessen um Basisdaten für die Aufwandsschätzung und Risikoanalyse zu gewinnen. Anschließend wurde der Code nochmals zwecks der Nachdokumentation bearbeitet. Aus den COBOL-Sourcen wurden sämtliche Verweise auf externe Objekte – Calls, IO-Ope...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:
  • Softwaretechnik-Trends

دوره 31  شماره 

صفحات  -

تاریخ انتشار 2011