Dependency solving: A separate concern in component evolution management

  • Authors:
  • Pietro Abate;Roberto Di Cosmo;Ralf Treinen;Stefano Zacchiroli

  • Affiliations:
  • Univ Paris Diderot, Sorbonne Paris Cité, PPS, UMR 7126, CNRS, F-75205,;Univ Paris Diderot, Sorbonne Paris Cité, PPS, UMR 7126, CNRS, F-75205, and INRIA Paris-Rocquencourt, F-75205,;Univ Paris Diderot, Sorbonne Paris Cité, PPS, UMR 7126, CNRS, F-75205,;Univ Paris Diderot, Sorbonne Paris Cité, PPS, UMR 7126, CNRS, F-75205,

  • Venue:
  • Journal of Systems and Software
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

Maintenance of component-based software platforms often has to face rapid evolution of software components. Component dependencies, conflicts, and package managers with dependency solving capabilities are the key ingredients of prevalent software maintenance technologies that have been proposed to keep software installations synchronized with evolving component repositories. We review state-of-the-art package managers and their ability to keep up with evolution at the current growth rate of popular component-based platforms, and conclude that their dependency solving abilities are not up to the task. We show that the complexity of the underlying upgrade planning problem is NP-complete even for seemingly simple component models, and argue that the principal source of complexity lies in multiple available versions of components. We then discuss the need of expressive languages for user preferences, which makes the problem even more challenging. We propose to establish dependency solving as a separate concern from other upgrade aspects, and present CUDF as a formalism to describe upgrade scenarios. By analyzing the result of an international dependency solving competition, we provide evidence that the proposed approach is viable.