Getting started

Table of contents

  1. Overview
  2. Installation
  3. Basic operations
    1. Validate the model
    2. Get all configurations depicted in a model
    3. Validate a configuration
    4. Choose the solver, or let flamapy choose
  4. I want to use more feature models analysis operations:
    1. Option 1: using the feature models distribution
    2. Option 2: using the framework as it is

Overview

flamapy provides an ecosystem to build up automated analysis tools AAFM. While the framework support any kind of variability model, it provides easy use and extensibility in the case of feature models.

Installation

To analyze feature models, you can rely on the flamapy distribution. It requires Python >= 3.11.

It’s recommended to use a virtual environment (venv) for installation to avoid conflicts with other packages. Here’s how you can set it up:

python -m venv flamapyenv && source flamapyenv/bin/activate

Install the distribution:

pip install flamapy

Basic operations

To test some basic operations, you need UVL models. Several are available at UVLHub. If you prefer, you can download a test one:

wget -q "https://raw.githubusercontent.com/flamapy/flamapy/main/resources/models/simple/valid_model.uvl"
wget -q "https://raw.githubusercontent.com/flamapy/flamapy/main/resources/configurations/valid_configuration.csvconf"

Now we will present some examples of operations so you can check if the tool is working as expected, but first, let’s see which operations are available using the flamapy command line.

flamapy --help

Validate the model

To check if the model is valid, run:

flamapy satisfiable ./valid_model.uvl

Get all configurations depicted in a model

To generate all possible configurations from the model, use:

flamapy configurations ./valid_model.uvl

Validate a configuration

To verify if a specific configuration is valid, run:

flamapy satisfiable_configuration ./valid_model.uvl ./valid_configuration.csvconf

Choose the solver, or let flamapy choose

Each operation runs on a default analysis plugin (SAT for the queries above, BDD for counting and sampling). Add --backend bdd (or sat, z3) to pick one yourself, or --backend auto to let the query planner pick the best installed plugin for that model; -v shows which one ran. Details in Choosing the backend (query planner).

flamapy configurations_number ./valid_model.uvl --backend auto -v

I want to use more feature models analysis operations:

flamapy runs on a framework based on Core / Plugins architecture. If you are interested in more feature model operations, check the flamapy as a tool

Option 1: using the feature models distribution

We have prepared flamapy to provide support by default to the most used operations in a ready and easy way of using. You can execute it using an easy-to-use facade, a cli o directly using the framework. You can see how to execute each operation and which interface are available in the [operations] documentation.

Option 2: using the framework as it is

You can choose not to use the distribution. In that case, yo have to select the most suitable plugins for your variability model analysis. Therefore you have to install the core and the corresponding plugins.

You can check the rest of plugins.