Code Synthesis in Self-Improving Software Systems

This extended abstract aims at provoking a wide discussion around code synthesis and its importance in creating the next generation of self-improving software systems. As a starting point for the discussion, a machine-to-machine self-improving framework is presented. The framework aims at improving system's performance by integrating two modules: i) a self-improving online module, and ii) a code synthesiser offline module. The online module learns, at runtime, as it handles the system's inputs, how to best compose the system from a pallet of available software components and a user-defined high level goal. The offline code synthesiser generates new components based on the perceived system's input, executing environment and the system's goal provided by the online module. The code synthesiser then provides better component options for the online module to integrate with the system to improve its performance. This abstract describes the framework, focusing on its main challenges.