Title
Dependency Injection for Programming by Optimization.
Abstract
Programming by Optimization tools perform automatic software configuration according to the specification supplied by a software developer. Developers specify design spaces for program components, and the onerous task of determining which configuration best suits a given use case is determined using automated analysis tools and optimization heuristics. However, in current approaches to Programming by Optimization, design space specification and exploration relies on external configuration algorithms, executable wrappers and fragile, preprocessed programming language extensions. Here we show that the architectural pattern of Dependency Injection provides a superior alternative to the traditional Programming by Optimization pipeline. We demonstrate that configuration tools based on Dependency Injection fit naturally into the software development process, while requiring less overhead than current wrapper-based mechanisms. Furthermore, the structural correspondence between Dependency Injection and context-free grammars yields a new class of evolutionary metaheuristics for automated algorithm configuration. We found that the new heuristics significantly outperform existing configuration algorithms on many problems of interest (in one case by two orders of magnitude). We anticipate that these developments will make Programming by Optimization immediately applicable to a large number of enterprise software projects.
Year
Venue
Field
2017
arXiv: Artificial Intelligence
Software configuration management,Computer science,Dependency injection,Software,Inversion of control,Software development process,Artificial intelligence,Architectural pattern,Machine learning,Software development,Metaheuristic
DocType
Volume
Citations 
Journal
abs/1707.04016
0
PageRank 
References 
Authors
0.34
7
2
Name
Order
Citations
PageRank
Zoltan A. Kocsis1193.72
Jerry Swan219619.47