2

Is there any visual programming tool for modeling statecharts representing multi-modal user interfaces? I want to build an android and windows metro app which receives input from touch and voice. The application guides the user through a questionaire to be used for screening in a healthcare scenario. The user can input the text in a textbox or generate an event by either touching a button or speaking.

I found that statecharts are used for modeling reactive system behavior such as avionics systems as originally used bu its creator David Harel with the complex task of designing software for the LAVI fighter, built by Israel Aircraft Industries; IAI to clearly and precisely specifying aircraft control behavior. He wanted to specify behavior in a manner which is intuitively clear and mathematically rigorous. Since then, statecharts have evolved from merely being a specification language to become executable, compilable and analyzable.

Since the app I want to build has complex healthcare logic and consists of a hierarchy of screenflows which changes on the input from the interacting user, sends actions to external webservices and receives asynchronous events from external web-services- all maintaining responsiveness in the user interface, I thought of modeling the app logic with statecharts. However, there are no programming tools that I could find which can enable me to separately author the application business logic and the UI(not just the screen interface components) separately. For example if I want to represent the UI ins html5/mxml and the business logic in scxml.

There are couple of tools I found, but none corresponding to the application requirements I have. Mainly there are no example of the design of such an app with a clear separation of the behavior in statecharts and the UI representation in some form of markup language. My findings:

iceman
  • 4,211
  • 13
  • 65
  • 92
  • 2
    I wrote some visualization tools for SCXML. Sandbox environment and demo here: http://goo.gl/V97ft – jbeard4 Oct 23 '12 at 19:26

1 Answers1

4

You should really have a look at http://www.statecharts.org. It comes with an editor, validations, several generators for different target languages and a nice working simulation environment.

The semantics are close to the theoretical work of David Harel and it is open source.

Some time ago and based on YAKINDU SCT Version 1 (current version is 2.6.2) i did my bachelor thesis with a similar topic. Find the following introduction of the thesis: https://vimeo.com/13440814

Further find the following video of YAKINDU SCT version 2 for an feature overview: https://www.youtube.com/watch?v=uO6MASCBPrg Further you will find an extensive set of tutorials an youtube: https://www.youtube.com/watch?v=bhru1n3ZsFo&list=PLmHMvhX5wK_aohX5sOeAMogFDwlc3gJYR

Downside from your point of view might be that SCT currently does not support SCXML and uses its own format. But as it is open source and it is based on eclipse modeling technologies (EMF) it might not be a big deal to replace the serialization and persist into an SCXML format.

  • scxml is a good way to declaratively represent the Harel statechart model. In the Statemate and Rhapsody tools that model is hidden from the user. I can't find if the Yakindu SCT scxml model is defined somewhere: https://www.itemis.com/en/yakindu/statechart-tools/documentation/#the-statechart-language – iceman Jul 01 '16 at 05:32
  • There seems to be some misunderstanding of my answer. SCT does currently NOT support scxml it uses its own format - but it won't be a big issue to implement that on top IF needed. as i understand the abstract requirement is something like 'seperating statechart/business logic from other components/implementations' which is defenitively possible to do with YAKINDU SCT. You can just use the provided generators which are available for several target languages (C, C++, Java). There are also a lot of forks in github and several examples how to implement your own custom generator on top of SCT. – Johannes Dicks Jul 05 '16 at 15:08
  • Update: maybe you would find this blog post helpful regarding SCXML support in YAKINDU SCT: https://blogs.itemis.com/custom_code_generator_scxml – Johannes Dicks Jul 13 '16 at 10:48
  • Just want to add that YAKINDU SCT now officially supports code generation into the SCXML format. See the documentation here: https://www.itemis.com/en/yakindu/state-machine/documentation/user-guide/scxml_integration – Thomas Kutz Sep 19 '19 at 14:14