A systematic review of code generation proposals from state machine specifications

Context: Model Driven Development (MDD) encourages the use of models for developing complex software systems. Following a MDD approach, modelling languages are used to diagrammatically model the structure and behaviour of object-oriented software, among which state-based languages (including UML state machines, finite state machines and Harel statecharts) constitute the most widely used to specify the dynamic behaviour of a system. However, generating code from state machine models as part of the final system constitutes one of the most challenging tasks due to its dynamic nature and because many state machine concepts are not supported by the object-oriented programming languages. Therefore, it is not surprising that such code generation has received great attention over the years. Objective: The overall objective of this paper is to plot the landscape of published proposals in the field of object oriented code generation from state machine specifications, restricting the search neither to a specific context nor to a particular programming language. Method: We perform a systematic, accurate literature review of published studies focusing on the object oriented implementation of state machine specifications. Results: The systematic review is based on a comprehensive set of 53 resources in all, which we have classified into two groups: pattern-based and not pattern-based. For each proposal, we have analysed both the state machine specification elements they support and the means the authors propose for their implementation. Additionally, the review investigates which proposals take into account desirable features to be considered in software development such as maintenance or reusability. Conclusions: One of the conclusions drawn from the review is that most of the analysed works are based on a software design pattern. Another key finding is that many papers neither support several of the main components of the expressive richness of state machine specifications nor provide an implementation strategy that considers relevant qualitative aspects in software development.

[1]  Anna Derezińska,et al.  Code Generation and Execution Framework for UML 2.0 Classes and State Machines , 2007 .

[2]  Ulrich Nickel,et al.  Integrating UML diagrams for production control systems , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[3]  Jiro Tanaka,et al.  Implementing the dynamic behavior represented as multiple state diagrams and activity diagrams , 2001, ACIS Int. J. Comput. Inf. Sci..

[4]  Kiri L. Wagstaff,et al.  Automatic Code Generation for Instrument Flight Software , 2008 .

[5]  David Harel,et al.  Statecharts: A Visual Formalism for Complex Systems , 1987, Sci. Comput. Program..

[6]  Luciane Lamour Ferreira,et al.  Reflective Design Patterns to Implement Fault Tolerance , 1998 .

[7]  E Domínguez,et al.  Towards a Traceable Clinical Guidelines Application , 2009, Methods of Information in Medicine.

[8]  Komminist Weldemariam,et al.  Development, Formal Verification, and Evaluation of an E-Voting System With VVPAT , 2009, IEEE Transactions on Information Forensics and Security.

[9]  Bruce Powell Douglass,et al.  Real-time UML (2nd ed.): developing efficient objects for embedded systems , 1997 .

[10]  Iftikhar Azim Niaz,et al.  Automatic code generation from UML class and statechart diagrams , 2005 .

[11]  John Crupi,et al.  Core J2EE Patterns: Best Practices and Design Strategies , 2001 .

[12]  Jiro Tanaka,et al.  Code generation from UML statecharts , 2003, ICSE 2003.

[13]  Jauhar Ali Using Java Enums to Implement Concurrent-Hierarchical State Machines , 2010 .

[14]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[15]  Mohammed Elkoutbi,et al.  Automatic Code Generation From UML State chart , 2009 .

[16]  Jiro Tanaka,et al.  Mapping UML statecharts to java code , 2004, IASTED Conf. on Software Engineering.

[17]  Ulrich Nickel,et al.  Using UML as Visual Programming Language , .

[18]  Stephan Merz,et al.  Model Checking - Timed UML State Machines and Collaborations , 2002, FTRTFT.

