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.