Enhanced code generation from UML composite state machines

UML modelling tools provide poor support for composite state machine code generation. Generated code is typically complex and large, especially for composite state machines. Existing approaches either do not handle this case at all or handle it by flattening the composite state machine into a simple one with a combinatorial explosion of states, and excessive generated code. This paper presents a new approach that transforms a composite state machine into an equivalent set of simple state machines before code generation. This avoids the combinatorial explosion and leads to more concise and scalable generated code. We implement our approach in Umple. We report on a case study, comparing our approach to others in terms of code size and scalability.

[1]  Patrick Schaumont,et al.  A Practical Introduction to Hardware/Software Codesign , 2010 .

[2]  Timothy Lethbridge,et al.  Model oriented programming: an empirical study of comprehension , 2012, CASCON.

[3]  Andrzej Wasowski Flattening statecharts without explosions , 2004, LCTES '04.

[4]  Giancarlo Succi,et al.  Open Source Software: Quality Verification , 2013, IFIP Advances in Information and Communication Technology.

[5]  Christof Ebert,et al.  Cyclomatic Complexity , 2016, IEEE Software.

[6]  Omar Bahy Badreddin Empirical evaluation of research prototypes at variable stages of maturity , 2013, 2013 2nd International Workshop on User Evaluations for Software Engineering Researchers (USER).

[7]  Timothy Lethbridge,et al.  Umplification: Refactoring to Incrementally Add Abstraction to a Program , 2010, 2010 17th Working Conference on Reverse Engineering.

[8]  Paul J. Layzell,et al.  Spatial complexity metrics: an investigation of utility , 2005, IEEE Transactions on Software Engineering.

[9]  Chris F. Kemerer,et al.  Cyclomatic Complexity Density and Software Maintenance Productivity , 1991, IEEE Trans. Software Eng..

[10]  F. Wagner,et al.  Misunderstandings about state machines , 2004 .

[11]  Timothy Lethbridge,et al.  Combining experiments and grounded theory to evaluate a research prototype: Lessons from the umple model-oriented programming technology , 2012, 2012 First International Workshop on User Evaluation for Software Engineering Researchers (USER).

[12]  Timothy Lethbridge,et al.  Improving Code Generation for Associations: Enforcing Multiplicity Constraints and Ensuring Referential Integrity , 2013, SERA.

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

[14]  Timothy Lethbridge,et al.  Modeling Practices in Open Source Software , 2013, OSS.

[15]  David Clark,et al.  Direct Semantics of Extended State Machines , 2007, J. Object Technol..

[16]  Timothy C. Lethbridge,et al.  Perceptions of Software Modeling: A Survey of Software Practitioners , 2010 .

[17]  Timothy Lethbridge,et al.  Model oriented programming: Bridging the code-model divide , 2013, 2013 5th International Workshop on Modeling in Software Engineering (MiSE).

[18]  Timothy Lethbridge,et al.  Exploring a Model-Oriented and Executable Syntax for UML Attributes , 2013, SERA.

[19]  Timothy C. Lethbridge,et al.  Umple-Associations and Generalizations , 2011 .

[20]  Eugene Miya,et al.  On "Software engineering" , 1985, SOEN.

[21]  Omar Bahy Badreddin Umple: a model-oriented programming language , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[22]  Timothy Lethbridge,et al.  Teaching UML using umple: Applying model-oriented programming in the classroom , 2011, 2011 24th IEEE-CS Conference on Software Engineering Education and Training (CSEE&T).