[19]  E. Benowitz,et al.  Auto-coding UML statecharts for flight software , 2006, 2nd IEEE International Conference on Space Mission Challenges for Information Technology (SMC-IT'06).

[20]  Culwin Fintan,et al.  The statechart design of a novel date input mechanism , 2004 .

[21]  Stephan Merz,et al.  Model Checking and Code Generation for UML State Machines and Collaborations , 2002 .

[22]  Daniel L. Moody,et al.  The “Physics” of Notations: Toward a Scientific Basis for Constructing Visual Notations in Software Engineering , 2009, IEEE Transactions on Software Engineering.

[23]  Beatriz Pérez Valle Towards decision facts management systems: the particular case of clinical guidelines , 2011 .

[24]  Foutse Khomh,et al.  DEQUALITE: building design-based software quality models , 2008 .

[25]  István Majzik,et al.  Impact of statechart implementation techniques on the effectiveness of fault detection mechanisms , 2004 .

[26]  Gergely Pintér,et al.  AUTOMATIC CODE GENERATION BASED ON FORMALLY ANALYZED UML STATECHART MODELS , 2003 .

[27]  David Lafreniere State machine design in C , 2000 .

[28]  Stefan Heinzmann Yet Another Hierarchical State Machine , 2004 .

[29]  Jiannong Cao,et al.  Model-Based Generation of Java Code , 2000, PDPTA.

[30]  Tiziana Allegrini Code generation starting from statecharts specified in UML , 2002 .

[31]  Adolfo Villafiorita,et al.  FSMC+, a tool for the generation of Java code from statecharts , 2007, PPPJ.

[32]  Anna Dereziska,et al.  Event Processing in Code Generation and Execution Framework of UML State Machines , 2007 .

[33]  István Majzik,et al.  PROGRAM CODE GENERATION BASED ON UML STATECHART MODELS , 2003 .

[34]  Bran Selic,et al.  The Pragmatics of Model-Driven Development , 2003, IEEE Softw..

[35]  Jiro Tanaka,et al.  An Object-Oriented Approach To Generate Java Code From UML Statecharts , 2005 .

[36]  Pearl Brereton,et al.  Empirical evidence about the UML: a systematic literature review , 2011, Softw. Pract. Exp..

[37]  Narayan C. Debnath,et al.  Software engineering and applications (SEA '99) : proceedings of the 3rd annual IASTED International Conference, October 6-8, 1999, Scottsdale, Arizona, USA , 1999 .

[38]  Ivan Porres,et al.  Authoring and verification of clinical guidelines: A model driven approach , 2010, J. Biomed. Informatics.

[39]  M. Petticrew,et al.  Systematic Reviews in the Social Sciences: A Practical Guide , 2005 .

[40]  Bruce Powel Douglass Real-time UML - developing efficient objects for embedded systems , 1997, Addison-Wesley object technology series.

[41]  Satoshi Kanai,et al.  Developing simulation models of open distributed control system by using object-oriented structural and behavioral patterns , 2001, Fourth IEEE International Symposium on Object-Oriented Real-Time Distributed Computing. ISORC 2001.

[42]  A. Jakimi,et al.  An Object-Oriented Approach to UML Scenarios Engineering and Code Generation , 2009 .

[43]  Jauhar Ali,et al.  Implementing statecharts using Java enums , 2010, 2010 2nd International Conference on Education Technology and Computer.

[44]  Stephen J. Mellor,et al.  Object lifecycles: modeling the world in states , 1992 .

[45]  A. Mccarthy Development , 1996, Current Opinion in Neurobiology.

[46]  Anna Derezinska,et al.  Realization of UML Class and State Machine Models in the C# Code Generation and Execution Framework , 2009, Informatica.

[47]  Satoshi Kanai,et al.  Object-oriented design pattern approach for modeling and simulating open distributed control system , 2001, Proceedings 2001 ICRA. IEEE International Conference on Robotics and Automation (Cat. No.01CH37164).

[48]  Gergely Pintér,et al.  Model based program synthesis and runtime error detection for dependable embedded systems , 2007 .

[49]  Pearl Brereton,et al.  Performing systematic literature reviews in software engineering , 2006, ICSE.

[50]  Hany H. Ammar,et al.  A Pattern Language of Statecharts , 1998 .

[51]  Barbara Kitchenham,et al.  Procedures for Performing Systematic Reviews , 2004 .

[52]  Hideki Nomoto State oriented programming , 2004, Eighth IEEE International Symposium on High Assurance Systems Engineering, 2004. Proceedings..

[53]  Miro Samek,et al.  Practical statecharts in C/C++: Quantum programming for embedded systems , 2002 .

[54]  Mary Campione,et al.  The Java tutorial , 1996 .

[55]  Jilles van Gurp,et al.  ON THE IMPLEMENTATION OF FINITE STATE MACHINES , 1999 .

[56]  Jiro Tanaka,et al.  Converting Statecharts into Java Code , 2001 .

[57]  Päivi Parviainen,et al.  Challenges in Deployment of Model Driven Development , 2009, 2009 Fourth International Conference on Software Engineering Advances.

[58]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[59]  Jean-Marc Jézéquel,et al.  Code generation from UML models with semantic variation points , 2005, MoDELS'05.

[60]  André Vital Saúde,et al.  Persistent state pattern , 2010, PLOP '10.

[61]  Anna Derezinska,et al.  Correctness issues of UML class and state machine models in the C# code generation and execution framework , 2008, 2008 International Multiconference on Computer Science and Information Technology.

[62]  Foutse Khomh,et al.  Do Design Patterns Impact Software Quality Positively? , 2008, 2008 12th European Conference on Software Maintenance and Reengineering.