{'fraction_non_alphanumeric': 0.022115384615384617, 'fraction_numerical': 0.0, 'mean_word_length': 5.233532934131737, '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}}
Modelling UML state machines with FoCaLiZe

UML and OCL are largely adopted as a standard to describe the static and the dynamic aspects of systems and to specify their properties. Model driven engineering (MDE) techniques can be used to automatically generate code from such models. For critical systems, formal methods are frequently used together with UML/OCL models in order to analyse and check model properties. In this paper, we propose a combination of UML/OCL and FoCaLiZe, an object-oriented development environment using a proof-based formal approach. More specifically, we propose a formal transformation of UML state machines conditioned with OCL constraints into FoCaLiZe specifications that can be refined to generate executable code. The proposed transformation supports communication between a class structure and its state machine. Thanks to Zenon, the automatic theorem prover of FoCaLiZe, errors of the original UML/OCL model, if any, are automatically detected. We illustrate our translation with a concrete case study.