SMORES

SMORES implements an approach to deriving executable multi-threaded Java code from hierarchical state models of object behavior.

SMORES was inspired by the work in interative models of communication (see [Milner 1993] and [Wegner 1997]), and was the topic of my Master's project at Brown University in 1997.

What's a state model? Here's a diagram for a simple one. The rounded boxes denote states and the arrows denote transitions. (Note that when specifying objects in real applications, there are typically more actions than the trivial ones in this example.)

 state model diagram

The full state model semantics that SMORES supports includes states, events, transitions, superstates, terminators, event parameters, guards on transitions, transition actions, state entry and exit actions, and continuous state activities. Each object executes as state machine in its own thread (or two), and communicates asynchronously by sending events to other objects. An analysis-level OMT static object model for the state machine data structure is:

 diagram of OMT static object model for SMORES semantics

SMORES consists of a compiler and a set of runtime classes, the data flows of which are:

 context DFD for SMORES

The SMORES compiler itself is implemented in Java, with the help of JavaCC and my own Jomtool.

ps

"SMORES" is an acronym for "State Model Object Regurgitator of Executable Systems." It was found that the original name, "SMOG," did not have sufficiently warm and fuzzy associations.

© Copyright Neil Van Dyke      Contact