Dependency Injection for Programming by Optimization

07/13/2017
by   Zoltan A. Kocsis, et al.
0

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.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
02/06/2021

Recommending More Efficient Workflows to Software Developers

Existing recommendation systems can help developers improve their softwa...
research
05/11/2020

ProFIPy: Programmable Software Fault Injection as-a-Service

In this paper, we present a new fault injection tool (ProFIPy) for Pytho...
research
12/06/2021

Configuration Space Exploration for Digital Printing Systems

Within the printing industry, much of the variety in printed application...
research
02/12/2021

Towards Large Scale Automated Algorithm Design by Integrating Modular Benchmarking Frameworks

We present a first proof-of-concept use-case that demonstrates the effic...
research
11/16/2020

Neural Software Analysis

Many software development problems can be addressed by program analysis ...
research
03/15/2021

Return-Oriented Programming on RISC-V

This paper provides the first analysis on the feasibility of Return-Orie...
research
05/25/2023

Learning-Based Automatic Synthesis of Software Code and Configuration

Increasing demands in software industry and scarcity of software enginee...

Please sign up or login with your details

Forgot password? Click here to reset