Increasing demands in software industry and scarcity of software engineers motivates researchers and practitioners to automate the process of software generation and configuration. Large scale automatic software generation and configuration is a very complex and challenging task. In this proposal, we set out to investigate this problem by breaking down automatic software generation and configuration into two different tasks. In first task, we propose to synthesize software automatically with input output specifications. This task is further broken down into two sub-tasks. The first sub-task is about synthesizing programs with a genetic algorithm which is driven by a neural network based fitness function trained with program traces and specifications. For the second sub-task, we formulate program synthesis as a continuous optimization problem and synthesize programs with covariance matrix adaption evolutionary strategy (a state-of-the-art continuous optimization method). Finally, for the second task, we propose to synthesize configurations of large scale software from different input files (e.g. software manuals, configurations files, online blogs, etc.) using a sequence-to-sequence deep learning mechanism.
翻译:软件行业需求的持续增长与软件开发人员的稀缺,促使研究人员和从业者致力于实现软件生成与配置流程的自动化。大规模自动化软件生成与配置是一项极其复杂且富有挑战性的任务。在本研究中,我们通过将自动化软件生成与配置分解为两个独立任务来探讨该问题。第一个任务旨在根据输入输出规范自动合成软件,并进一步细分为两个子任务:其一,基于遗传算法,通过结合程序轨迹与规范训练的神经网络适应度函数驱动程序合成;其二,将程序合成建模为连续优化问题,采用协方差矩阵自适应进化策略(一种前沿的连续优化方法)实现程序合成。第二个任务则是利用序列到序列深度学习机制,从不同输入文件(如软件手册、配置文件、在线博客等)中合成大规模软件的配置。