{'fraction_non_alphanumeric': 0.01780104712041885, 'fraction_numerical': 0.0010471204188481676, 'mean_word_length': 4.975, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Symbolic execution of UML-RT State Machines

UML-RT is one of the languages used in the industrial practice of the model-driven development (MDD). The language is a proper profile of UML 2 and it uses UML-RT State Machines to model behavior of systems. This paper presents a technique for a symbolic execution of these machines, which introduces modular treatment of action code. This feature clearly separates the symbolic execution of the state machine itself from the symbolic execution of its action code and thus facilitates support of different action languages. The separation is achieved via a formalization of UML-RT State Machines in which functions are used to represent the result of the symbolic execution of the action code. Key parts of the technique are formalized and its implementation is presented. An example is used to illustrate different analyses including reachability, invariant checking, output analysis and test case generation.