The MDE approach is designed to increase productivity by maximizing compatibility between systems (by reusing standardized templates), simplifying the design process (through recurring design pattern patterns in the application domain), and fostering communication between individuals and teams working on the system (by standardizing terminology and best practices used in the application domain). In model-driven development, for example, technical artifacts such as source code, documentation, testing, etc. are algorithmically generated from a domain model. [1] Communicating state machines are one of several formalisms used in MDE tools to model and describe the behavior of distributed, simultaneous, and reactive real-time systems (e.g., automotive and avionics systems). Modeling the overall behavior of such systems is modular and at different levels of abstraction (i.e. it starts with modeling the behavior of individual objects in the system and modeling the interaction between these objects). Similarly, the analysis and verification of the accuracy of models developed to ensure their quality and integrity is carried out at two main levels. The intra-level is used to analyze the accuracy of each model in isolation from the others, while the inter-level is used to analyze the overall interoperability of those who communicate with each other. Case studies: The example in [122] is for a server that grants access to a set of resources, but only if all resources are available at the same time. They ensure system reliability in a distributed environment by adding timeouts and the two-phase validation protocol via aspect-oriented modeling. In contrast, mashup tools essentially define the flow of data/messages between components. Because all data flows are described in a diagram, this also describes the architecture of the system by displaying the connected components in the workflow.

Therefore, mashup tools integrate a component model with a deployment model. This is the first major difference from MDE approaches. Separating the deployment of logical components in MDE creates a layer of disdirection and makes prototyping less immediate compared to mashup tools. In these, it is very easy to develop concrete systems. On the other hand, in realistic development, applications often need to be mapped to different target deployments. For example, in ThingML, “configurations” map a logic model to a particular deployment. OMG focuses on model-driven architecture over advanced engineering®, i.e. creating code from abstract and human-designed modeling diagrams (e.g..class diagrams). The OMG Analysis and Design Working Group (ADTF) is leading these efforts. With a bit of humor, the group chose ADM (MDA in reverse) to call the study reverse engineering. ADM decodes architecture-driven modernization.

ADM`s goal is to create standards for reverse engineering based on legacy system models. [4] The Knowledge Discovery Metamodel (KDM) is the most advanced and describes information systems in the form of various assets (programs, specifications, data, test files, database schemas, etc.). Platform limitations: Code generation according to C and C++ is mentioned in [122]. In addition, the Tau documentation[123] also describes code generation for Java and C#, as well as a code generator they call AgileC that generates C code for embedded systems. We have the impression that the woven model can be introduced into a standard code generator. If so, they should all work. However, the templates created in this approach are platform-specific. Different code generators have certain restrictions on which UML elements can be used and how (see for example [123, p. 949]).

In addition, any use of online code naturally links the model to the runtime platforms for that programming language. This is a key difference from MDE approaches, which generally start from the models themselves. There are many business tools for specific areas, especially embedded systems. However, there is much less tool support for the WoT/IoT domain. In this context, the article states in [53,56] that “current MDE technologies are often demonstrated using known scenarios that consider that the MDE infrastructure already exists. If developers have to develop their own infrastructure because existing tools are inadequate, they will encounter a number of challenges. The use of models to link knowledge systems and architectures can significantly improve the ability of companies to assess change and opportunities and thus adapt processes and architectures. A complex system is described with many models that model different parts of the system. We call all these models together the modeling space. It is important to structure the modeling space, which can be achieved by categorizing the perspectives of the model.

As mentioned in Section 3.4, MDE approaches distinguish between objects and (logical) components as well as component deployments. The components have well-defined interfaces and ports and therefore correspond to the idea of components found in mashup tools. The main motivation of MDE is to describe the system from different angles. For some models, especially state machines, execution is possible. On the other hand, consistency between modeling perspectives can be a problem [53]. In Ref. [38, 39], Mallouli et al. proposed a framework for generating security tests, which they applied to a blogging system.

The generated tests verify that the policy specification conforms to the business logic. The business model is expressed by an advanced finite state machine (EFSM). Prohibitions, authorizations and obligations are added to the EFSM as transitional or restricted predicates. The authors developed the SIRIUS test generation tool to automatically derive tests from the system model. Model-driven architecture (MDA®) “provides a model value and architecture® approach to support the entire lifecycle of physical, organizational, and IT systems.” A model is a (representation of) an abstraction of a system. MDA® adds value by creating models with different levels of abstraction, from a conceptual view to the smallest implementation detail. The OMG literature speaks of three of these levels of abstraction or architectural viewpoints: the computer-independent model (CIM), the platform-independent model (PIM), and the platform-specific model (PSM). The CIM describes a system conceptually, the PIM describes the computational aspects of a system without reference to the technologies that can be used to implement it, and the MSP provides the technical details necessary for the implementation of the system. However, the OMG guide notes that these three architectural viewpoints are useful, but are only three of many possible viewpoints. [2] The [email protected] [108] toolkit consists of three complementary toolsets for systems engineering, runtime analysis, and model and traceability management, developed since 2017 as part of the [email protected]2 [109] project. [email protected] Model and traceability management supports traceability at all levels of system design and execution (execution) by combining metamodeling and trace impact inference techniques. The toolkit uses NeoEMF for scalable model management, EMF views for model views, and JTL for traceability management.

A template specified with a DSL is called a domain-specific template (DSM). A complex system is typically described with multiple DSMs specified in different DSLs. These models refer to each other and must be combined at runtime. Since complex systems require many DSMs to model them, it is important to structure the modeling space. One way to facilitate the analysis of the global behavior of a system of communicating state machines is to create the system`s global state space (also known as the global accessibility tree). This process is very expensive and, in some cases, can suffer from the problem of state explosion. Symbolic execution is a technique that can be used to construct an abstract and a limited version of the system`s overall state space known as a symbolic execution tree (SET), but the size of the generated trees can be very large, especially for large and complex systems composed of multiple objects.

You may also like