2018年10月11日至13日,来自美国、英国、加拿大、澳大利亚、日本、新加坡和中国的近40位杰出科学家齐聚北京雁栖湖,参加了中国科学院学术与出版委主办的雁栖湖会议——大数据时代软件自动化面临的挑战与机遇,就当今和未来的软件自动化交换意见。
软件自动化,即根据正式或非正式的规范自动生成软件的过程,曾经是计算机科学家的梦想。其目的不仅是把开发人员从繁琐的软件编程中解脱出来,而且把维护人员从对持续演进的软件的无休止的手动维护中解脱出来。软件自动化包括但不限于程序合成、代码补全、程序转换、代码推荐、程序修复和软件自我演化。软件自动化作为一种新兴的、有前途的发展方向,也蕴含着一系列重大的挑战,包括开放而模糊的、多样化的需求,复杂的软件生态系统和软件技术栈,以及技术和业务领域的多样性等。当面对可扩展性和安全性等非功能性需求时,软件自动化的实现则更具挑战性。
当前,软件工程大数据的出现为实现软件自动化的梦想带来了新的机会。雁栖湖会议的与会者相信,在不久的将来,某些特定的软件工程任务,例如缺陷修复等,可以实现较高程度的自动化。一些参与者甚至认为,在未来几十年里,我们将目睹计算机在编程方面逐渐超越人类。随着软件自动化,可能出现一种新的结对编程。也就是说,隐藏在集成开发环境(IDE)中的智能助理与人类开发人员结对工作,以执行日常开发任务。加州大学戴维斯分校的Devanbu教授说,IDE和人类开发人员之间的智能交互可能是未来几年的突破。
所有与会的科学家都同意,软件工程大数据在软件自动化中起着关键作用。因此,除了在GitHub和Stack Overflow等开放共享资源中出现的软件大数据之外,科学家们正在寻找更多的方法来手工标记更多的软件工程数据。例如,在中国科技部的支持下启动了一个项目,正在高校范围内组织关于标注开放源代码的竞赛。
在这次雁栖湖会议上,科学家们也对软件自动化的能力级别的划分进行了讨论,并提出了一些具体划分建议以供讨论,包括机器代码的自动生成(L1),框架代码的自动生成和代码行的自动推荐(L2),代码片段的自动生成(L3),设计结构的自动生成(L4)、基于需求理解的整个应用程序的自动生成(L5),这些建议的提出对软件自动化技术的逐层进化具有良好的推动作用。
“在大数据时代,软件自动化的研究正面临着巨大的机遇和挑战,人工智能、软件工程和编程语言等各个学科的研究人员应该把握这个机会携手共进,加速软件自动化的进程。”本次雁栖湖会议的主席梅宏教授说。