From UML State Machine to code and back again!
Van Cam Pham, Ansgar Radermacher, Sébastien Gérard
Citation: Position Papers of the 2016 Federated Conference on Computer Science and Information Systems, M. Ganzha, L. Maciaszek, M. Paprzycki (eds). ACSIS, Vol. 9, pages 283–290 (2016)
Abstract. UML state machines and their visual representations are much more suitable to describe logical behaviors of system entities than equivalent text based description such as IF-THEN-ELSE or SWITH-CASE constructions. Although many industrial tools and research prototypes can generate executable code from such a graphical language, generated code could be manually modified by programmers. After code modifications, round-trip engineering is needed to make the model and code consistent, which is a critical aspect to meet quality and performance constraint required for software systems. Unfortunately, current UML tools only support structural concepts for round-trip engineering such as those available from class diagrams. In this paper, we address the round-trip engineering of UML state-machine and its related generated code. We propose an approach consisting of a forward process which generates code by using transformation patterns, and a backward process which is based on code pattern detection to update the original state machine model from the modified code. We implemented a prototype and conducted several experiments on different aspects of the round-trip engineering to verify the proposed approach.
- G. Mussbacher, D. Amyot, R. Breu, J.-m. Bruel, B. H. C. Cheng, P. Collet, B. Combemale, R. B. France, R. Heldal, J. Hill, J. Kienzle, and M. Schöttle, “The Relevance of Model-Driven Engineering Thirty Years from Now,” ACM/IEEE 17th International Conference on Model Driven Engineering Languages and Systems (MODELS), pp. 183–200, 2014.
- G. Booch, J. Rumbaugh, and I. Jacobson, The Unified Modeling Language User Guide, 1998, vol. 3.
- B. P. Douglass, Real-time UML : developing efficient objects for embedded systems, 1999.
- A. Shalyto and N. Shamgunov, “State machine design pattern,” Proc. of the 4th International Conference on.NET Technologies, 2006.
- B. Selic, “What will it take? a view on adoption of model-based methods in practice,” Software & Systems Modeling, vol. 11, no. 4, pp. 513–526, 2012.
- J. Hutchinson, M. Rouncefield, and J. Whittle, “Model-driven engineering practices in industry,” in Proceedings of the 33rd International Conference on Software Engineering, ser. ICSE ’11. New York, NY, USA: ACM, 2011, pp. 633–642.
- T. Hettel, M. Lawley, and K. Raymond, “Model synchronisation: Definitions for round-trip engineering,” in Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), vol. 5063 LNCS, 2008, pp. 31–45.
- S. Sendall and J. Küster, “Taming model round-trip engineering,” Proceedings of Workshop Best Practices for Model-Driven Software Development, p. 13, 2004.
- SparxSystems, “Enterprise Architect,” Sep. 2016. [Online]. Available: http://www.sparxsystems.eu/start/home/
- IBM, “Ibm Rhapsody.” [Online]. Available: http://www.ibm.com/developerworks/downloads/r/rhapsodydeveloper/
- V. Spinke, “An object-oriented implementation of concurrent and hierarchical state machines,” Information and Software Technology, vol. 55, no. 10, pp. 1726–1740, Oct. 2013.
- “Papyrus Designer.” [Online]. Available: https://wiki.eclipse.org/Papyrus_Designer
- I. Niaz and J. Tanaka, “Mapping UML statecharts to java code.” IASTED Conf. on Software Engineering, pp. 111–116, 2004.
- R. Gronback, “Eclipse Modeling Project.” [Online]. Available: http://www.eclipse.org/modeling/emf/
- CEA-List, “Papyrus Homepage Website,” https://eclipse.org/papyrus/.
- J. N. Foster, M. B. Greenwald, J. T. Moore, B. C. Pierce, and A. Schmitt, “Combinators for Bidirectional Tree Transformations: A Linguistic Approach to the View-update Problem,” ACM Trans. Program. Lang. Syst., vol. 29, no. 3, May 2007.
- OMG, “Precise Semantics Of UML Composite Structures,” no. October, 2015.
- “Moka Model Execution.” [Online]. Available: https://wiki.eclipse.org/Papyrus/UserGuide/ModelExecution
- J. O. Blech and S. Glesner, “Formal verification of java code generation from uml models,” in . . . of the 3rd International Fujaba Days, 2005, pp. 49–56.
- O. Badreddin, T. C. Lethbridge, A. Forward, M. Elasaar, and H. Aljamaan, “Enhanced Code Generation from UML Composite State Machines,” Modelsward 2014, pp. 1–11, 2014.
- F. Simulator, “FSM Simulator,” http://ivanzuzak.info/noam/webapps/fsm_simulator/.
- I. A. Niaz, J. Tanaka, and others, “Mapping UML statecharts to java code.” in IASTED Conf. on Software Engineering, 2004, pp. 111–116.
- E. Domínguez, B. Pérez, A. L. Rubio, and M. A. Zapata, “A systematic review of code generation proposals from state machine specifications,” pp. 1045–1066, 2012.
- D. Cutting and J. Noppen, “An Extensible Benchmark and Tooling for Comparing Reverse Engineering Approaches,” International Journal on Advances in Software, vol. 8, no. 1, pp. 115–124, 2015. [Online]. Available: https://ueaeprints.uea.ac.uk/53612/
- D. Frankel, Model Driven Architecture: Applying MDA to Enterprise Computing. New York, NY, USA: John Wiley & Sons, Inc., 2002.
- S. Jörges, “Construction and evolution of code generators: A model-driven and service-oriented approach,” Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics), pp. 1–265, 2013.
- T. Kleín, U. A. Nickel, J. Niere, and A. Zündorf, “From uml to java and back again,” University of Paderborn, Paderborn, Germany, Tech. Rep. tr-ri-00-216, September 1999.
- H. Giese and R. Wagner, “Incremental model synchronization with triple graph grammars,” in Model Driven Engineering Languages and Systems. Springer, 2006, pp. 543–557.
- Q. Omg, “Meta Object Facility (MOF) 2.0 Query/View/Transformation Specification,” Transformation, no. January, pp. 1–230, 2008.
- G. Bergmann, I. Ráth, G. Varró, and D. Varró, “Change-driven model transformations: Change (in) the rule to rule the change,” Software and Systems Modeling, vol. 11, no. 3, pp. 431–461, 2012.