# A Survey on Modeling Languages for Applications Hosted on Cloud-Edge Computing Environments
## 2 Review Methodology
### Study Selection
#### 2.4.1 Inclusion and Exclusion Criteria  
This survey includes CMLs, domain-specific languages, and any other languages suitable for describing application components along with their deployment and runtime  
Figure 1: Prisma workflow of study selection. adaptation in edge-cloud computing environments. It is required that all related papers be written in the English language. Additionally, it is crucial to gather results directly related to Computer Science. This survey includes CMLs with specific features like cloud independence and the ability to generate high-level models. Such languages are valuable for avoiding vendor lock-in and facilitating the integration of edge and various cloud providers. Platforms utilize these languages to create provider-agnostic high-level models of applications, which are then transformed into technical configurations interpretable by the platform. According to [PERSON] [1], this transformation process is executed by a tool called a Reasoner, specialized in generating technical application descriptions from high-level ones. Another criterion for inclusion is the ability to describe the deployment unit of the application component. While many CMLs describe components as virtual machines, there is a growing trend toward container technologies like Docker and Kubernetes. As a result, there are CMLs capable of describing application components packaged as containers. This survey seeks to compile a comprehensive list of languages that can describe application components as high-level entities, services on virtual machines, or containers, covering a wide range of available options. For a platform to effectively use a CML for deploying application components, the CML must have particular properties. Application components are usually packaged as images, like Docker containers or virtual machines, and stored in repositories for edge-cloud platforms. These platforms use mechanisms to fetch these images for deployment. Hence, CMLs must describe images, repositories, and credentials for seamless deployment. Application collaborate within an application, often relying on input data and sometimes depending on each other. Understanding how CMLs represent relationships, dependencies, and environmental values of these components is crucial. These properties describe interactions and dependencies, and identify input parameters needed for successful execution. With our focus on CMLs designed to describe applications in edge-cloud computing environments, a compilation of studies is of interest to us that introduces languages capable of defining the placement options for application components as deployment criteria. Developers highly value the capability of a CML to determine whether a component should deploy in either the cloud or the edge. In edge-cloud platforms, hosts comprise both physical and virtual machines. Thus, it is crucial for CMLs to describe both types of machines and their hardware capabilities. Describing the hardware capabilities of hosts is crucial in cloud-edge continuum platforms to ensure optimal deployment of application components. Additionally, certain CMLs enable the description of geolocation coordinates as deployment criteria or constraints. This is valuable as hosts may be spread across different countries, and considering geolocation can enhance deployment outcomes. Our research is also driven by the importance of considering runtime adaptation in CMLs. Hence, it is vital to identify which CMLs allow for describing event-driven logic or optimization rules. Event syntax enables the description of QoS conditions that trigger actions to adapt an application component. These conditions provide guidelines on when and how adaptations should be executed based on specific QoS thresholds or events. Incorporating these thresholds within a model is akin to providing a step-by-step recipe for the platform to follow when QoS degrades.