EiffelState is a library and a visual editor supporting Automata-based programming in Eiffel programming language and EiffelStudio IDE.
The main ideas behind the project are the following:
The central notion of Object-oriented Automata-based programming is the automated class. Unlike a regular class in OOP the automated class is a model of an object with complex (or state-dependent) behavior. At each point such an object can be in one of the relatively small set of control states. Depending on the current control state the object can react differently to the same input. The logic of its behavior (the dependency between the control states and reactions, as well as transitions between control states) are captured in object's controller, which is essentially a finite automaton. To its clients an automated class looks just like any normal class. Inside it consists of a controller (responsible for behavior logic) and a control object, which is a regular class, responsible for behavior semantics. One of the most convenient and vivid ways to describe automata is using State-Transition Diagrams (STD) - graphs that have control states as vertices and transitions as edges. Each transition can have a condition and an action. Condition may involve events (that correspond to feature names in O-O world) and queries on control object. Actions may involve commands to the control object. Some people hate visual software construction, thus we are providing a library that allows one to describe automated classes in Eiffel as directly as possible. We also provide a visual editor that allows one to view controllers of automated objects as STD and also construct and edit them visually. The Eiffel code generated from an STD will use the library mentioned above, and thus will be high-level and human readable. This should support transparency between two different views of the controller: the textual one and the graphical one, allowing the developer to switch from one to another at any point.
Presentation on Automata-based programming: pptx/pdf