Zum Hauptinhalt springen

FU Berlin

Freie Universität Berlin
Institut für Informatik
Arbeitsgruppe Softwaretechnik und Systemsoftware 

Prof. Dr.-Ing. Klaus-Peter Löhr

Arbeitsschwerpunkte

Wir arbeiten in Bereichen, in denen sich die Fächer Softwaretechnik, Programmiersprachen, Betriebssysteme und Verteilte Systeme überschneiden.

  • Im Mittelpunkt stehen Verteilte Objektsysteme. Frühere Aktivitäten zur transparenten Verteilung objektorientierter Programme einschließlich transparenter Objektreplikation wurden abgelöst durch Arbeiten zur verteilten Java-Programmierung in Verbindung mit CORBA.
  • Aufbauend auf Arbeiten zur nichtsequentiellen Erweiterung sequentieller objektorientierter Sprachen werden Sprachkonzepte für die objektorientierte Parallelprogrammierung entwickelt.
  • Architektur und Entwurf nichtsequentieller Systeme werden im Hinblick auf komponentenbasierte Entwicklung, formale Beschreibung von Komponenten-Interaktion sowie Architekturstilanalyse untersucht.
  • Jenseits der imperativen Programmierung wird an Konzepten für die nichtsequentielle Funktionale Programmierung gearbeitet, insbesondere für die Entwicklung interaktiver graphischer Systeme.Projekte

HERON - Verteilungstransparente objektorientierte Entwicklung verteilter Applikationen (abgeschlossen 1997)

Verteilte Objektsysteme sind seit den späten 80er Jahren ein wichtiges Forschungsgebiet mit hoher Anwendungsrelevanz. Das liegt daran, daß sich die objektorientierte Softwaretechnik für die Entwicklung verteilter Systeme als besonders geeignet erwiesen hat, diese Entwicklung aber immer noch aufwendig und fehleranfällig ist. Im HERON-Projekt wurde erforscht, in welchem Umfang eine von der Verteilung abstrahierende (``verteilungstransparente'') Entwicklung verteilter Objektsysteme in heterogenen Umgebungen möglich ist. Vorausgesetzt wurde zunächst eine homogene Sprachumgebung (Eiffel; später wurde Pascal hinzugenommen). Das ermöglichte die automatische Generierung von Client Stubs und Server Stubs ohne Zuhilfenahme einer besonderen Schnittstellenbeschreibungssprache. Es zeigte sich, daß eine hochgradige Verteilungstransparenz erzielbar ist, auch hinsichtlich des Erzeugens und Wiederauffindens von Objekten im Netz. Sogar sogenanntes Fernerben (remote inheritance) hat sich als praktikabel herausgestellt. Im Projekt wurden Methoden für die automatische Generierung ladbarer Komponenten verteilter Applikationen entwickelt. Es wurde ein Konfigurator konstruiert, der nach Maßgabe weniger, in einer Konfigurierungssprache zu formulierenden Direktiven unter Einbeziehung des Stub-Generators automatisch fertige Komponenten erzeugt. Mit diesem Ansatz entfallen die vielfältigen manuellen Schritte, die auf Plattformen wie beispielsweise CORBA erforderlich sind. Die bei der Entwicklung von Server-Komponenten anfallende nichtsequentielle objektorientierte Programmierung war ein weiterer Schwerpunkt des Projekts. Hier gelang es, Eiffel um rein deklarative Concurrency Annotations zu einer nichtsequentiellen Sprache CEiffel zu erweitern, die ein erheblich komfortableres nichtsequentielles Programmieren als in anderen Sprachen ermöglicht. Die Concurrency Annotations zeichnen sich dadurch aus, daß sie besonders gut mit der Vererbung verträglich sind. Insbesondere die lästige sogenannte inheritance anomaly konnte vermieden werden.

Kontakt: Klaus-Peter Löhr, lohr@inf.fu-berlin.de

Optimale Verteilung verteilungstransparenter Software

Ein besonderer Vorteil verteilungstransparenter Programmierung besteht darin, daß einmal entwickelte Software auf sehr unterschiedliche Weise in Komponenten zerlegt und verteilt werden kann. Die Frage, wie man eine ``optimale'' Verteilung findet, wurde im HERON-Projekt nicht beantwortet. Diese Frage wird gegenwärtig für verteilte Java-Programme untersucht. Dabei geht es weniger um Lastausgleich für parallele Programme als vielmehr um die Reaktionsgeschwindigkeit verteilter sequentieller Programme, z.B. um die Lade- und Interaktionszeiten geeignet zu dimensionierender Applets.

Kontakt: André Spiegel, spiegel@inf.fu-berlin.de

JacORB

Java und CORBA: Verteilte Java-Programmierung auf einer in Java implementierten CORBA-Plattform

JacORB ist ein Object Request Broker gemäß den Spezifikationen der OMG CORBA. Er dient als Basis für die Untersuchung von Sicherheitsfragen bei verteilten Objektsystemen. JacORB ist vollstädig in Java implementiert und damit hochgradig portabel. Zum System gehört ein IDL-Übersetzer sowie ein Vertretergenerator für Java, der die IDL entbehrlich macht. Sowohl das Static Invocation Interface als auch das Dynamic Invocation Interface werden unterstützt, ferner das Interface Repository und ein Namensdienst gemäß COSS. JacORB ist eine attraktive Alternative sowohl zu kommerziellen CORBA-Implementierungen als auch zur Verwendung von Sun's RMI für die verteilte Java-Programmierung. Die Effizienz der Fernaufrufe und die volle Unterstützung des Java Threading lassen das System auch für die Parallelverarbeitung im Netz geeignet erscheinen. Die Kommunikation erfolgt über IIOP. Die Untersuchungen zur Systemsicherheit befinden sich in der Anfangsphase.

