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.
翻译:软件行业需求的日益增长及软件工程师的稀缺,促使研究人员和从业者推动软件生成与配置过程的自动化。大规模自动化软件生成与配置是一项极为复杂且充满挑战的任务。在本研究中,我们通过将自动化软件生成与配置拆解为两个独立任务来探究该问题。第一个任务旨在根据输入输出规范自动合成软件,该任务进一步细分为两个子任务:其一,通过基于神经网络的适应度函数驱动遗传算法合成程序,该适应度函数利用程序轨迹与规范进行训练;其二,我们将程序合成表述为连续优化问题,并采用协方差矩阵自适应进化策略(一种当前最先进的连续优化方法)进行程序合成。针对第二个任务,我们提出利用序列到序列深度学习机制,从不同的输入文件(如软件手册、配置文件、在线博客等)合成大规模软件的配置。