Donnerstag, 12. September 2013

Statechart Tools: What's in the pipeline?

In the upcoming statechart tools release we made a huge refactoring to the simulation infrastructure. This long overdue refactoring was necessary to define some concise APIs to plug in custom simulation engines for different execution semantics. It took some time, but in the end our jenkins build is back to stable again ;-)
 

Debugging Features

On top of the new APIs we build some great new debugging features for the graphical statechart editor. It is possible now to set breakpoints on transitions and states. If a breakpoint is hit, the simulation engine suspends before the transition or the state is executed. The semantic element the breakpoint is attached to is highlighted in a different color as you can see in the screenshot below.

The debugging features are tightly integrated into the Eclipse debugging infrastructure. The eclipse breakpoints view shows all statechart breakpoints and allows to enable or disable them. But that's not all - it is even possible to specify conditional breakpoints with our expression language!

Simply check the 'Conditional' checkbox in the breakpoints detail pane and specify any expression that evaluates to a boolean type. For the example model above, it would be possible to specify an expression like 'ABC.interfaceVar == 10'. If the result of the expression evaluates to 'true', the breakpoint hits.

Simulation Snapshots

Another great new feature we developed are so called simulation snapshots. (Thanks to Holger who developed a large part of the snapshot functionality as his 4 + 1 project) During simulation, you can take a simulation snapshot of the current execution state via the "Snapshot view". These snapshots can be restored at any time and simplifies the process of statechart debugging significantly.





















The snapshot details section shows the execution state at the time the snapshot was taken and previews an image with all active states. Statechart Debugging has never been so easy! ;-)

This is just a short preview, detailed documentation on how to use the new features will follow. What do you think? Do you like the new features? Do you have another proposal how to simplify statechart debugging? Just leave a comment or send us some feedback via our user group !