Sergeev Ilya Ivanovich (iisergeev_2@edu.hse.ru)
Higher School of Economics, Faculty of Computer Science
In the last years the area of software engineering has significantly changed due to many external and internal circumstances. It is essential for the tool and approaches used in a software project to match the following market conditions, which includes the improvements to modeling methods. Among the various modeling languages available, the “Unified Modeling Language” (“UML”) [1] has emerged as a widely accepted standard for visualizing and designing system architectures. However, despite its usefulness in representing structures and behaviors, “UML” traditionally lacks formal execution semantics, which hampers its applicability in model-driven development. To eliminate this obstacle, the “Foundational Unified Modeling Language” (“fUML”) [2] was introduced as a formal subset of “UML” that provides executable semantics, enabling the precise and predictable simulation of “UML” models. The following essay contents are dedicated to “fUML” structure and application, highlighting its significance in enhancing the predictability and reliability of system designs.
The following trends should be taken into consideration, when choosing between modeling tools and approaches: The ongoing growth of the “No-Code” development market. Starting off with Computer-aided Software Engineering, the market has been constantly replenished with new approaches reducing development costs and timeframes. With the expansion of web-applications new tools similar to “Tilda” [3] started appearing. The growth of the artificial intelligence market since 2020 introduced new tools for fast development. The most well-known examples are “Github Copilot” [4] or “Devin AI” [5]. The growth of countries' local development markets. By the time of 2024 the Russian Federation, the Belarus Republic and many more states have been deprived of many systems, previously widely used by local businesses and scientists. This significantly affected banking, healthcare, energetics and other local industries, forming the need for rapid substitution and recreation of many complex software products with multifaceted domain areas. The global growth of the software market, estimated around 75% since 2016 [6]. This leads to the informatization in many local government agencies and organizations with complex domain models.
It is essential for the development approaches to conform to the state of the market and be suitable for different situations. The proposed approach implies usage of the “fUML” subset of the “Unified Modelling Language” for a variety of software projects in order to reduce the costs related to a complex domain structure. This includes creating and verifying models using the described language and rapidly creating systems responsible for the domain area without using programming languages.
The essay is based on the official “UML” and “fUML” specification, created and maintained by the “Object Management Group”. The official documentation is analyzed and used to compile a short description of the language.
For the purposes of versatile analysis scientific articles in the same area are examined. The main ones are the following: fUML as an Assembly Language for Model Transformation presented at the 7th International Conference [7] - the paper addressing the interoperability modeling platforms. Methodology and Tools for Development and Verification of formal fUML Models of Requirements and Architecture for Complex Software and Hardware Systems published by the Institute of System Programming [8] - the article addressing a creation of a unified environment for the development, based on the “fUML”. A runtime model for fUML [9] - the article addressing extensions of the “fUML” virtual machine
The alternatives analysis is based on the official documentation of the corresponding projects.
The “fUML” language is a subset of the ”Unified Modelling language”, meaning its definition being formed by excluding or including “UML” packages and elements. It’s aimed to be an intermediary between “UML” surface objects and computational platform languages. Firstly, the language includes the two main packages: “fUML Syntax” and “fUML Constraints”. The “fUML Syntax” package consists of the following packages, derived from “UML”:
1. The “CommonStructure” package, containing “Namespaces”, “Types” and “Multiplicities”. It is important to note, that the “CommonStructure” does not provide diagrams corresponding to “UML” dependencies due to those lacking execution semantics.
2. The “Values” package excludes time, duration, expressions and intervals and comprises literals: integers, strings, booleans and other types.
3. The “Classification” package, with the majority of the “UML Classifiers” package elements being excluded due to them being out of the “fUML” scope. Elements of generalization, features and properties are included.
4. The “Simple Classifiers” package excludes data types operations and interface realizations, whilst leaving signals and Behavioral Classifiers.
5. The “Structured Classifiers” package excludes connectors, ports and extensions.
6. The “Packages” package excludes Profiles and Models.
7. The “Common Behavior” package, allowing to declare entities’ behaviors, excludes Time, Change and AnyReceive events because of them being too complicated to include in the foundational model.
8. The “Activities” package includes the majority of the “UML Activities” elements because of them being important for declaring execution. The package does not include Variables, Activity Groups and Interruptible Regions.
9. The “Actions” package, likewise includes the majority of elements provided by “UML” because of their value for execution.
The “fUML__Constraints” has the same “Common Structure”, “Classification”, “Simple Classifiers”, “Structured Classifiers”, “Common Behavior”, “Activities” and “Actions” packages included.
Considering the state of the market discussed in the introduction, the following solutions may comprised by software projects in complex domains: Developing a set of traditional “UML” models. This option may be considered as the main one because of the majority of software engineers being familiar with regular “UML” models. However, for complex projects, the need to explicitly reproduce the intended model behaviors by software engineers using programming languages may lead to the increase of project time boundaries and risks. Modeling business processes with ‘Business Process Model and Notation“ (“BPMN”). Several tools offer executional capabilities for the language. But the “BPMN” approach will not be suitable for many product domains because of its focus on process management. Using the “Eclipse Modelling Framework” [10]. The framework reduces costs for manually programming models by providing tools for transforming models into programming code. Moreover, a rich ecosystem including a corresponding IDE is provided. However, using this approach may lead to an increase of project complexity due to dependence on the “Eclipse” ecosystem and need in developers team additional education.
A model composed in the boundaries of the “fUML” may be converted into the “XML Metadata Interchange” format or “XMI” [11]. The file may be provided to an “XMI“ loader, which will load its elements into computer memory. The model may be executed by an “fUML” execution engine, whose implementation is based on normative “fUML” models.
Currently the main execution engines implementations are the open-source engine from “Model Driven Solutions” and the “Moka” simulation engine for “Papirus”. The “Moka” engine additionally allows for analyzing and debugging models. Execution runtime will provide the developer with trace model, event model and a command application programming interface. The trace model contains information for analyzing the execution steps, whilst the event model allows observing state changes. The command API allows for controlling the process of execution.
A model, declared in the “fUML” language allows for describing a domain once using a simple visual language, which will not require additional education of the developers team. The model may be easily reused afterwards and will not restrict the team in terms of changing technologies. This will consequently reduce project costs after eliminating needs in additional communications with developers.
This essay covers the evolving and developing approach of modeling with the “fUML” language. The methods considered in the paper may improve key project metrics, including costs and time boundaries. There are currently several tools allowing for model execution, tracing, observing and debugging.
[1]. Unified Modeling Language, v2.5.1 | Object Management Group URL: https://www.omg.org/spec/UML/2.5.1/PDF (date of viewing: 25.10.2024).
[2].Semantics of a Foundational Subset for Executable UML Models (fUML), v1.5 | Object Management Group URL: https://www.omg.org/spec/FUML/1.5/PDF (date of viewing: 25.10.2024).
[3]. Create a website for free | Tilda Publishing Website Builder URL: https://tilda.cc/ru/ (date of viewing: 25.10.2024).
[4]. Your AI pair programmer | GitHub Copilot URL: https://github.com/features/copilot (date of viewing: 25.10.2024). [5]. Devin URL: https://devin.ai/ (date of viewing: 25.10.2024).
[6]. Software - Worldwide | Statista Market Forecast URL: https://www.statista.com/outlook/tmo/software/worldwide#revenue (date of viewing: 25.10.2024).
[7]. Massimo Tisi, Frédéric Jouault, Jérôme Delatour, Zied Saidi & Hassene Choura fUML as an Assembly Language for Model Transformation | Software Language Engineering. - 2014. - №7
[8]. Samonov A.V. Samonova G.N. Methodology and tools for development and verification of formal fUML models of requirements and architecture for complex software and hardware systems | Proceedings of the Institute of System Programming of the Russian Academy of Sciences. - 2018. - №30, issue 5. - С. 123-146.
[9]. Tanja Mayerhofer, Philip Langer, Gerti KappelAuthors Info & Claims A runtime model for fUML | MRT '12: Proceedings of the 7th Workshop on Models@run.time. - 2012. - №7. - С. 53-58. [10]. Eclipse Modeling Framework | The Eclipse Foundation URL: https://eclipse.dev/modeling/emf/ (date of viewing: 25.10.2024).
[11]. XML Metadata Interchange (XMI) Specification | Object Management Group URL: https://www.omg.org/spec/XMI/2.5.1/PDF (date of viewing: 25.10.2024).