\chapter{Conclusion and Future Work}
\label{chapt:Conclusion}

We have studied the semantic variability of statecharts within the framework of Big-Step Modeling Languages, and have implemented a selection of options from said framework in the SCCD project. In the process, the SCCD project has been extended with an action language and a major design overhaul, making a clearer separation between statechart execution and the rest of the runtime. We have also studied the semantics of YAKINDU Statechart Tools, and compared our solution to it, in the domain of semantic variability, as well as overall feature-set, internal mechanics and usability. Example models were implemented in both solutions, to conclude that the default semantics of both SCCD and YAKINDU allow development of complex statechart models. Interestingly, the same models would also behave correctly under a range of semantic options. We suggest using restrictive options for maximality and event lifeline semantics, because those make it easy for the modeler to predict how the model behaves.

For future work, we foresee restoring Class Diagram functionality in our fork of the SCCD project. We also think a small extension to the semantics of SCCD could mimic YAKINDU's \emph{event-driven} execution perfectly. We could also adopt other features of YAKINDU (and other statechart implementations), such as choice pseudo-states, entry- and exit-points and forks and joins.

For the action language, the static analyzer could be extended to detect the memory locations potentially (depending on branches taken) read and written by statements and expressions. This could be used for (1) statically detecting whether evaluation of a guard condition potentially causes the statechart's variables to be written (an error currently only detected at runtime), and (2) potentially implementing the semantic option \textsc{Dataflow} for Order of Small Steps (OOSS).

Since the language of SCCD is platform-independent, the execution runtime should be ported to different platforms, as was the original intention. Lessons learned from the separation of statechart execution from the rest of the runtime (event queueing etc.), and insight into YAKINDU's optimized code generation, could fuel a new attempt at developing a multi-semantics, multi-target code generator.
