Fusing Statecharts and Java
This paper presents \FUSE, an approach for modeling and implementing embedded software components which starts from a main-stream programming language and brings some of the key concepts of \Stchs as first-class elements within this language. Our approach provides a unified programming environment which not only preserves some of the advantages of \Stchs' formal foundation but also directly supports features of object-orientation and strong typing. By specifying \Stchs directly in \FUSE we eliminate the out-of-synch between the model and the generated code and we allow the tuning and debugging to be done within the same programming model. This paper describes the main language constructs of \FUSE and presents its semantics by translation into the Java programming language. We conclude by discussing extensions to the base language which enable the efficient static checking of program properties.
In ACM Transactions in Embedded Computing Systems, vol 12, number 1s, pages 45:1-45:21, ACM, 2013.