Specification, Implementation, and Reasoning About Task-Oriented Distributed System Components

Adam Rifkin, $Id: thesis.html,v 1.4 1997/08/13 22:14:50 adam Exp $

I. Introduction

  1. Motivation. From a "local" event model (that is, on a single machine with a single operating system) to a "global" event model (that is, across networked machines within different operating systems).
  2. Background. On a map of the universe of practical distributed systems programming, we now know how to perform session-oriented development. The goal of this thesis is to discover how to specify, implement, and reason about event-oriented distributed system components. Hopefully, this will give us hints as to how to tackle the more difficult problem of task-oriented programming.
  3. Hypothesis. How to move to a global event model is to go from session-oriented programming to event-oriented programming. This will suggest ways to achieve our ultimate goal: task-oriented programming.
  4. Outline of this thesis. A summary of the contributions. Related work, GEMS, DIAMONDS, CHEST, and A perspective on styles of practical distributed system programming (sessions, events, and tasks).

II. Related Work

  1. Synopsis. We now know how to do sessions. No one is doing tasks. So this chapter will concentrate on event-oriented programming, which I divide into four central themes.
  2. Windowing and Operating Systems.
    1. X windows server/client.
    2. MacOS.
    3. Win32.
    4. Java OS event model.
  3. Component Systems.
    1. Taligent.
    2. OpenDoc/Quilt/Bento.
    3. OLE/COM/DCOM/ActiveX.
    4. World Wide Web & "Push".
    5. Java Beans.
    6. Infospheres/Sessions.
  4. Transaction Systems.
    1. Middleware.
    2. Publish/Subscribe.
    3. Request/Reply.
    4. Two-Phase Commit.
    5. JavaSpaces.
  5. Active Networks.
    1. Actors.
    2. Maisie.
    3. UPenn/MIT Active Networks.
    4. Doug Lea's Open Java.

III. GEMS: A Generic Event Modelling System

  1. Rigorous definition of a generic event model, with a specification language.
  2. Properties proven about GEM so that developers can reason locally about the components, events, event handlers, triggers, and local constraint control lists.
  3. One or two simple applications.

IV. DIAMONDS: A Design-of-Internet-Applications Methodology using Objects, Networking, Distribution, and Sessions

  1. A more complex, extended example than the ones in section III.
  2. Walking through this complex example, we show how event-oriented development gives us a more fluid, robust system specification, design, implementation, and correctness reasoning.
  3. This suggests a methodology for event-oriented design for Internet applications.

V. CHEST: A Compositional, Hierarchical Event System Toolkit

  1. Style: Useful design techniques.
  2. Structure: Useful algorithms.
  3. Semantics: Useful reasoning techniques.

VI. Perspectives: From Session-Oriented Programming to Event-Oriented Programming to Task-Oriented Programming

  1. The past: Anarchy. People bootstrapped using whatever means available (and whatever means necessary).
  2. The present: Sessions. Events. We're starting to use composition and hierarchy to deal with the complexity of distributed application development.
  3. The future: Tasks. Walk through an example.

VII. Conclusions

  1. Reiteration of Hypothesis. Why did we do this work?
  2. Thesis. What we've learned.
  3. Antithesis. What could be done better? Future work.
  4. Synthesis. How to get to the point where we could actually do task-oriented development.