# A Survey on Modeling Languages for Applications Hosted on Cloud-Edge Computing Environments
## 3 Results
### Description of Application Components  
CMLs strive to offer a thorough depiction of application components, encompassing their requirements, characteristics, and properties. In this section, the portrayal of application components in various CMLs is analyzed, and the properties used to describe them are examined. TOSCA includes the tosca.nodes.SoftwareComponent node type, which is used to represent application components. This node type serves as a generic software component that can be deployed on a host, which is described by the tosca.nodes.Compute node type. In a similar manner, GENTL [9] provides a description of the Component type, encompassing details such as name, unique ID (Identity), relationships with other components, and other attributes. MoDMaCAO [23] leverages the component terminology, extending OCCI Platform's Component entity, to achieve a comprehensive depiction of application components. Moreover, the Application entity is employed to describe the complete application as a whole. The combined use of these entities within the MoDMaCAO framework enables precise and detailed representations of both individual components and the overall application. Some CMLs have the capability to categorize components and provide specific descriptions based on their category type. For instance, in the UML extension proposed in [28], developers can model components as generic software and use component diagrams to describe Platform-as-a-Service (PaaS) components such as DBMS (Database Management System), OS, runtime, middleware, load balancing, and web servers. Similarly, Uni4 Cloud [13] utilizes the OVF to model components and provide details about the type of application component, such as application server, database, etc. In the documentation of TOSCA, we also found some predefined types like Database or DBMS and other application component types. Within EDMM [7], the component entity denotes a unit of an application that can be either logical, functional, or physical and is an instance of the component type entity. These component types are reusable and provide semantics for components that can be employed in diverse deployment models. Since each component can have a distinct component type, specifying the necessary semantics and actions for installation or termination, components can represent unique functionalities for applications, while component types can be repurposed in various deployment models. In other CMLs, definitions of application components are included in a model that describes constraints. For instance, in Aeolus Blender [24; 33], component specification is utilized by Zephyrus as one of the specifications to generate the deployment model, which encompasses descriptions of application components along with their associated constraints. SYBL (Simple Yet Beautiful Language) [34] enables users to describe components and set upper and lower limits associated with their costs. Each of the components has a unique ID to identify them. As previously mentioned in Section 3.2, it was highlighted that not all CMLs portray application components as platform-agnostic deployment units. Within these languages, the semantic representation of an application component is frequently tied to the target cloud service layer and the language's scope. The most common depictions of application components are services and containers. For example, in HOT [10], application components are utilized to express the abstract representation of cloud services and resources, signifying deployment artifacts. Similarly, in CAMEL [1], developers are afforded the capability to represent application components as services. Various CMLs can describe container orchestration and represent application components as containers. While these languages share the common objective of describing containers, there may be slight differences in their semantics. For instance, in their research, [PERSON] et al. [29] employ the term Tasks to denote containerized application components.