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.)

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:

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

The SMORES compiler itself is implemented in Java, with the help of JavaCC and my own Jomtool.
"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.
Site © 1994-2008 Neil Van Dyke neil@neilvandyke.org XHTML 1.0 Strict CSS2 Legal