在软件开发的未来,人工智能(AI)有望承担繁琐的任务,如代码重构、遗留系统迁移和竞争条件排查,从而使软件工程师能够专注于架构设计和机器难以触及的创新问题。麻省理工学院计算机科学与人工智能实验室(CSAIL)的一项新研究指出,尽管最近的进展令人鼓舞,但要实现这一愿景,仍需认真审视当前的挑战。
这项名为《人工智能软件工程的挑战与路径》的研究,深入探讨了代码生成之外的软件工程任务,识别了瓶颈,并提出了克服这些瓶颈的研究方向,旨在让人类专注于高级设计,同时自动化日常工作。
麻省理工学院电气工程与计算机科学教授、CSAIL首席研究员兼该研究的资深作者Armando Solar-Lezama表示,当前关于人工智能的讨论集中于自动化,但要充分实现自动化的承诺,还有很长的路要走。
Solar-Lezama认为,流行的观点常常将软件工程简化为“本科生编程:有人给你一个函数规范,你来实现它,或者解决LeetCode风格的编程面试题”。然而,实际的软件工程实践远不止于此,包括日常的设计优化重构,以及将数百万行COBOL代码迁移到Java,重塑整个业务。这需要持续的测试和分析,如模糊测试、基于属性的测试等,以发现并发错误或修补零日漏洞。此外,还需要维护旧代码、总结变更历史以及审查代码的风格、性能和安全性。
工业级代码优化,如重新调整GPU内核或Chrome V8引擎背后的多层优化,仍然难以评估。当前的指标是为简短、独立的问题设计的。尽管多项选择测试在自然语言研究中仍然占主导地位,但在AI代码领域却从未成为常态。该领域的标准,SWE-Bench,只是要求模型修补GitHub问题,类似于“本科生编程练习”。它只涉及几百行代码,存在来自公共存储库的数据泄露风险,并忽略了其他实际场景,如AI辅助重构、人机协作编程或跨越数百万行代码的性能关键型重写。除非基准扩展到包括这些高风险场景,否则衡量进展将仍然是一个挑战。
衡量标准是一个障碍,人机通信是另一个障碍。第一作者Alex Gu认为,当前的交互是“一条细线”。当他要求系统生成代码时,他通常会收到一个大型、非结构化的文件,甚至是一组单元测试,但这些测试往往是肤浅的。这种差距延伸到AI有效利用更广泛的软件工程工具(如调试器和静态分析器)的能力,而人类依赖这些工具进行精确控制和深入理解。“我真的无法控制模型编写的内容,”他说。“如果AI不能表达自己的信心——‘这部分是正确的……这部分可能需要仔细检查’——开发人员可能会盲目信任编译通过但会在生产中崩溃的逻辑。另一个关键方面是让AI知道何时应该寻求用户的澄清。”
规模扩大了这些困难。当前的人工智能模型在处理大型代码库时面临着巨大的挑战,这些代码库通常跨越数百万行。基础模型从公共GitHub学习,但“每个公司的代码库都有所不同,”Gu说,这使得专有的编码约定和规范要求基本上超出了分布范围。这导致生成的代码看起来合理,但会调用不存在的函数、违反内部样式规则或无法通过持续集成管道。这常常导致AI生成的代码出现“幻觉”,即创建看起来合理但不符合公司内部约定的内容。
此外,模型还经常错误地检索代码,因为它们检索的是具有相似名称(语法)而不是功能和逻辑的代码。Solar-Lezama说:“标准的检索技术很容易被那些做着相同事情但看起来不同的代码片段所愚弄。”
针对这些问题,作者呼吁社区共同努力:更丰富的数据,捕捉开发人员编写代码的过程(例如,开发人员保留和丢弃的代码,代码如何随着时间推移而重构等),共享的评估套件,用于衡量重构质量、错误修复持久性和迁移正确性的进展;以及透明的工具,使模型能够暴露不确定性并邀请人类指导,而不是被动接受。Gu将该议程定义为“行动号召”,以进行更大的开源协作,这对于任何单个实验室来说都是无法实现的。Solar-Lezama设想了渐进式的进步——“研究结果分别解决了这些挑战中的每一个”——这些进步会反馈到商业工具中,并逐渐将AI从自动完成助手转变为真正的工程合作伙伴。
Gu说:“为什么这些很重要?软件已经支撑着金融、交通、医疗保健和日常生活的细节,而安全地构建和维护它所需的人力正在成为瓶颈。一种能够承担繁重工作并且不会引入隐藏故障的AI,将使开发人员能够专注于创造力、策略和伦理。但这取决于承认代码完成是容易的部分;困难的部分是其他一切。我们的目标不是取代程序员,而是放大他们。当AI能够处理乏味和可怕的任务时,人类工程师最终可以将时间花在只有人类才能做的事情上。”
Mistral AI的AI科学家Baptiste Rozière表示:“随着AI编码领域涌现出如此多的新作品,社区常常追逐最新的趋势,因此很难退后一步,反思哪些问题是最重要的。我喜欢阅读这篇论文,因为它清楚地概述了AI软件工程中的关键任务和挑战。它还概述了该领域未来研究的有希望的方向。”
Gu和Solar-Lezama与加州大学伯克利分校教授Koushik Sen和博士生Naman Jain和Manish Shetty、康奈尔大学助理教授Kevin Ellis和博士生Wen-Ding Li、斯坦福大学助理教授Diyi Yang和博士生Yijia Shao以及即将上任的约翰·霍普金斯大学助理教授Ziyang Li共同撰写了这篇论文。他们的工作得到了美国国家科学基金会(NSF)、SKY Lab工业赞助商和附属机构、英特尔公司通过NSF资助以及海军研究办公室的部分支持。
研究人员在国际机器学习大会(ICML)上展示了他们的工作。