Generalized resolution and cutting planes
Annals of Operations Research
Architecture-level dependence analysis in support of software maintenance
ISAW '98 Proceedings of the third international workshop on Software architecture
Extended static checking for Java
PLDI '02 Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation
ArchJava: connecting software architecture to implementation
Proceedings of the 24th International Conference on Software Engineering
Analyzing Dependencies in Large Component-Based Systems
Proceedings of the 17th IEEE international conference on Automated software engineering
LFP '84 Proceedings of the 1984 ACM Symposium on LISP and functional programming
DATE '03 Proceedings of the conference on Design, Automation and Test in Europe - Volume 1
Managing the Complexity of Large Free and Open Source Package-Based Software Distributions
ASE '06 Proceedings of the 21st IEEE/ACM International Conference on Automated Software Engineering
Effective and scalable software compatibility testing
ISSTA '08 Proceedings of the 2008 international symposium on Software testing and analysis
Package upgrades in FOSS distributions: details and challenges
Proceedings of the 1st International Workshop on Hot Topics in Software Upgrades
Macro-level software evolution: a case study of a large software compilation
Empirical Software Engineering
License integration patterns: Addressing license mismatches in component-based development
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
Dependency management for the eclipse ecosystem: eclipse p2, metadata and resolution
Proceedings of the 1st international workshop on Open component ecosystems
Expressing advanced user preferences in component installation
Proceedings of the 1st international workshop on Open component ecosystems
On solving Boolean multilevel optimization problems
IJCAI'09 Proceedings of the 21st international jont conference on Artifical intelligence
Apt-pbo: solving the software dependency problem using pseudo-boolean optimization
Proceedings of the IEEE/ACM international conference on Automated software engineering
Feature diagrams as package dependencies
SPLC'10 Proceedings of the 14th international conference on Software product lines: going beyond
MPM: a modular package manager
Proceedings of the 14th international ACM Sigsoft symposium on Component based software engineering
On software component co-installability
Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering
Boolean lexicographic optimization: algorithms & applications
Annals of Mathematics and Artificial Intelligence
Engage: a deployment management system
Proceedings of the 33rd ACM SIGPLAN conference on Programming Language Design and Implementation
Dependency solving: A separate concern in component evolution management
Journal of Systems and Software
Life and death of software packages: an evolutionary study of Debian
CASCON '12 Proceedings of the 2012 Conference of the Center for Advanced Studies on Collaborative Research
A modular package manager architecture
Information and Software Technology
Safe composition of configuration knowledge-based software product lines
Journal of Systems and Software
Broken sets in software repository evolution
Proceedings of the 2013 International Conference on Software Engineering
On software component co-installability
ACM Transactions on Software Engineering and Methodology (TOSEM) - Testing, debugging, and error handling, formal methods, lifecycle concerns, evolution and maintenance
Hi-index | 0.00 |
Linux distributions often include package management tools such as apt-get in Debian or yum in RedHat. Using information about package dependencies and conflicts, such tools can determine how to install a new package (and its dependencies) on a system of already installed packages. Using off-the-shelf SAT solvers, pseudo-boolean solvers, and Integer Linear Programming solvers, we have developed a new package-management tool, called Opium, that improves on current tools in two ways: (1) Opium is complete, in that if there is a solution, Opium is guaranteed to find it, and (2) Opium can optimize a user-provided objective function, which could for example state that smaller packages should be preferred over larger ones. We performed a comparative study of our tool against Debian's apt-get on 600 traces of real-world package installations. We show that Opium runs fast enough to be usable, and that its completeness and optimality guarantees provide concrete benefits to end users.