Übersetzung von Parallelen Java-Programmen nach CSP

Themengebiet

Eine Auseinandersetzung mit Nebenläufigkeitsproblemen ist nicht nur bei der ``Systemprogrammierung'' im Betriebsystembau oder in der Prozeßdatenverarbeitung notwendig. Nebenläufige Programmsysteme spoelen in zunehmenden Maß auch in der ``Anwendungsprogrammierung'' eine Rolle. Die Abläuffe in vielen Anwendungsproblemen sind selbst nebenläufig, so daß eine Programmierung ohne speziell hierfür vorgesehene Sprachmittel sogar eine Erschwernis bedeutet.

Die Verbindung von Rechner- und Kommunikationstechnologie hat zur Konstruktion von Rechnernetzen geführt. Mit ihnen kann eine Dezentralisierung der Informationsverarbeitung erfolgen. Dezentralisierung wird mit verteilten Systemen erreicht. Verteiltheit impliziert Nebenläufigkeit.

Die nebenläufige Aktivitäten heiß in der Programmiersprache Java ``Programmfäden'' oder Threads. Die meinsten Programmiersprachen bieten keine eingebaute Unterstützung für Threads: Threads werden dort wie alle anderen Aufrufe an das System behandelt. In Java dagegen sind Threads integraler der Sprache und nahtlos in das Konzept der Objektorientierung eingebaut. Threads gehören -auch in Java- zu den fortgeschrittenen Techniken der Programmierung.

Bei der Programmierung mit mehreren Threads lauert die Gefahr von Verklemmungen (Deadlocks). Die Korrektheit nebenläufiger Programme, z.B. Verklemmungsfreiheit, läßt sich mit der Hilfe formaler Methoden zusichern oder nachweisen -- auch wenn dies mit eingem Aufwandverbunden ist.

CSP - Communicating Sequential Processes - ist eine der bekanntesten Methode, die fuuml;r die Beschreibung nebenläufiger Programme geeignet sind. In CSP wird ein nebenläufiges Programm in mehrere Teile zerlegt, die parallel laufen und miteinander kommunizieren. Die Komposition der Teilprogramme ist nicht komplizierter als die sequentielle Komposition von Anweisungen in traditionellen Programmiersprachen. Das Werkzeug FDR -- Failures Divergence Refinement -- bietet die Möglichkeit zur automatischen Prüfung und Validation nebenläufiger Programme.

Aufgabe

Nebenläufiger Java-Programme soll nach CSP übersetzt werden. Dafür wird Java als Implementierungssprache benutzt.

Voraussetzungen

Literatur

C.A.R.Hoare (1985). Communicating Sequential Processes. Prentice-Hall International Series in Computer Science.
Formal Systems (Europe) Ltd (1997). Failures-Divergence Refinement -- FDR2 User Manual.
Bettina Buth, Michel Kouvaras, Jan Peleska, Hui Shi (1997). Deadlock Analysis for a Fault-Tolerant System . In Michael Johnson (Ed.): Algebraic Methodology and Software Technology. Proceedings of the AMAST'97, Sidney, Australia, December 1997, Springer LNCS 1349, 60-75.
(Hui Shi, 22.07.1998)