Dependency solving: A separate concern in component evolution management

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.

[1]  Sorin Lerner,et al.  OPIUM: Optimal Package Install/Uninstall Manager , 2007, 29th International Conference on Software Engineering (ICSE'07).

[2]  Daniel M. Germán,et al.  Macro-level software evolution: a case study of a large software compilation , 2009, Empirical Software Engineering.

[3]  Roberto Di Cosmo EDOS deliverable WP2-D2.1: Report on Formal Management of Software Dependencies , 2005 .

[4]  Roberto Di Cosmo,et al.  Strong dependencies between software components , 2009, 2009 3rd International Symposium on Empirical Software Engineering and Measurement.

[5]  Dewayne E. Perry,et al.  Software interconnection models , 1987, ICSE '87.

[6]  Debra Richardson,et al.  The role of dependencies in component-based systems evolution , 2002, IWPSE '02.

[7]  Walt Scacchi,et al.  Maintaining Configurations of Evolving Software Systems , 1987, IEEE Transactions on Software Engineering.

[8]  Michel Rueher,et al.  Handling software upgradeability problems with MILP solvers , 2010, LoCoCo.

[9]  Timothy M. O'Brien,et al.  Maven - a developer's notebook , 2005 .

[10]  Alan W. Brown,et al.  The Current State , 2016 .

[11]  Meir M. Lehman,et al.  Software evolution in the age of component-based software engineering , 2000, IEE Proc. Softw..

[12]  Klaus Schmid,et al.  Variability Modeling for Distributed Development - A Comparison with Established Practice , 2010, SPLC.

[13]  Pascal Rapicault Dependency Management for the Eclipse Ecosystem , 2009 .

[14]  Rachel Harrison,et al.  Evolution in software systems: foundations of the SPE classification scheme: Research Articles , 2006 .

[15]  Richard S. Hall,et al.  Software release management , 1997, ESEC '97/FSE-5.

[16]  Peter C. Fishburn,et al.  LEXICOGRAPHIC ORDERS, UTILITIES AND DECISION RULES: A SURVEY , 1974 .

[17]  Rachel Harrison,et al.  Evolution in software systems: foundations of the SPE classification scheme , 2006, J. Softw. Maintenance Res. Pract..

[18]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1975 .

[19]  Josep Argelich,et al.  Solving Linux Upgradeability Problems Using Boolean Optimization , 2010, LoCoCo.

[20]  Jim des Rivières,et al.  Eclipse: A platform for integrating development tools , 2004, IBM Syst. J..

[21]  Ralf Treinen,et al.  Expressing advanced user preferences in component installation , 2009, IWOCE '09.

[22]  Hans W. Guesgen,et al.  An Empirical Study of the Component Dependency Resolution Search Space , 2010, CBSE.

[23]  Roberto Di Cosmo,et al.  Feature Diagrams as Package Dependencies , 2010, SPLC.

[24]  Roberto Di Cosmo,et al.  MPM: a modular package manager , 2011, CBSE '11.

[25]  R. S. Laundy,et al.  Multiple Criteria Optimisation: Theory, Computation and Application , 1989 .

[26]  Osgi Alliance,et al.  Osgi Service Platform, Release 3 , 2003 .

[27]  Roberto Di Cosmo,et al.  Managing the Complexity of Large Free and Open Source Package-Based Software Distributions , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[28]  Hans H. Kron,et al.  Programming-in-the-Large Versus Programming-in-the-Small , 1976, IEEE Trans. Software Eng..

[29]  Yijun Yu,et al.  Configuring common personal software: a requirements-driven approach , 2005, 13th IEEE International Conference on Requirements Engineering (RE'05).

[30]  Daniel Le Berre,et al.  On SAT Technologies for Dependency Management and Beyond , 2008, SPLC.

[31]  M.M. Lehman,et al.  Programs, life cycles, and laws of software evolution , 1980, Proceedings of the IEEE.

[32]  Pascal Rapicault,et al.  Dependency management for the eclipse ecosystem: eclipse p2, metadata and resolution , 2009, IWOCE '09.

[33]  Clemens A. Szyperski,et al.  Component software - beyond object-oriented programming , 2002 .

[34]  Thomas J. Schaefer,et al.  The complexity of satisfiability problems , 1978, STOC.

[35]  Roberto Di Cosmo,et al.  Package upgrades in FOSS distributions: details and challenges , 2008, HotSWUp '08.

[36]  Richard S. Hall,et al.  An architecture for post-development configuration management in a wide-area network , 1997, Proceedings of 17th International Conference on Distributed Computing Systems.

[37]  Ralph E. Steuer Multiple criteria optimization , 1986 .

[38]  Inês Lynce,et al.  Apt-pbo: solving the software dependency problem using pseudo-boolean optimization , 2010, ASE.

[39]  R. D. Cosmo Deliverable WP 2-D 2 . 1 Report on Formal Management of Software Dependencies , 2012 .

[40]  Pietro Abate,et al.  Manccosi Deliverable D5.2: Extension of an existing package manager to produce traces of ugradeability problems in CUDF format , 2010 .