Overview

The architecture of uvlhub consists of five main components.

Table of contents

  1. Web application
  2. Local Storage
  3. Zenodo
  4. Automated Analysis of Feature Models (AAFM)
  5. REST API

UVLHUB Architecture Overview Figure 1: Overview of UVLHUB architecture.

Web application

The primary access point for the web application is through a web browser. Users navigate to a domain that redirects them to the Flask-developed application1. uvlhub integrates four distinct services: (2) local storage for UVL models and pertinent information, (3) Zenodo for permanent data persistence, (4) automatic feature model analysis, and (5) a RESTful service to extend functionality to other domains.

Local Storage

Users upload their models in the UVL format. All uploaded models must be syntactically valid, conforming to UVL grammar. However, models might still contain semantic errors such as dead features or conflicting constraints2. UVL files are stored locally, while related information like title, description, authors, and tags are stored in a relational database.

Zenodo

Although some model data is stored locally, it is backed up in the Zenodo general repository. This provides the UVL datasets with a DOI, facilitating the process of obtaining the identifier. If uvlhub becomes unavailable, the datasets remain on Zenodo, allowing local storage to be rebuilt without data loss.

Automated Analysis of Feature Models (AAFM)

Users can analyze2 the models within their datasets uploaded to uvlhub . This analysis, supported by the flamapy tool suite3, can determine model validity, feature count, or the number of different products derivable from the model. This component ensures each model’s syntactic correctness, delegating syntax verification responsibility to uvlhub , thus sparing users from performing this check.

REST API

Open Science advocates for open access to research data, making data generated in scientific research freely available and accessible to other researchers, practitioners, and the public. To support this, uvlhub exposes the published datasets over a REST API, which allows free integration of validated and analyzed models (from component 4) into other domains.

The API is declared by the dataset feature in app/features/dataset/api.py. The resource is generated by create_resource from splent_framework.resources.generic_resource, which registers GET, POST, PUT and DELETE on both routes:

/api/v1/datasets/
/api/v1/datasets/<int:id>

The collection endpoint wraps the datasets in an items key. Each dataset is returned with its identifier, creation date, name, DOI and the list of files it contains.

  1. Flask: Flask Project 

  2. AAFM: “Feature Models 20 Years Later: A Systematic Literature Review”  2

  3. Galindo, J. A., et al. (2023). “FLAMA: Feature Model Analysis Tool Suite”