Skip to main content

Table of Contents

FM Fact Label: A Configurable and Interactive Visualization of Feature Model Characterizations

A tool to generate visualizations of feature model characterizations as a fact label similar to the nutritions fact label.

Available online

Artifact description

FM Fact Label is an online web-based application that builds an FM characterization and generates its visualization as a fact label.

It offers a web service providing an online form to upload the FM and its metadata. Currently, UVL and FeatureIDE formats are supported. At this date, the FM characterization provides up to 46 measures, including metrics and analysis results, and it is open to extension with further metrics from the SPL literature. The fact label visualization is automatically generated using D3. D3 relies on web standards (HTML, CSS, JavaScript, SVG, and JSON) to combine visualization components and a data-driven approach that allows binding arbitrary data to a Document Object Model (DOM), and then applying data-driven transformations to the DOM. The tool benefits from D3 to provide an interactive and configurable visualization of the FM characterization.

How to use it

The tool is currently deployed and available online in the following link:

https://fmfactlabel.adabyron.uma.es/

The main use case of the tool is uploading an FM and automatically generates a visualization of its characterization which can be customized and exported. The use case can be described with the following steps:

  • Upload an FM and provide metadata.
  • Build the FM characterization and generate the FM fact label.
  • Interact with the FM fact label.
  • Customize the FM fact label.
  • Export the FM fact label and the FM characterization.

Deployment of the web application locally

Requirements

Download and install

  1. Install Python 3.9+

  2. Clone this repository and enter into the main directory:

    git clone https://github.com/jmhorcas/fm_characterization

    cd fm_characterization

  3. Create a virtual environment:

    python -m venv env

  4. Activate the environment:

    In Linux: source env/bin/activate

    In Windows: .\env\Scripts\Activate

  5. Install the dependencies:

    pip install -r requirements.txt

Execution

To run the server locally execute the following command:

python run.py

Access to the web service in the localhost:

http://127.0.0.1:5000 or http://10.141.0.170:5000

Video

https://user-images.githubusercontent.com/1789503/172726157-11ebe212-41f6-47a1-9ab7-ee378ed1aab7.mp4

Architecture and repository's structure and contents

Here is a description of the architecture of the tool and the folders' structure and contents of this repository for those interesting in contributing to the project.

Software architecture

Software architecture

The tool offers a web service to upload the feature model and its metadata via an online form (Web Service component). It supports feature models in UVL and FeatureIDE formats. The FM Characterization module in the server-side gathers and manages all the feature model information. We distinguish three kinds of information: metadata (FM Metadata), structural metrics (FM Metrics), and analysis results (FM Analysis), treating all of them as an FM property. Each FM Property includes a name, a description, and a parent property for hierarchical organization in the fact label. Properties are associated with an FM Property Measure that provides the specific values of the property. For instance, the list of abstract features, their size, and ratio for the ABSTRACT FEATURES property. Analysis tasks are delegated to external tools, with the current implementation relying on flama (dark component).

Repository's structure and contents

  • run.py: It is the entry point of the application that consists on a Flask server to expose the tool's functionality.
  • fm_characterization: Contains the code related to the server-side of the architecture in charge of gathering all the information of the feature model that is needed to build the fact label. Concretely, it contains the FM Characterization, FM Metadata, FM Metrics, FM Analysis, FM property, and FM Property Measure modules, among other utils. The dependency with the flama library is on the FM Analysis module.
  • web: Contains the code related with the client-side of the architecture in charge of building the visualization of the fact label from the JSON information provided by the server-side. Concretely, it contains the HTML, CSS, and JavaScript files, where the most important is the fm_fact_label.js script which contains the main code in D3.js to build the visualization of the fact label. Also, the fm_models contains the feature models examples availables in the tool.
  • resources: Contains the images and videos used in this README.md file.

Generate Pypi package

  1. Install needed tools: pip install --upgrade build twine
  2. Build the package: python -m build
  3. Upload the package to TestPypI: python -m twine upload --repository testpypi dist/*
  4. Upload the package to PypI: python -m twine upload dist/*

References and third-party software

Metadata

Release files for fmfactlabel 1.8.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fmfactlabel 1.8.2
File Size Uploaded Provenance Actions
fmfactlabel-1.8.2.tar.gz 20.8 kB Without provenance Details for fmfactlabel-1.8.2.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for fmfactlabel 1.8.2
File Interpreter ABI Platform Actions
fmfactlabel-1.8.2-py3-none-any.whl Python 3 none any Details for fmfactlabel-1.8.2-py3-none-any.whl

Total release size: 40.8 kB

Release files / fmfactlabel-1.8.2.tar.gz

Download URL fmfactlabel-1.8.2.tar.gz
Size 20.8 kB
Tags Source
SHA-256 checksum
How to use checksums
85ac5487a3be310b3b4e4c663ea5fe359ac17f8aa5b8c2c95bcf1c502bd1f6c6
BLAKE2b-256 checksum
How to use checksums
01c1968f4d6a364c97176c297c2d1f23820c4e88a6bce8b128ae1720860604ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Release files / fmfactlabel-1.8.2-py3-none-any.whl

Download URL fmfactlabel-1.8.2-py3-none-any.whl
Size 19.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bb66674f5fe4cd809b9b337a74d1ccfa64a573d1d6d7b9122c37921ec414ade6
BLAKE2b-256 checksum
How to use checksums
bd34d8c356296f89bd5eb4c104a82ac26417135b5096c83d977fe0d35798f20a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.3

Security for fmfactlabel 1.8.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page