Learning Software Constraints via Installation Attempts

04/24/2018
by   Ran Ben Basat, et al.
0

Modern software systems are expected to be secure and contain all the latest features, even when new versions of software are released multiple times an hour. Each system may include many interacting packages. The problem of installing multiple dependent packages has been extensively studied in the past, yielding some promising solutions that work well in practice. However, these assume that the developers declare all the dependencies and conflicts between the packages. Oftentimes, the entire repository structure may not be known upfront, for example when packages are developed by different vendors. In this paper we present algorithms for learning dependencies, conflicts and defective packages from installation attempts. Our algorithms use combinatorial data structures to generate queries that test installations and discover the entire dependency structure. A query that the algorithms make corresponds to trying to install a subset of packages and getting a Boolean feedback on whether all constraints were satisfied in this subset. Our goal is to minimize the query complexity of the algorithms. We prove lower and upper bounds on the number of queries that these algorithms require to make for different settings of the problem.

READ FULL TEXT
research
06/05/2018

On the evolution of technical lag in the npm package dependency network

Software packages developed and distributed through package managers ext...
research
01/23/2021

Präzi: From Package-based to Call-based Dependency Networks

Software reuse has emerged as one of the most crucial elements of modern...
research
01/11/2016

Software for enumerative and analytic combinatorics

We survey some general-purpose symbolic software packages that implement...
research
08/24/2023

npm-follower: A Complete Dataset Tracking the NPM Ecosystem

Software developers typically rely upon a large network of dependencies ...
research
05/13/2020

Many-Objective Software Remodularization using NSGA-III

Software systems nowadays are complex and difficult to maintain due to c...
research
03/25/2022

Using Solver-Aided Languages to Build Package Managers

Open-source software is critical for modern development, but most open-s...
research
06/21/2019

Semantics-aware Virtual Machine Image Management in IaaS Clouds

Infrastructure-as-a-service (IaaS) Clouds concurrently accommodate diver...

Please sign up or login with your details

Forgot password? Click here to reset