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 
-  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).
-  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.
-  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.
-  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 
-  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.
-  Windowing and Operating Systems.
  
  -  X windows server/client.
  
-  MacOS.
  
-  Win32.
  
-  Java OS event model.
  
 
-  Component Systems.
  
  -  Taligent.
  
-  OpenDoc/Quilt/Bento.
  
-  OLE/COM/DCOM/ActiveX.
  
-  World Wide Web & "Push".
  
-  Java Beans.
  
-  Infospheres/Sessions.
  
 
-  Transaction Systems.
  
  -  Middleware.
  
-  Publish/Subscribe.
  
-  Request/Reply.
  
-  Two-Phase Commit.
  
-  JavaSpaces.
  
 
-  Active Networks.
  
  -  Actors.
  
-  Maisie.
  
-  UPenn/MIT Active Networks.
  
-  Doug Lea's Open Java.
  
 
 III. GEMS: A Generic Event Modelling System 
-  Rigorous definition of a generic event model,
 with a specification language.
-  Properties proven about GEM so that developers
 can reason locally about the components, events,
 event handlers, triggers, and local constraint control lists.
-  One or two simple applications.
 IV. DIAMONDS: A Design-of-Internet-Applications Methodology
using Objects, Networking, Distribution, and Sessions 
-  A more complex, extended example than the ones in section III.
-  Walking through this complex example, we show how event-oriented
development gives us a more fluid, robust system specification,
design, implementation, and correctness reasoning.
-  This suggests a methodology for event-oriented design for
Internet applications.
 V. CHEST: A Compositional, Hierarchical Event System Toolkit 
-  Style: Useful design techniques.
-  Structure: Useful algorithms.
-  Semantics: Useful reasoning techniques.
 VI. Perspectives: From Session-Oriented Programming to
Event-Oriented Programming to Task-Oriented Programming 
-  The past: Anarchy.  People bootstrapped using whatever means
available (and whatever means necessary).
-  The present: Sessions.  Events.  We're starting to use
composition and hierarchy to deal with the complexity of distributed
application development.
-  The future: Tasks.  Walk through an example.
 VII. Conclusions 
-  Reiteration of Hypothesis.  Why did we do this work?
-  Thesis.  What we've learned.
-  Antithesis.  What could be done better?  Future work.
-  Synthesis.  How to get to the point where we could actually
do task-oriented development.