Kontakt: Gerald Brose, brose@inf.fu-berlin.de

Formale Beschreibung von Objekt-Interaktion in Frameworks

Ziel des Projekts ist es, eine Möglichkeit zur expliziten Repräsentation der Interaktionen zwischen Objekten in Form von Protokollen zu schaffen. Durch solche Interaktionsprotokolle können die objektübergreifenden Vorgänge in Frameworks formal beschrieben und besser verstanden werden. Außer zur Dokumentation sollen Interaktionsprotokolle auch dazu verwendet werden, Programmfehler bei der Erstellung oder Benutzung von Frameworks zu finden, indem überprüft wird, ob die beteiligten Klassen die Protokolle (die die Mächtigkeit von endlichen Automaten haben) einhalten. Es wurde ein Werkzeug entwickelt, das Java-Klassen auf ihre Protokoll-Konformität hin untersucht. Für Fälle, in denen dies nicht entscheidbar ist, wird an einem Werkzeug gearbeitet, das die jeweilige Klasse mit Laufzeit-Überprüfungen instrumentiert.

Kontakt: Boris Bokowski, bokowski@inf.fu-berlin.de

PIDGETS - Funktionale Programmierung interaktiver Graphik

Der hohe Aufwand, der traditionell mit der Entwicklung interaktiver graphischer Systeme verbunden ist, legt nahe, die Implementierung auf einem höheren sprachlichen Niveau - sprich deklarativ statt imperativ - vorzunehmen. Für die funktionale Programmiersprache Haskell wurde eine nichtsequentielle Erweiterung entwickelt, die einen deklarativen Umgang mit den von Tastatur und Maus gelieferten Ereignissen ermöglicht: eine Monade `` imperativer Strom'' erlaubt die Vereinbarung von Programmelementen, die bestimmte Wertefolgen generieren und Seiteneffekte haben können (in Verallgemeinerung von Haskell's seiteneffektbehafteter Monade IO, die einen einzigen Wert generiert). Für den komfortablem Umgang mit Graphik wurde eine Funktionsbibliothek entwickelt, die eine High-Level-Schnittstelle zur Funktionalität von Display PostScript darstellt. Der Systemname PIDGETS spielt auf die erzielte Vereinheitlichung sonst getrennter Konzepte an: statt pictures (beliebiges Aussehen, nicht reaktiv) und widgets (eingeschränkte Formen, reaktiv) gibt es nur ``pidgets'', d.h. beliebig gestaltbare, interaktive Bildelemente. PIDGETS ist als Erweiterung von Gofer (HUGS) implementiert.

Kontakt: Enno Scholz, scholz@inf.fu-berlin.de

Veröffentlichungen

  • S.Finke, P. Jahn, O. Langmack, K.-P. Löhr, I. Piens, Th. Wolff:  Distribution and inheritance in the HERON approach to heterogeneous computing. Proc. 13. Int. Conf. on Distr. Comp. Systems, Pittsburgh, IEEE 1993, 399-408.
  • K.-P. Löhr:  Concurrency annotations for reusable software. Comm. of the ACM 36.9, September 1993, 81-89.
  • Th. Wolff:  Transparently distributing objects with inheritance. Proc. 28. Hawaii Int. Conf. on System Sciences, IEEE 1995, 222-231.
  • E. Scholz:  A monad of imperative streams. Proc. Glasgow Functional Programming Workshop, Ullapool, Glasgow University 1996
  • E. Scholz, B. Bokowski:  PIDGETS++ - a C++ framework unifying PostScript pictures, GUI objects and lazy one-way constraints. Proc. TOOLS USA '96, Santa Barbara, Prentice-Hall 1996
  • G. Brose, B. Bokowski:  Ein Object Request Broker für Java. Informatik/Informatique (Z. d. schweiz. Inf.organisationen) 3, Juni 1997, 27-30.
  • G. Brose, K.-P. Löhr, A. Spiegel:  Java resists transparent distribution. Object Magazine, December 1997
  • J.-P. Briot, R. Guerraoui, K.-P. Löhr:  Concurrency and distribution in object-oriented programming. To appear in ACM Computing Surveys, 1998

     

Produkte und Werkzeuge

JacORB

Eine CORBA-konforme Plattform für verteilte Objektsysteme, implementiert in Java, mit Unterstützung für die verteilte und nebenläufige Java-Programmierung.  
(www.inf.fu-berlin.de/~brose/jacorb)

PIDGETS

Eine Erweiterung des Gofer-Systems HUGS für die nichtsequentielle funktionale Programmierung interaktiver Graphik mittels Display PostScript. 
(www.inf.fu-berlin.de/~scholz/pidgets)

JavaBarat

Java compiler front-end; generiert abstrakten Syntaxbaum.  
(www.inf.fu-berlin.de/~bokowski/javabarat)

Kontaktadresse:

Prof. Dr.-Ing. Klaus-Peter Löhr
Freie Universität Berlin
Institut für Informatik
Arbeitsgruppe Softwaretechnik und Systemsoftware
Takustraße 9, 14195 Berlin
Tel.: (030) 838-75110, Fax -75109