Sismic user manual¶
Sismic is a recursive acronym that stands for Sismic Interactive Statechart Model Interpreter and Checker.
Statecharts are a well-known visual modeling language for representing the executable behavior of complex reactive event-based systems. Sismic library for Python (version 3.4 or higher) provides a set of tools to define, validate, simulate, execute and test statecharts.
Sismic is mainly developed by Alexandre Decan at the University of Mons and released publicly under the GNU Lesser General Public Licence version 3.0 (LGPLv3).
Sismic provides the following features:
- An easy way to define and to import statecharts, based on the human-friendly YAML markup language
- A statechart interpreter offering a discrete, step-by-step, and fully observable simulation engine
- Built-in support for expressing actions and guards using regular Python code, can be easily extended to other programming languages
- A design-by-contract approach for statecharts: contracts can be specified to express invariants, pre- and postconditions on states and transitions
- Runtime checking of behavioral properties expressed as statecharts
- Built-in support for behavior-driven development
- Synchronous and asynchronous simulation, in real time or simulated time
- Support for communication between statecharts and co-simulation
- Statechart visualization using PlantUML
Some experimental features are also available as feature branches.
The semantics of the statechart interpreter is based on the specification of the SCXML semantics (with a few exceptions), but can be easily tuned to other semantics. Sismic statecharts provides full support for the majority of the UML 2 statechart concepts:
- simple states, composite states, orthogonal (parallel) states, initial and final states, shallow and deep history states
- state transitions, guarded transitions, automatic (eventless) transitions, internal transitions
- statechart (scoped) variables and their initialisation
- state entry and exit actions, transition actions
- internal and external parametrized events
- Statecharts definition
- Statecharts execution
- Include code in statecharts
- Design by Contract for statecharts
- Monitoring properties
- Behavior-Driven Development
- Dealing with time
- Integrate statecharts into your code
- Communication between statecharts
- Implementing other statechart semantics