智能化软件开发落地实践指南 (2024年) 中国信息通信研究院人工智能研究所华为云计算技术有限公司 2024年9月 版权声明 本报告版权属于中国信息通信研究院、华为云计算技 术有限公司,并受法律保护。转载、摘编或利用其它方式使用本报告文字或者观点的,应注明“来源:中国信息通信研究院、华为云计算技术有限公司”。违反上述声明者,编者将追究其相关法律责任。 前言 2024年《政府工作报告》首次提出“人工智能+”战略行动,旨在推动人工智能赋能各行各业。以大模型为代表的新一代人工智能技术迅猛发展,已成为软件工程领域智能化转型的关键驱动力,为软件开发、测试等环节注入新智力。智能化软件开发工具凭借其强大的代码理解和生成能力,有效降低了开发人员的技术门槛,并提高开发效率和质量,进一步推动软件开发领域的进步。 然而,在软件开发的智能化能力建设和应用过程中,仍面临诸多挑战,如代码大模型选择困难、开发工具的工程化建设复杂、智能化能力建设无参考、开发场景选择和落地难,以及与现有开发工具或流水线的集成难等问题。为此,本指南旨在为正在进行软件开发智能化转型的企业提供一份实用指南,为企业制定落地策略、建设智能开发能力体系提供有力参考。本指南系统梳理了智能化软件开发的发展历程、现状和面临的挑战,结合大模型和软件开发特点,提出了具体的落地方向、路径和框架,详细阐述了落地所需的核心能力和使能能力,并对多个行业的落地案例进行了深入剖析,最后对智能化软件开发的发展趋势进行了展望。 由于大模型等人工智能技术产业仍处于快速发展阶段,智能开发相关的技术产品、服务和应用也在不断演变,我们的认识将随着产业实践而不断深化,报告存在的不足之处,恳请大家批评指正。 一、智能开发发展概述1 (一)软件工程步入3.0时代1 (二)智能开发发展现状5 (三)智能开发价值显现7 (四)智能开发落地挑战9 二、智能开发落地策略11 (一)智能开发落地原则11 (二)智能开发落地步骤12 (三)智能开发落地框架15 三、智能开发核心能力建设17 (一)代码生成与补全17 (二)单元测试用例生成19 (三)代码转换与优化21 (四)代码解释与注释22 (五)代码检查与修复23 (六)研发问答24 四、智能开发使能能力建设26 (一)代码数据处理能力26 (二)代码大模型优化能力28 (三)智能开发能力评估30 (四)智能开发安全能力32 (五)其他工程化能力36 五、智能开发落地案例分析41 (一)云服务行业案例41 (二)软件服务业案例42 (三)电力行业案例44 (四)金融行业案例46 (五)制造行业案例47 六、总结与展望50 图1软件工程发展历程图1 图2软件工程3.0示意图3 图3智能开发落地步骤图12 图4企业智能化能力自我诊断等级图13 图5智能开发能力实施的多阶方案图14 图6智能开发落地框架示意图15 图7三“码”合一方案图19 图8单测生成实战方案示意图21 图9基于RAG的代码理解流程图23 图10数据处理流程图26 图11代码大模型优化过程示意图29 图12智能开发能力评估架构图31 图13安全能力体系架构图33 图14数据安全治理流程示意图33 图15模型安全治理架构图35 图16应用安全治理框架图35 图17RAG落地流程示意图39 图18某云服务企业案例落地方案示意图42 图19某软件服务企业案例落地方案示意图44 图20某电力行业企业案例落地方案示意图45 图21某银行案例落地方案示意图47 图22某家电制造企业案例落地方案示意图49 表目录 表1准确性评估场景与指标参考清单32 表2提示词示例138 表3提示词示例238 一、智能开发发展概述 随着人工智能技术的不断进步,特别是大模型能力的持续提升,软件工程领域正迎来前所未有的变革,软件开发的流程和模式正被重新定义,智能化进程显著加速。本章将简要回顾软件工程的发展历程,重点介绍软件工程3.0的发展特点,以及智能化软件开发 (以下简称:智能开发)领域发展现状,并深入探讨智能化能力为软件开发带来的价值提升,最后梳理落地挑战。 (一)软件工程步入3.0时代 1.软件工程发展历程 软件工程自1968年诞生以来,其发展历程可分成三个阶段,包括软件工程1.0、软件工程2.0和软件工程3.0,如图1所示。 图1软件工程发展历程图 软件工程1.0,即第一代软件工程,亦称为“传统软件工程”。本阶段的发展起点可追溯至上个世纪六十年代,随着大容量、高速度计算机的问世,软件开发需求急剧增长,软件系统的规模越来越大,复杂程度越来越高,可靠性问题更加突出。为解决该类软件危机, 1968年北大西洋公约组织(NATO)在国际会议上首次提出“软件工程”概念,期望将软件开发带出混乱的局面,走向有纪律、有流程的规范化之路。软件工程1.0推崇结构化方法,重视流程和文档规范化等工程实践,对提升软件产品交付成功率和质量有重大意义。但在软件工程1.0时期,由于软件被当作传统的工业制造产品进行交付,无法及时满足业务需求的变化和更新,使得交付周期长。 软件工程2.0,亦称“敏捷软件工程”。本阶段的发展自2001年“敏捷软件开发宣言1”发布起,通过践行敏捷开发最佳实践,实现持续集成(CI)、持续交付(CD)和快速迭代以更好地满足日益变化的业务需求。软件工程2.0时期,软件形态从“产品”发展为“服务”,而服务的性能、效率、可靠性、可持续性也更加重要,这推动人们将软件开发和运维融合起来,DevOps模式应运而生,使得软件交付效率更加高效。但本时期的开发、测试等核心工作,多以人工为主,技术门槛和研发成本居高不下,对技术人员的依赖性非常高,虽然陆续有自动化技术的出现和落地,对效能提升方面未有显著成效,“软件工程没有银弹2”这一观点仍然有效。 软件工程3.0,亦称“智能化软件工程”。2022年底以来,随着ChatGPT等大模型相继发布,软件工程迎来新一轮变革。大模型凭借其强大的理解和生成能力,通过代码生成、代码续写、测试用例生成、智能问答等能力,为软件工程带来了智能化能力升级,为提 1https://agilemanifesto.org/ 2《没有银弹:软件工程的本质与偶然》 升软件质量和效率带来了新动力,全新的软件开发范式正在诞生。软件工程中到底有没有“银弹”,在大模型时代成为热议的话题。 2.软件工程3.0发展特点 软件工程3.0围绕“智能化”理念以构建智能化助手为起点,通过使用大模型为核心的AI技术驱动软件全生命周期能力升级(如图2所示)。本阶段以构建支持软件开发、测试或运维等环节的AI模型为基础,将智能化技术逐步运用至软件工程各阶段,促进软件研发和运营效率的提升、质量的跃进、成本的降低。本阶段的发展特性较为明显,核心特点包括智能化、数据驱动性、交互性、自适应和持续优化。 图2软件工程3.0示意图 智能化,软件工程中各工具都将逐步实现对大模型等AI能力的调取和应用,以实现工具自身能力的提高,为智能化软件工程打下坚实基础。例如,将大模型与测试平台对接,提供测试用例生成、测试结果分析等能力,提高测试平台效能;将大模型与用户界面 (UI)测试工具对接,提供界面要素和组件等识别能力,提高UI测试准确率3。 数据驱动性,高质量数据是大模型成功的关键,“GarbageIn,GarbageOut”仍然适用。在软件工程中,代码数据集、需求数据集、规范类文档数据集、测试用例数据集、日志数据集等,均将应用于大模型的训练、调优和推理过程,其质量高低直接影响推理结果,从而影响软件工程智能化能力带来的效果。例如,使用了精调代码数据集训练后的模型,相比基座模型在MultiPL-E上的评测结果绝对值提升了8.2%,而使用了未精调的普通的代码加注释的数据集训练后的模型,评测结果反而降低了5.5%4。 交互性,包括两个方面,一是大模型与人之间的人机交互,二是大模型与工具间的交互。人机交互将不断相互启发、相互促进,大模型可学习特定项目的上下文和研发人员的偏好,并根据更优的提示词,激发出更符合期望的推理结果,提高协作效率;大模型与工具间交互,将通过智能体(AIAgent)、编排等方式,实现大模型对各工具的调取和执行,以解决更加复杂的工程级问题,推动全生命周期智能化能力的提升。例如,2024年3月Cognition公司发布的全球首个AI程序员Devin,以及8月Cosine公司发布的全球最强AI程序员Genie,对复杂的软件工程问题解决能力不断得到刷新。 自适应性,根据对工程级代码的更优理解能力,以及检索增强 3中国信息通信研究院调研 4Magicoder:EmpoweringCodeGenerationwithOSS-INSTRUCT 生成(RAG)等技术的辅助能力,大模型的自学习能力越发强大,这使得智能化软件工程对场景化的业务和数据具备更好的理解和适应能力,从而实现自主提升其推理性能和准确性。例如,代码大模型可在不同角色设定下展现良好的自适应性,MetaGPT为大模型赋予了多个人设(产品经理、架构师、开发工程师等)后,其HumanEval评测结果为85.9%,相比未设定人设的大模型评测结果绝对值提升了18.9%5。 持续优化,通过建立数据飞轮和反馈闭环,根据用户反馈、场景化数据和监控数据对大模型进行持续改进,从而使软件工程智能化能力持续提升。例如,某银行的智能开发助手上线后,每周由研发部门的各团队提交优秀代码数据,对代码大模型进行定期的优化训练、测试和部署,从而持续保持和提升开发助手的能力6。 (二)智能开发发展现状 开发是软件工程全生命周期中的核心环节,开发人员大约有三分之二的工作时间与开发代码直接相关7,应用大模型助力软件开发具有得天独厚的优势。一方面开发人员对新技术的接纳度较高,能够更快地适应开发新范式;另一方面各类编程语言对业务的依赖度不是非常高,使得代码生成能力的普适性较强。因此软件开发是大模型率先应用落地的领域之一,Gartner已将“AI增强软件开发”列 5MetaGPT:MetaProgrammingforAMulti-AgentCollaborativeFramework 6中国信息通信研究院调研 7https://thenewstack.io/how-much-time-do-developers-spend-actually-writing-code/ 入2024年十大战略技术趋势之一8。 智能开发工具市场迅速发展,国内外百花齐放。国外,截止2024年4月微软的GitHubCopilot拥有180万付费订阅用户,近60%财富500强公司使用CopilotAI工具9,GitHubCopilot的市场占有率达到64.5%10。亚马逊的CodeWhisperer、谷歌的ProjectIDX等产品虽难以并肩,但依靠其强大的用户规模基础,仍具备较强竞争力。国内,智能化软件开发工具已发布近40余款11,如华为、阿里、百度等提供的智能开发工具产品,其核心功能较为同质化,但工具的性能、工程化能力、用户体验度、整体准确度等方面存在差异。 智能开发工具能力持续提升,应用行业更加多元化。智能开发工具重点聚焦于代码生成、代码补全、代码注释、代码检查、智能单测等能力。一方面代码大模型能力的持续提升为工具提供了更强的AI底座,根据智源大模型排行榜显示,榜首大模型在HumanEval数据集上的Pass@112从2023年8月的24.4%提升至2024年8月的81.1%13;另一方面通过RAG、自学习、AIAgent等技术的加持,为工具提供了更强的工程化能力,如微软的CopilotWorkSpace作为AI辅助的下一代开发工具,为工程级代码提供了更优的理解和生成能力。随着能力的持续提升,智能开发工具被越来越多行业所接受和应用,包括如互联网等科技行业的成熟落地,金融、电信、软件服 8Gartner《2024十大战略技术趋势》 9https://github.com/features/copilot 10《中国软件技术发展洞察