DOI: 10.5281/zenodo.17781590
title: Analysis of Conflict and Dependency Graphs of Highly Configurable Software

description: Network Analysis of Large Variability Models

 

This repository contains the statistical analysis code accompanying the research paper:

"Unleashing the Power of Network Analysis to Understand Large Variability Models"

 

📊 Quick Start: Viewing Results

 

The complete analysis results are available in analysis.html. Simply open this file in any web browser to view all visualizations, statistical tests, and findings.

 

🔬 Analysis Source Code

 

The analysis is implemented in analysis.qmd, a Quarto document (R-based literate programming) that combines:

- R code for data processing and statistical analysis

- Network analysis using the igraph library

- Data visualizations with ggplot2 and related packages

- Statistical tests (Wilcoxon signed-rank tests with effect sizes)

- Narrative explanations of findings

 

To regenerate the HTML output:

quarto render analysis.qmd

 

Prerequisites

- R (version 4.0 or higher recommended)

- Quarto CLI ([installation guide](https://quarto.org/docs/get-started/))

- Required R packages (automatically installed by the script):

  - tidyverse, hrbrthemes, scales, patchwork, ggpubr, ggExtra

  - coin, gt, igraph

 

🔄 Replicating From Scratch

 

The current repository includes pre-computed results for one example model (Linux 2.6.9 x86_64) and cached degree distribution data. To replicate the full analysis across all 5,709 variability models:

 

Step 1: Download the Complete Dataset

 

Visit the Zenodo repository:

https://doi.org/10.5281/zenodo.17277789

 

This dataset (3.5 GB) contains conflict and dependency graphs for 5,709 highly configurable software systems from industrial and open-source projects.

 

What's in that Zenodo Dataset?

 

Dataset Overview:

The dataset transforms variability models into explicit graph representations, revealing transitive dependency and conflict relationships that are often hidden in traditional constraint-based representations.

 

Included Files:

  - summary.csv: Metadata and statistics for all 5,709 models including:

  - Number of nodes, core features, dead features

  - Number of require/exclude relationships

  - Domain classification (Systems Software, Security, Automotive, E-Commerce)

  - Bibliographic sources and tool provenance

 

- Graph files (for each of 5,709 models):

  - *__requires.net: Directed dependency graphs in Pajek format

  - *__excludes.net: Undirected conflict graphs in Pajek format

  - *__core.txt: List of core configuration options (always enabled)

  - *__dead.txt: List of dead configuration options (never enabled)

 

Data Provenance:

- Derived from Boolean formulas in DIMACS CNF format

- Originally synthesized using TraVarT, KMax, and KconfigSampler tools

- Validated with MiniSat 2.2.0 solver

- Includes validation scripts checking correctness against 1,000+ random nodes per model

 

Format:

- Industry-standard Pajek NET format

- Compatible with Gephi, igraph, and other network analysis tools

- Licensed under Creative Commons Attribution 4.0

 

Step 2: Place Graphs in the Repository

 

1. Download and extract the Zenodo archive

2. Copy all graph files from the Zenodo download into:

   data/graphs/

3. Ensure `summary.csv` is placed in:

   data/

 

Step 3: Run the Full Analysis

 

quarto render analysis.qmd

 

**Note:** The first run will compute degree distributions for all 5,709 models and cache them in:

- `data/requires_degree.csv` (~3.3 GB)

- `data/excludes_degree.csv` (~3.0 GB)

 

This computation is time-intensive but only needs to be performed once. Subsequent runs will use the cached data.

 

📁 Repository Structure

 

.

├── analysis.qmd              # Quarto source document with R analysis code

├── analysis.html             # Generated HTML report (view results here)

├── zenodo.Rproj              # RStudio project file

└── data/

    ├── summary.csv           # Model metadata (5,709 models)

    ├── requires_degree.csv   # Cached degree distributions (generated)

    ├── excludes_degree.csv   # Cached degree distributions (generated)

    └── graphs/               # Graph files in Pajek format

        ├── *__requires.net   # Dependency graphs

        ├── *__excludes.net   # Conflict graphs

        ├── *__core.txt       # Core features

        └── *__dead.txt       # Dead features

 

🔍 Analysis Overview

 

The analysis examines variability models through network science, focusing on:

 

Single Model Deep Dive (Linux 2.6.9 x86_64):

- Detection of core and dead features

- Identification of highly reused features (in-degree ≥ 100)

- Identification of highly conflicted features (degree ≥ 100)

- Structural patterns in dependency graphs (hub-and-spoke architecture)

- Conflict graph characteristics (sparse connectivity)

 

Cross-Model Analysis (5,709 models):

- Core and dead feature proportions by domain

- Statistical comparisons across domains (Systems Software, Security, etc.)

- Degree distribution patterns across thousands of models

- Conditional probability analysis for high-degree nodes

- Wilcoxon signed-rank tests with effect size calculations

 

## 📝 License

 

This analysis code is provided for research and educational purposes. The dataset is licensed under CC BY 4.0.

 

## 👥 Authors

 

- Ruben Heradio

- Miguel Angel Olivero

- Jose M. Sanchez

- Luis Cambelo

- David Fernandez-Amoros

 

## 🐛 Issues & Questions

 

For questions about the analysis or dataset, please contact the authors or open an issue in this repository.