AI for software engineering has made remarkable progress recently, becoming a notable success within generative AI. Despite this, there are still many challenges that need to be addressed before automated software engineering reaches its full potential. It should be possible to reach high levels of automation where humans can focus on the critical decisions of what to build and how to balance difficult tradeoffs while most routine development effort is automated away. Reaching this level of automation will require substantial research and engineering efforts across academia and industry. In this paper, we aim to discuss progress towards this in a threefold manner. First, we provide a structured taxonomy of concrete tasks in AI for software engineering, emphasizing the many other tasks in software engineering beyond code generation and completion. Second, we outline several key bottlenecks that limit current approaches. Finally, we provide an opinionated list of promising research directions toward making progress on these bottlenecks, hoping to inspire future research in this rapidly maturing field.
翻译:近年来,面向软件工程的人工智能取得了显著进展,已成为生成式人工智能领域一项引人注目的成功。尽管如此,在自动化软件工程充分发挥其潜力之前,仍有许多挑战亟待解决。我们应能实现高水平的自动化,使人类能够专注于构建什么以及如何平衡复杂权衡等关键决策,而将大部分常规开发工作交由自动化完成。要达到这一自动化水平,需要学术界和产业界付出大量的研究与工程努力。本文旨在从三个方面探讨实现这一目标的进展。首先,我们为面向软件工程的AI具体任务提供了一个结构化分类体系,强调软件工程中除代码生成与补全之外的众多其他任务。其次,我们概述了限制当前方法的若干关键瓶颈。最后,我们提出了一份具有观点性的、有望在这些瓶颈上取得进展的研究方向清单,以期激励这一快速成熟领域的未来研究。