## 5 Prototypical Validation and Case Study
### Variability4 TOSCA: An Extension of the TOSCA Standard
#### 5.1.2 Extending TOSCA for VDMM
Furthermore, we support, for example, the intrinsic function _getElementPresence_ that can be used inside an expression to specify a condition with respect to the presence of any other conditional element. In Ansible, conditional components can be modeled using the _when_ attribute [75] which conditionally includes components represented by _playbooks_[1]. The corresponding expressions use Jinja2 [76] and might be based on host facts or user-provided inputs. Relations between components are modeled implicitly by imports [1]. The same considerations which apply to Terraform also apply to Ansible. In future work, we plan to analyze the variability concepts of other popular deployment technologies and use our approach as an enabler for technologies that are not aware of such variability concepts. ### Incomplete Deployment Models

Our approach explicitly models the complete deployment model, i.e., each possible component and relation along with their configurations. In contrast, the following approaches do not explicitly model the complete deployment model but use, for example, abstract components, patterns, and/or automatic completion. These approaches complement each other and can be integrated into our approach especially since some of them are based on TOSCA [77; 78; 79; 80; 81; 82]. For example, business-related components can be assigned with conditions, while the underlying hosting stack is automatically completed or refined using patterns. We plan to integrate some of these concepts into our approach in future work. [PERSON] et al. [77; 78] presented an approach to model and execute deployment models using technology-agnostic and vendor-neutral cloud patterns, such as elastic platforms. Thereby, patterns are abstract components inside the deployment model, which are further refined into concrete components. For example, a user application is hosted on an elastic platform pattern which is refined to the components \"AWS Elastic Beanstalk Environment\" and \"AWS Elastic Beanstalk\". [PERSON] et al. [83] presented a method to transform an abstract topology into a concrete deployable topology. The abstract topology is transformed based on actions that replace a subgraph with another subgraph until the topology consists only of concrete components and relations. A search-based algorithm is used to decide which actions should be executed. They proved the feasibility of their method by implementing a prototype that is based on TOSCA. [PERSON] [79] presented a method to automatically select and deploy software components in the cloud by combining feature models and TOSCA. Thereby, the TOSCA model only consists of software components having an abstract type. Each component expresses constraints that are used to select a cloud offering along with its configuration based on a component-specific feature model. Based on this selection, the component type is changed to a concrete type which results, for example, in the deployment of the component on GCP. [PERSON] et al. [84] presented a methodology to iteratively refine an abstract application model into a deployment model while considering current customer requirements. Initially, the model consists only of coarse-grained architecture components, such as a management system or a gateway. These are then refined to architectural units, such as storage or computing components. With the use of decision trees, architectural units are refined into technical units, such as a relational database management system. The root node of a decision tree represents an architectural unit, intermediate nodes decision points, and leaf nodes deployment units. Decision points are, for example, strict or eventual consistency. Deployment units are then provisioned using configuration directives, which contain, for example, Puppet manifests. [PERSON] et al. [80] presented an approach to model and execute incomplete deployment models. Such a deployment model is incomplete in the sense that there are, for example, relations without target components.