• 首页 >  信息科技 >  计算机产业
  • 中国信通院&华为:智能化软件开发落地实践指南(2024年)(58页).pdf

    定制报告-个性化定制-按需专项定制研究报告

    行业报告、薪酬报告

    联系:400-6363-638

  • 《中国信通院&华为:智能化软件开发落地实践指南(2024年)(58页).pdf》由会员分享,可在线阅读,更多相关《中国信通院&华为:智能化软件开发落地实践指南(2024年)(58页).pdf(58页珍藏版)》请在本站上搜索。 1、中国信息通信研究院人工智能研究所华为云计算技术有限公司2024年9月智能化软件开发落地智能化软件开发落地实践指南实践指南(2022024 4 年年)版权声明版权声明本报告版权属于中国信息通信研究院、华为云计算技术有限公司,并受法律保护。转载、摘编或利用其它方式使用本报告文字或者观点的,应注明本报告版权属于中国信息通信研究院、华为云计算技术有限公司,并受法律保护。转载、摘编或利用其它方式使用本报告文字或者观点的,应注明“来源:中国信息通信研究院、华为云计算技术有限公司来源:中国信息通信研究院、华为云计算技术有限公司”。违反上述声明者,编者将追究其相关法律责任。违反上述声明者,编者将追究其相关法律2、责任。前言前言2024 年政府工作报告首次提出“人工智能+”战略行动,旨在推动人工智能赋能各行各业。以大模型为代表的新一代人工智能技术迅猛发展,已成为软件工程领域智能化转型的关键驱动力,为软件开发、测试等环节注入新智力。智能化软件开发工具凭借其强大的代码理解和生成能力,有效降低了开发人员的技术门槛,并提高开发效率和质量,进一步推动软件开发领域的进步。然而,在软件开发的智能化能力建设和应用过程中,仍面临诸多挑战,如代码大模型选择困难、开发工具的工程化建设复杂、智能化能力建设无参考、开发场景选择和落地难,以及与现有开发工具或流水线的集成难等问题。为此,本指南旨在为正在进行软件开发智能化转型的企业提3、供一份实用指南,为企业制定落地策略、建设智能开发能力体系提供有力参考。本指南系统梳理了智能化软件开发的发展历程、现状和面临的挑战,结合大模型和软件开发特点,提出了具体的落地方向、路径和框架,详细阐述了落地所需的核心能力和使能能力,并对多个行业的落地案例进行了深入剖析,最后对智能化软件开发的发展趋势进行了展望。由于大模型等人工智能技术产业仍处于快速发展阶段,智能开发相关的技术产品、服务和应用也在不断演变,我们的认识将随着产业实践而不断深化,报告存在的不足之处,恳请大家批评指正。目录目录一、智能开发发展概述.1(一)软件工程步入 3.0 时代.1(二)智能开发发展现状.5(三)智能开发价值显现.74、(四)智能开发落地挑战.9二、智能开发落地策略.11(一)智能开发落地原则.11(二)智能开发落地步骤.12(三)智能开发落地框架.15三、智能开发核心能力建设.17(一)代码生成与补全.17(二)单元测试用例生成.19(三)代码转换与优化.21(四)代码解释与注释.22(五)代码检查与修复.23(六)研发问答.24四、智能开发使能能力建设.26(一)代码数据处理能力.26(二)代码大模型优化能力.28(三)智能开发能力评估.30(四)智能开发安全能力.32(五)其他工程化能力.36五、智能开发落地案例分析.41(一)云服务行业案例.41(二)软件服务业案例.42(三)电力行业案例.44(四)5、金融行业案例.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图 6、16应用安全治理框架图.35图 17RAG 落地流程示意图.39图 18某云服务企业案例落地方案示意图.42图 19某软件服务企业案例落地方案示意图.44图 20某电力行业企业案例落地方案示意图.45图 21某银行案例落地方案示意图.47图 22某家电制造企业案例落地方案示意图.49表 目 录表 目 录表 1准确性评估场景与指标参考清单.32表 2提示词示例 1.38表 3提示词示例 2.38智能化软件开发落地实践指南(2024 年)1一、智能开发发展概述一、智能开发发展概述随着人工智能技术的不断进步,特别是大模型能力的持续提升,软件工程领域正迎来前所未有的变革,软件开发的流程和模式正被重新定7、义,智能化进程显著加速。本章将简要回顾软件工程的发展历程,重点介绍软件工程 3.0 的发展特点,以及智能化软件开发(以下简称:智能开发)领域发展现状,并深入探讨智能化能力为软件开发带来的价值提升,最后梳理落地挑战。(一)软件工程步入(一)软件工程步入 3.0 时代时代1.软件工程发展历程软件工程自 1968 年诞生以来,其发展历程可分成三个阶段,包括软件工程 1.0、软件工程 2.0 和软件工程 3.0,如图 1 所示。图 1 软件工程发展历程图软件工程 1.0,即第一代软件工程,亦称为“传统软件工程”。本阶段的发展起点可追溯至上个世纪六十年代,随着大容量、高速度计算机的问世,软件开发需求急剧8、增长,软件系统的规模越来越大,复杂程度越来越高,可靠性问题更加突出。为解决该类软件危机,智能化软件开发落地实践指南(2024 年)21968 年北大西洋公约组织(NATO)在国际会议上首次提出“软件工程”概念,期望将软件开发带出混乱的局面,走向有纪律、有流程的规范化之路。软件工程 1.0 推崇结构化方法,重视流程和文档规范化等工程实践,对提升软件产品交付成功率和质量有重大意义。但在软件工程 1.0 时期,由于软件被当作传统的工业制造产品进行交付,无法及时满足业务需求的变化和更新,使得交付周期长。软件工程 2.0,亦称“敏捷软件工程”。本阶段的发展自 2001 年“敏捷软件开发宣言1”发布起,通9、过践行敏捷开发最佳实践,实现持续集成(CI)、持续交付(CD)和快速迭代以更好地满足日益变化的业务需求。软件工程 2.0 时期,软件形态从“产品”发展为“服务”,而服务的性能、效率、可靠性、可持续性也更加重要,这推动人们将软件开发和运维融合起来,DevOps 模式应运而生,使得软件交付效率更加高效。但本时期的开发、测试等核心工作,多以人工为主,技术门槛和研发成本居高不下,对技术人员的依赖性非常高,虽然陆续有自动化技术的出现和落地,对效能提升方面未有显著成效,“软件工程没有银弹2”这一观点仍然有效。软件工程 3.0,亦称“智能化软件工程”。2022 年底以来,随着ChatGPT 等大模型相继发布10、,软件工程迎来新一轮变革。大模型凭借其强大的理解和生成能力,通过代码生成、代码续写、测试用例生成、智能问答等能力,为软件工程带来了智能化能力升级,为提1https:/agilemanifesto.org/2没有银弹:软件工程的本质与偶然智能化软件开发落地实践指南(2024 年)3升软件质量和效率带来了新动力,全新的软件开发范式正在诞生。软件工程中到底有没有“银弹”,在大模型时代成为热议的话题。2.软件工程 3.0 发展特点软件工程 3.0 围绕“智能化”理念以构建智能化助手为起点,通过使用大模型为核心的 AI 技术驱动软件全生命周期能力升级(如图 2所示)。本阶段以构建支持软件开发、测试或运维11、等环节的 AI 模型为基础,将智能化技术逐步运用至软件工程各阶段,促进软件研发和运营效率的提升、质量的跃进、成本的降低。本阶段的发展特性较为明显,核心特点包括智能化、数据驱动性、交互性、自适应和持续优化。图 2 软件工程 3.0 示意图智能化,软件工程中各工具都将逐步实现对大模型等 AI 能力的调取和应用,以实现工具自身能力的提高,为智能化软件工程打下坚实基础。例如,将大模型与测试平台对接,提供测试用例生成、测试结果分析等能力,提高测试平台效能;将大模型与用户界面智能化软件开发落地实践指南(2024 年)4(UI)测试工具对接,提供界面要素和组件等识别能力,提高 UI 测试准确率3。数据驱动性12、,高质量数据是大模型成功的关键,“Garbage In,Garbage Out”仍然适用。在软件工程中,代码数据集、需求数据集、规范类文档数据集、测试用例数据集、日志数据集等,均将应用于大模型的训练、调优和推理过程,其质量高低直接影响推理结果,从而影响软件工程智能化能力带来的效果。例如,使用了精调代码数据集训练后的模型,相比基座模型在 MultiPL-E 上的评测结果绝对值提升了 8.2%,而使用了未精调的普通的代码加注释的数据集训练后的模型,评测结果反而降低了 5.5%4。交互性,包括两个方面,一是大模型与人之间的人机交互,二是大模型与工具间的交互。人机交互将不断相互启发、相互促进,大模型可13、学习特定项目的上下文和研发人员的偏好,并根据更优的提示词,激发出更符合期望的推理结果,提高协作效率;大模型与工具间交互,将通过智能体(AI Agent)、编排等方式,实现大模型对各工具的调取和执行,以解决更加复杂的工程级问题,推动全生命周期智能化能力的提升。例如,2024 年 3 月 Cognition 公司发布的全球首个 AI 程序员 Devin,以及 8 月 Cosine 公司发布的全球最强 AI 程序员 Genie,对复杂的软件工程问题解决能力不断得到刷新。自适应性,根据对工程级代码的更优理解能力,以及检索增强3中国信息通信研究院调研4Magicoder:Empowering Code 14、Generation with OSS-INSTRUCT智能化软件开发落地实践指南(2024 年)5生成(RAG)等技术的辅助能力,大模型的自学习能力越发强大,这使得智能化软件工程对场景化的业务和数据具备更好的理解和适应能力,从而实现自主提升其推理性能和准确性。例如,代码大模型可在不同角色设定下展现良好的自适应性,MetaGPT 为大模型赋予了多个人设(产品经理、架构师、开发工程师等)后,其HumanEval 评测结果为 85.9%,相比未设定人设的大模型评测结果绝对值提升了 18.9%5。持续优化,通过建立数据飞轮和反馈闭环,根据用户反馈、场景化数据和监控数据对大模型进行持续改进,从而使软件15、工程智能化能力持续提升。例如,某银行的智能开发助手上线后,每周由研发部门的各团队提交优秀代码数据,对代码大模型进行定期的优化训练、测试和部署,从而持续保持和提升开发助手的能力6。(二)智能开发发展现状(二)智能开发发展现状开发是软件工程全生命周期中的核心环节,开发人员大约有三分之二的工作时间与开发代码直接相关7,应用大模型助力软件开发具有得天独厚的优势。一方面开发人员对新技术的接纳度较高,能够更快地适应开发新范式;另一方面各类编程语言对业务的依赖度不是非常高,使得代码生成能力的普适性较强。因此软件开发是大模型率先应用落地的领域之一,Gartner 已将“AI 增强软件开发”列5MetaGPT:16、Meta Programming for AMulti-Agent Collaborative Framework6中国信息通信研究院调研7https:/thenewstack.io/how-much-time-do-developers-spend-actually-writing-code/智能化软件开发落地实践指南(2024 年)6入 2024 年十大战略技术趋势之一8。智能开发工具市场迅速发展,国内外百花齐放。国外,截止2024 年 4 月微软的 GitHub Copilot 拥有 180 万付费订阅用户,近60%财富 500 强公司使用 Copilot AI 工具9,GitHub C17、opilot 的市场占有率达到 64.5%10。亚马逊的 CodeWhisperer、谷歌的 Project IDX 等产品虽难以并肩,但依靠其强大的用户规模基础,仍具备较强竞争力。国内,智能化软件开发工具已发布近 40 余款11,如华为、阿里、百度等提供的智能开发工具产品,其核心功能较为同质化,但工具的性能、工程化能力、用户体验度、整体准确度等方面存在差异。智能开发工具能力持续提升,应用行业更加多元化。智能开发工具重点聚焦于代码生成、代码补全、代码注释、代码检查、智能单测等能力。一方面代码大模型能力的持续提升为工具提供了更强的 AI 底座,根据智源大模型排行榜显示,榜首大模型在 HumanE18、val数据集上的 Pass112从 2023 年 8 月的 24.4%提升至 2024 年 8 月的81.1%13;另一方面通过 RAG、自学习、AIAgent 等技术的加持,为工具提供了更强的工程化能力,如微软的 Copilot WorkSpace 作为 AI辅助的下一代开发工具,为工程级代码提供了更优的理解和生成能力。随着能力的持续提升,智能开发工具被越来越多行业所接受和应用,包括如互联网等科技行业的成熟落地,金融、电信、软件服8Gartner2024 十大战略技术趋势9https:/ 202411https:/ai- 是指代码大模型为每个问题生成 1 个答案,其答案通过测试的比例。13h19、ttps:/ 年)7务等行业的逐步落地,能源、零售、教育、制造、物流等领域的试点试行,未来智能开发工具将为各行各业的软件研发提供强有力支撑。应用需求快速增长,编码阶段提效显著。无论个人还是企业开发者,使用智能开发工具的人数和频次越来越多。根据 StackOverflow 2024 年的全球开发者调研显示,76%的受访者正在或计划使用 AI 工具进行软件开发,使用 AI 工具的开发者数量占比从去年44%提升至 62%14。根据 CSDN 2024 年的调查显示,48.6%开发者每天使用智能开发工具15。根据 Deloitte 报告指出,超过 60%的金融机构正在探索或已经实施了智能开发工具以加速20、创新。智能开发工具的使用助力开发人员编码效率提升明显。根据 GitHub 报告显示,使用 GitHub Copilot 的开发者编码速度提升 55%,编写代码量增加46%16。根据中国信通院 2024 年初调研问卷数据显示,受访者在开发阶段使用 AI 工具的提效最为明显,人效提升达到约 40%。(三)智能开发价值显现(三)智能开发价值显现在大模型应用浪潮中,软件开发的智能化转型正成为企业提升软件产品竞争力的关键因素,通过智能化能力的注入,为软件开发的价值提升带来巨大动力。提升开发效率,降低项目风险。通过代码生成、代码补全和问答等能力,开发人员能够更迅速地编写高质量代码,显著减少手动14the 21、2024 results from Stack OverflowsAnnual Developer Survey152024 中国开发者调查报告16The economic impact of theAI-powered developer lifecycle and lessons from GitHub Copilot智能化软件开发落地实践指南(2024 年)8调试和错误修复时间。同时可降低项目对开发人员的依赖,通过智能开发工具的学习和记忆能力,一方面可辅助新的开发人员快速开发出符合项目需求和规范的代码,另一方面可帮助开发人员快速学习新的编程语言,从而减少人员流动带来的项目风险。根据 BI22、S 年度经济报告显示,智能开发工具对程序员的生产力提升超过 50%,且其中仅有小部分来自于代码的直接生成,而更多是通过与机器交互的过程激发了程序员的创造力17。改善代码质量,提高产品稳定性。通过代码质量检查和智能单测等能力,开发人员能够快速进行代码验证和测试,及时发现并修复潜在的问题和漏洞,如代码缺陷、代码异常、代码风险等,从而帮助开发人员编写出更高质量的代码,降低软件发布后的故障率,提升软件的稳定性和性能。例如,GitHub Copilot 可帮助开发人员在编码过程中解决超过三分之二的漏洞18。加速产品创新迭代,增强企业竞争力。通过提升开发效率和改善产品质量,企业能够更快地推出创新产品,抢占23、市场先机,从而在激烈的市场竞争中脱颖而出。一方面,智能化的软件开发流程使开发周期缩短,企业能够更灵活地适应市场变化,加快产品迭代速率;另一方面,智能开发工具的辅助使得开发人员能够从重复性的繁琐的低端编码工作中释放出来,从而拥有更多时间投入创新相关工作,提升企业创新能力。例如,2023 年 5 月 GitHub 首席执行官17国际清算银行(BIS)2024 年度经济报告18https:/ 年)9在全球网络峰会(Web Summit)上,演示 GitHub Copilot X 实现简单的贪吃蛇小游戏用时为 18 分钟,而 2024 年 8 月通过真实操作,使用 Deepseek 开发助手(V2)仅24、需 2 分钟左右,开发时长大幅减少,开发人员将有更多时间思考产品创新。(四)智能开发落地挑战(四)智能开发落地挑战随着智能化技术在软件开发领域的广泛应用,其带来的质效提升日益显著。然而,企业在推进软件开发的智能化能力建设和落地时,仍面临诸多挑战,涵盖组织、技术、应用落地及安全等多个层面。组织变革和转型的挑战。软件开发的智能化转型首先带来的是组织变革,一是组织文化的重塑,其落地要求组织具备开放合作、持续学习和创新的文化氛围,促进跨部门沟通与协作,打破信息孤岛;二是全员认知水平的提升,自顶向下每位员工都应深刻理解智能化的潜力与挑战,客观且正确地了解大模型等人工智能技术及其作用;三是人才结构的调整与25、补充,由于数据治理及模型训练调优等过程需要专业技术人员参与,因此补充人才,或调整或融合 AI 团队和软件工程团队的结构,方能匹配能力建设和应用的需求。模型技术迭代及与工具融合的挑战。当前智能开发能力建设的核心技术是大模型,因此围绕大模型面临着技术迭代的挑战。一是大模型的技术能力仍以较快速度迭代更新,企业需配备良好的维护更新机制,以保证智能开发工具的底座 AI 能力;二是智能开发能力智能化软件开发落地实践指南(2024 年)10如何与现有软件研发工具集有效融合或改造,从而提升软件工程全流程能力水平。产品选型与应用场景落地的挑战。企业需根据自身行业特点、业务需求及已有 AI 能力,选择适合的业务场26、景,合理规划落地路径和方案。然而,一方面现有代码大模型和智能开发工具数量繁多,如何建设或选择出一款合适的模型或工具,如何评价模型或工具的能力,均是落地时考虑的重点;另一方面不同业务场景的编程语言可能不尽相同,或代码数据集或规范不一致,如何选择最优场景试点落地,如何优化模型或工具使其满足多场景需求,同样面临挑战。代码数据、模型和工具的安全性挑战。生成式代码可能会带来更多不可控的风险,因此企业应从数据、模型和工具多维度构筑风险防线,以应对安全挑战。第一道数据防线,面向模型训练和调优阶段所需的代码数据集,可能面临敏感代码数据的泄露、未经许可代码的训练、非法代码的推理等问题;第二道模型防线,面向代码大27、模型在推理和管理阶段,可能面临暴力攻击、非法套取、非法提问、敏感内容推理、被恶意使用生成恶意软件代码或攻击脚本等问题;第三道工具防线,对智能开发工具的输入输出进行检查和处理,并关注关联代码库、第三方软件开发工具的数据传输和集成安全,构筑最后一层安全围栏减少应用风险。智能化软件开发落地实践指南(2024 年)11二、智能开发落地策略二、智能开发落地策略随着代码大模型和智能开发工具如雨后春笋般出现,各行业陆续规划和试点将智能化能力有效地落地应用于开发环节。本章将首先总结智能开发落地遵守的主要原则,其次就落地关键步骤进行深入剖析,最后梳理当前行业的通用落地框架。(一)智能开发落地原则(一)智能开发落28、地原则智能化软件开发落地是指应用方企业通过采购或自研等方式,构建智能化能力,包括代码大模型能力和智能开发工具能力,并将其应用落地于软件开发过程。作为大模型应用的重要场景,根据中国信息通信研究院对金融、软件、电信等行业关于智能开发落地实践的调查显示,智能开发能力的落地通常考虑以下主要原则。目标导向原则,以企业战略定位为首要目标,落地策略和方案应在该目标指导下完成。如是否落地智能开发,落地范围预计多大,预期目标是什么,都应遵循企业组织级的人工智能战略目标。因地制宜原则,从企业实际情况出发,清晰了解已有 AI 基础及成本预算,从而制定合适的策略。如企业自身的科技实力、人才储备、AI 基础设施能力、资29、金支持等情况,应作为落地基础进行考虑。应用优先原则,从业务实际需求出发,明确亟需解决的问题,以及为业务赋能的目标。如软件开发过程中面临的最大问题是什么,最耗成本和资源的环节是哪些等。标准化原则,参考行业标准开展能力构建,以保证数据质量、模型性能及工具可塑性。如代码数据如何处理如何配比,模型如何智能化软件开发落地实践指南(2024 年)12调优,工程化能力如何建设,推理准确性应达到何等水平,均可以行业标准为依据,少走弯路,提高建设质量。安全性原则,围绕能力建设全过程构建安全保障机制,降低新工具引入的风险,提升安全治理能力。如代码大模型推理安全、数据安全、安全围栏建设等。持续改进原则,构建持续反馈30、机制和数据驱动流程,通过效能指标数据推动工具和流程的持续改进。如面临模型退化、新项目新代码数据等情况,应通过持续改进从而保证代码大模型的能力稳定性。(二)智能开发落地步骤(二)智能开发落地步骤落地智能化能力是一个全面且系统化的过程,尤其面向已成体系的软件开发过程,构建清晰明确的落地步骤,将为有效落地提供良好指引。智能开发落地过程可划分为自我诊断、方案设计、部署实施、持续优化四个关键步骤,如图 3 所示。图 3 智能开发落地步骤图开展多维度自我诊断,科学客观定位自身能力。诊断维度上,通过应用场景诊断,明确智能开发能力在企业内部的落地场景,帮助梳理当前需求和未来规划的需求;通过技术能力诊断,明晰企31、业在人工智能领域的优势和不足,明确是否具备足够技术储备开发或智能化软件开发落地实践指南(2024 年)13维护代码大模型或智能开发工具的能力;通过基础设施诊断,深入了解企业现有算力资源、存储资源、数据资源等,帮助企业做好基础性准备;通过安全可信诊断,明确企业自身对安全可信的要求,如代码数据安全性要求、用户安全性要求、研发场景安全性要求等,从而便于制定安全保障机制。能力定位上能力定位上,企业根据战略规划、基础设施、数据资产、人才储备、经费预算等方面的能力现状,并结合安全可信要求,综合研判自身已有智能化能力等级,可划分五个不同等级(如图 4 所示)。图 4 企业智能化能力自我诊断等级图根据自我诊断32、及能力定位结果,选择合适的实施方案。L1 企业适宜采用低成本的智能开发工具 SaaS 服务,以便快速达到应用效果;L2 企业可采购软硬件集成的智能开发工具(如智能编码一体机),以实现智能开发能力的本地化部署,形成一体化解决方案;L3 企业可采购包含代码大模型的智能开发工具进行私有化部署,保障企业级代码资产的安全,并通过采购模型调优和升级等服务,保证大模型能力的稳定;L4 企业可采购解耦的代码大模型和智能开发工具,智能化软件开发落地实践指南(2024 年)14或者选用高性能大模型训练微调成自有代码大模型,构建定制化的智能开发能力;L5 企业依托丰富的算力、数据、人才等基础,可考虑自主研发代码大模33、型,并依此构建软件工程领域的工程化能力,全面赋能软件开发流程,引领行业创新。图 5 智能开发能力实施的多阶方案图根据实施方案按计划部署和实施。一是明确项目的时间节点、资源配置、任务分工等,并制定风险管理计划;二是根据能力等级开展必要的软硬件采购与资源配置,确保相关工具和平台能够满足落地要求;三是开展代码大模型和智能开发工具的部署、评估和测试,确保其准确性、稳定性、安全性和可靠性;四是对使用人员进行培训并提供技术支持,选定试点项目或团队;五是根据试点结果进行优化调整,并逐步宣贯和拓展至更多团队。根据实施效果持续优化和改进。建立有效的指标体系和监控机制,一方面持续地自动化监测大模型推理效果和应用成34、效,如推理准确率、代码采纳率、代码修复率、代码生成占比等指标;另一方智能化软件开发落地实践指南(2024 年)15面定期收集用户反馈,根据数据分析结果明确问题和优化方向。构建大模型维护更新机制,通过获取和生成高质量代码数据集,开展模型的定期训练或调优,持续优化代码大模型质量。(三)智能开发落地框架(三)智能开发落地框架智能化软件开发的能力落地框架(如图 6 所示)由三部分组成,分别包括模型层、服务层和应用层,应用层的能力是模型层和服务层能力的组合体现。图 6 智能开发落地框架示意图模型层以各类 AI 模型为主体,为智能开发提供 AI 底座能力。本层建设目标是在基座大模型的基础上训练调优生成代码35、大模型,而代码大模型普遍由 2 个大模型组成,分别是代码补全大模型和研发问答大模型。代码补全大模型的任务是代码生成与补全,由于其使用频率最高,通常设计为参数规模较小但推理速度较快的如 3B、7B、13B 等较小型模型,以匹配编码速度;研发问答大模型的任务是应对更为复杂的代码解释、代码检查和研发问答等各类任务,通常设计为参数量更庞大的如 65B、72B、128B 等较大规模模型,以满足复杂的软件开发需求。智能化软件开发落地实践指南(2024 年)16服务层依托 AI 底座能力,运用更多技术手段增强或调度大模型能力。通过模型调度,针对工具层不同的操作精确匹配调度相应模型,确保模型资源的合理分配与高36、效利用;通过提示词封装,对用户常用功能设计提示词模板,丰富用户问题的表述,使模型能够更全面、准确地理解用户意图,提供更精确的推理结果;通过 RAG 将内部数据形成知识库注入推理过程,提升推理结果更符合项目特性;通过 AI Agent 辅助,以感知和记忆能力将复杂研发问题进行拆解,以决策和执行能力调用各类工具或组件,提升问题解决能效。应用层以用户为核心提供各类智能开发功能,主要包括智能编码和开发者辅助两大类功能,并将其集成于 IDE(集成开发环境)等工具中为用户提供直接服务。应用层能力一方面基于服务层对大模型能力进行了加强,如对工程级别的代码理解和生成能力更强,能够智能识别 IDE 当前打开的多37、文件内容,并将其作为大模型输入的上下文,提升跨文件感知能力;另一方面应用层为工具打造了更优异的用户体验,如兼容适配主流 IDE、操作系统以及常见自然语言等,建设自定义配置相关功能,优化输入输出性能,建立用户反馈机制等,满足开发者需求并提升体验度。智能化软件开发落地实践指南(2024 年)17三、智能开发核心能力建设三、智能开发核心能力建设在软件开发过程中,无论是企业开发者还是个人开发者,都面临重复书写代码、缺少编写单元测试用例和代码注释的习惯等问题,从而导致编码效率低下或存在质量隐患。因此,在智能开发能力建设过程中,可优先构建核心能力,如代码生成与补全、单元测试用例生成、代码转换与优化等能力可38、提升编码效率,代码解释与注释生成等能力可增强代码可读性,代码检查与修复等能力可提高代码质量。本章重点对各核心能力的构建进行剖析19。(一)代码生成与补全(一)代码生成与补全代码生成与补全是指根据自然语言描述或代码上下文,自动生成或补全代码的能力。通过代码生成与补全,可帮助开发人员提高编程效率、降低开发门槛。1.关键能力 代码生成能力:基于自然语言描述,生成有效的片段级或文件级或工程级代码;代码补全能力:根据代码上下文,补全有效的引用、类/方法/函数名称、行级或片段级或文件级或工程级代码;多维兼容能力:支持多种主流(或所需)编程语言和开发框架;代码质量能力:生成和补全的代码满足基本的质量规范要求39、19本章核心能力的阐述以中国信息通信研究院联合发布的智能化软件工程技术和应用要求:第 1 部分代码大模型和智能化软件工程技术和应用要求:第 2 部分 智能开发为参考依据。智能化软件开发落地实践指南(2024 年)18和安全性要求。2.扩充能力 根据多模态输入生成代码能力;知识库接入能力,可提供更符合企业内部业务逻辑或规范的代码或用例;第三方工具对接能力,如与版本管理工具的对接,支持代码合并冲突时提出解决和修复建议。3.重点和难点 推理效率提升:代码生成与补全是使用频率较高的功能,且流式生成对推理速度有较高要求,因此优化模型推理效率是本能力的建设重点;高质量数据集构建:在代码大模型训练或调优过程40、中,高质量代码数据集的构建成为重点,其中包括对各类代码的清洗、处理、安全过滤、标注等;提示词工程优化:基于意图识别对提示词模板进行调优,辅助推理效果的提升;上下文理解能力:准确理解代码上下文,如变量的作用域、函数的调用关系、跨文件间代码逻辑等,对提升推理准确度有明显作用;模型持续改进:通过代码采纳与拒绝等历史数据构建数据飞轮,对持续改进和维持推理质量有明显作用。智能化软件开发落地实践指南(2024 年)19实战经验参考:实战经验参考:采用三“码”合一方案(将训练态 SFT 代码语料、检索态 RAG 代码语料、推理态补充代码语料组装)优化 Prompt 模板,形成统一的Prompt 模板,构建成41、一个一致的训练和推理逻辑,通过将训练阶段与推理阶段的格式保持一致,可明显提升代码模型在垂直领域上的适应性和鲁棒性,使其在不同场景下保持较一致的性能。图 7 三“码”合一方案图(二)单元测试用例生成(二)单元测试用例生成单元测试用例生成是指根据输入的代码,自动生成用于测试该代码的单元测试用例。通过单元测试用例生成,可帮助开发人员减少编写单元测试用例的时间,并提高单元测试覆盖率,提升代码质量。1.关键能力 用例生成能力:根据函数级或文件级代码,生成单元测试用例;用例质量能力:生成的用例满足基本的质量规范要求,且具智能化软件开发落地实践指南(2024 年)20备所需覆盖度;多维兼容能力:支持多种主流42、(或所需)单元测试框架。2.扩充能力 生成的单元测试用例包含较为清晰的注释,且执行性能较好;生成的单元测试用例可自动对部分外部依赖进行打桩,且打桩用法合理。3.重点和难点 结合传统代码分析技术:加强大模型对代码结构和逻辑的理解,如对函数、类和模块级的接口,以及各类控制流和数据流进行分析和识别,可帮助提升单元测试用例生成的质量;结合多样性测试技术:支持随机测试、符号执行、模糊测试等,通过组合不同测试技术,提高单元测试质量和覆盖度;单元测试用例生成能力的评估:通过编译正确性、覆盖充分性、错误检出率等指标对推理结果进行综合评价,是本能力建设难点。实战经验参考:实战经验参考:采用大模型与传统软件分析等43、技术相组合的方式提升单元测试用例生成效果,传统分析工具通过整体分析被测工程,获取被测函数的依赖、测试场景等,生成用例初始化部分,而大模型生成用例的函数部分可结合软件分析的后处理算法,大幅度提高生成用例的编译通过率和覆盖率。智能化软件开发落地实践指南(2024 年)21图 8 单测生成实战方案示意图(三)代码转换与优化(三)代码转换与优化代码转换与优化是指在保持代码逻辑和功能不变的基础上,对输入的代码进行不同语言或不同框架之间的转换,或特定方向的优化。通过代码转换可帮助快速理解代码,通过代码优化可帮助解决代码中存在的规范性、性能等问题,降低开发人员的技术门槛。1.关键能力 代码转换能力:根据给定44、的代码,转换成不同编程语言、不同编程范式或不同框架等维度的代码;代码优化能力:根据给定的代码,提供规范性、性能和复杂度等维度的优化建议;转换和优化质量能力:转换和优化后的代码满足基本的质量规范要求,且保留了原代码功能。智能化软件开发落地实践指南(2024 年)222.扩充能力 知识库的接入能力:使转换和优化后的代码更符合企业内部业务逻辑或规范;对多文件的工程级代码进行转换和优化。3.重点和难点 集成优化算法:集成各种优化算法,如循环优化、内存访问优化和并发执行策略,提高代码优化的性能和质量;结合 RAG 的代码转换:检索历史代码以及外部依赖信息等,使转换后代码更符合项目需求。(四)代码解释与注45、释(四)代码解释与注释代码解释与注释是指对输入的代码进行解释或注释的生成。通过代码解释,可帮助开发人员快速理解大量代码或不熟悉的代码,通过代码注释,可提高代码的可读性和可维护性,帮助开发人员生产和维护更符合规范的代码资产。1.关键能力 代码解释能力:根据给定的代码,提供基本准确的解释内容;代码注释能力:根据给定的代码,提供基本准确的注释内容;注释质量能力:代码的注释内容满足基本的注释规范要求。2.扩充能力 知识库的接入能力:使代码的解释和注释内容更符合企业内部规范;智能化软件开发落地实践指南(2024 年)23 对变更的代码进行解释。3.重点和难点 语义理解及关键词识别:准确理解代码语法、语义46、,并识别出关键代码元素和结构,是本环节的难点。实战经验参考:实战经验参考:设计基于 RAG 的上下文感知的代码理解流程,协同模型能力与业务领域知识(如设计文档、开发规范等)、工程上下文调用信息等,并根据开发者实时行为,精确检索上下文,提高代码解释与注释的生成准确率。图 9 基于 RAG 的代码理解流程图(五)代码检查与修复(五)代码检查与修复代码检查与修复是指对代码进行相关问题的检查,并根据检查出的问题进行自动修复。通过代码检查,可帮助开发人员发现代码中存在的问题,如静态缺陷、运行时错误、安全漏洞、架构问题等,通过代码修复,可帮助开发人员解决问题并提高代码质量。1.关键能力智能化软件开发落地实47、践指南(2024 年)24 代码检查能力:根据给定的代码,进行代码规范性问题、代码异味、代码语法错误、代码逻辑错误、代码安全漏洞等问题的检查;代码修复能力:根据检查出的问题,提供代码修复建议及修复后的代码;检查和修复的质量能力:代码检查的错误检出率和误报率达到要求,修复后的代码需满足基本的质量规范要求,且保留了原代码功能。2.扩充能力 对多文件的工程级代码进行问题检查和修复;代码检查规则的自定义能力;对污点类问题进行检查,可跟踪和分析污点数据(或输入)在代码中的流动情况,定位可能污染的关键位置。3.重点和难点 提示词优化:制定代码检查与修复提示词模板,支持检查风格类问题、质量类问题、安全漏洞、48、性能缺陷、逻辑缺陷、行业规范等多种问题的提示词;降低误报率:传统漏洞扫描工具误报率较高,基于大模型的理解生成能力降低漏扫误报率成为重点和难点,(六)研发问答(六)研发问答研发问答是指利用自然语言处理、信息检索等技术进行研发相关问题的解答,帮助开发人员提供问答辅助能力,提高研发和创新智能化软件开发落地实践指南(2024 年)25能力。1.关键能力 问答能力:根据对话可理解研发相关问题,并提供相关解释、建议、教程或示例代码,较为准确地回答用户提问;代码搜索能力:根据关键词分析或语义理解等,快速、准确地查找和定位所需代码;多轮对话能力:可通过多轮对话,不断优化答案以更加准确地满足用户需求。2.扩充能49、力 可追溯能力:可明确推理答案的参考来源;对工程级代码库的理解和分析能力,并基于其进行问答。3.重点和难点 多轮对话感知:理解和保存用户多轮问答交互结果,作为下次提问上下文,以便提供更加准确的答案;交互式反馈机制:提供答案反馈机制,以便不断优化答案的准确性和相关性。智能化软件开发落地实践指南(2024 年)26四、智能开发使能能力建设四、智能开发使能能力建设智能开发落地过程中,通过核心能力建设可实现各项关键需求,但在持续改进迭代环节,为持续维持或提升代码大模型推理准确性,构建代码数据集、调优代码大模型、评估代码大模型或智能开发工具等使能能力同样重要。本章将围绕数据、模型、评估、安全和相关工程化50、能力展开分析其建设要点。(一)代码数据处理能力(一)代码数据处理能力代码大模型所需的代码数据集包括纯代码数据,以及代码和文本的混合数据。通过有效地管理和处理代码数据集,将其处理成可直接被用于模型训练调优的高质量代码数据集,为代码大模型提供基础支持,应用于企业在建设和维护优化代码大模型的过程。图 10 数据处理流程图数据清洗数据清洗用于过滤低质代码数据,提升数据质量。代码数据清洗主要包括数据过滤、数据去重、敏感数据处理、许可协议(License)过滤等环节。不同数据可采用不同处理方式,开源代码数据可进行所有方式的清洗,私有代码数据可进行数据过滤、数据去重、敏感信息过滤等方式的清洗。数据过滤是筛选51、、排除或提取数据集中特定部分,过滤方法主要包含三种。基于规则过滤是采用基于正则表达式、专家规则、点智能化软件开发落地实践指南(2024 年)27赞数量等规则的过滤器,识别并删除空白文件、自动生成的代码数据、有效信息过少的数据等;基于程序分析过滤是采用语法解析器和抽象语法树过滤存在语法错误的代码数据,采用规范检查规则或工具过滤掉不符合规范和不安全的代码数据;基于模型过滤是采用标注的高质量和低质量数据,训练质量模型分类器,对代码数据质量进行评估和过滤。数据去重是从数据集中消除冗余的重复记录,仅保留具有唯一性的数据条目,提升数据质量和存储效率。去重方式包含精确去重和近似去重,去重策略包含代码的文件级52、去重和仓库级去重,有效压缩数据规模。敏感信息处理是指识别并移除或替换数据中的敏感信息,包含代码中的密钥、令牌、个人身份信息、URL、IP 地址、机密算法等,可采用正则表达式、深度学习与机器学习、人工审查等技术实现敏感信息过滤。License 过滤是检验并去除开源代码中不允许使用的数据。开源代码 License 包含允许使用、不允许使用和无规定,为保证开源数据使用的合规性,可使用 ScanCode-Toolkit 等许可检测工具,过滤掉非法数据,将允许使用和无规定的开源数据用于模型训练调优。数据增强数据增强是通过对现有代码数据执行有意义的变换和扩充,生成新代码样本,增加数据集的多样性和丰富度,提53、高模型泛化能力和鲁棒性。注释增强是通过人工或自动化方式在代码的方法定义、智能化软件开发落地实践指南(2024 年)28循环、条件语句等位置新增注释,增强代码可读性,例如开源代码可采用 AI 自动化生成注释,私有代码可采用人工注释以得到更好效果;上下文增强是在准备微调数据时,将代码数据扩充增加相关联的上下文、依赖、外部对象和方法等信息;数量及多样性增强用于提升代码数据覆盖度减少过拟合,常用方法如 Self-Instruct、Evol-Instruct、OSS-Instruct 和 Self-OSS-Instruct 等。数据检查数据集的质量决定了大模型的性能,代码数据集在处理过程中应满足一定要求54、。数据集质量方面,应满足语法正确、编码规范、无安全漏洞、无缺陷、无敏感信息、无重复代码、包含注释等要求;数据场景覆盖方面,应选择高质量代码,只包含代码文件,无需其他配置文件,同时只包含核心代码,弃用边缘代码等要求。(二)代码大模型优化能力(二)代码大模型优化能力对代码大模型进行优化的目标是维持或增强其推理能力,主要包括模型调优及调优后模型部署,应用于企业使用专有数据集对代码大模型进行专项调优的过程。模型调优模型调优是在特定任务或领域上进一步训练或调优模型,以优化其对这一任务或领域的理解和推理能力。代码大模型调优通常采用有监督微调和强化学习等方法。智能化软件开发落地实践指南(2024 年)29图55、 11 代码大模型优化过程示意图有监督微调亦称指令微调,是指通过构建指令格式的实例,以有监督方式对大模型进行微调。指令微调可辅助代码大模型提升推理能力,从而展现出泛化到未见过的任务的卓越能力。指令微调的前提是构建问答对数据集,同时根据实际任务(如代码生成、代码解释等任务)配置数据配比不断完善数据质量。有监督微调包含全量参数指令微调和高效微调,当算力充足且数据集较多的情况下,通常采用全量参数指令微调的方式,从而达到更好微调效果,但算力不足时,可采用更高效的微调方法,如 LoRa、Adapter、Prefix-tunning 等。强化学习的目标是强化代码大模型在某些准确率不高的任务下的能力,可通过56、人类反馈对推理质量进行评估和排序,并依据其反馈结果开展学习优化,从而持续提升推理生成的质量。强化学习通常选择基于人类反馈的强化学习算法框架,并利用近端策略优化算智能化软件开发落地实践指南(2024 年)30法进行优化,或进行直接偏好优化。强化学习需要特殊构建数据集,一方面可以使用大模型生成或人工构建数据对,针对不同开发场景进行增强,从而提升模型的通用研发能力,如针对某类代码框架或前端开发、后端开发等不同场景构建正负数据对;另一方面则需要结合测试反馈或用户反馈来针对模型能力较弱的场景进行增强,如在服务运行阶段,通过后台监控白名单用户行为,如点赞点踩、代码采纳情况等,收集好回答示例和坏回答示例进行57、数据构造,从而修正模型偏好。模型部署模型部署是指将调优好的模型部署至服务器上供用户使用的过程。模型部署时普遍考虑三点,一方面开展模型转换,根据部署资源将模型转换成所需形态,另一方面通过优化算法提升大模型推理速度和吞吐量,提高计算资源的利用率,最后根据需求、使用场景选用并生成合理的模型调用方式,如接口(API)或插件方式。但在代码大模型部署时,还应特别考虑前后处理工作,当用户提交请求时,需对用户所在项目工程进行软件分析,并将分析信息和用户输入一并输入给代码大模型;当代码大模型推理完成后,需对推理结果进行后处理,如在函数结束位置提前停止、复读检测、幻觉检测等,以增强代码大模型推理生成的准确性。(三58、)智能开发能力评估(三)智能开发能力评估为验证代码大模型及智能开发工具是否满足需求,通过构建评估数据集和指标对其开展全面评估,应用于企业在采购、建设及维智能化软件开发落地实践指南(2024 年)31护优化智能开发能力的过程。评估对象智能开发能力评估包括代码大模型能力评估和智能开发工具能力评估。代码大模型能力评估聚焦于大模型的理解和推理能力,通过采用专业评估数据集对代码生成的准确性、单元测试的覆盖度、代码检查的错误检出率等指标进行评估。智能开发工具能力评估聚焦于平台能力、功能丰富度和专项化能力等多个维度,综合衡量呈现给用户的工具的性能和工程化能力,其框架如图 12 所示。图 12 智能开发能力评59、估架构图评估内容代码大模型评估旨在衡量准确性和可接受度,智能开发工具评估旨在衡量准确性和可接受度,以及工具的功能丰富度、工程化能力以及体验度。准确性评估是通过预设的关键指标对工具在特定场景下的输出进行客观分析(如表 1 所示),考察输出的准确性和逻辑合理性;可接受度评估是通过专家评审等主观分析,考察输出是否达到行业标准,主要包括输出代码的符合性、可读性、规范性、完整性、合规性和安全性等;工具专项评估是通过对工具的功能和智能化软件开发落地实践指南(2024 年)32性能的评估,考察其应用层面的灵活性、可扩展性、兼容性、安全性、稳定性等,以及功能丰富度和使用过程的体验度等。表 1 准确性评估场景与60、指标参考清单评估方法智能化开发能力的评估方法涉及多种方法。一是自动化评估方法,面向准确性评估,通过构建评估框架、指标体系和自动化工具,使用数据集开展相关客观指标的评估;二是裁判模型评估方法,面向可接受度评估,通过选取具有高精度和相关领域知识的大模型作为“裁判”,设置好详细的提示词,对输出进行评估;三是领域专家评估方法,面向可接受度和工具专项评估,通过行业专家对照预期结果评估工具的实际性能及工程化能力,提供主观判断。实际评估过程中,通常采用多种方法可形成互补的评估机制,同时考虑评估效率和准确性,从而为持续提升智能开发能力提供有效方法。(四)智能开发安全能力(四)智能开发安全能力智能开发的安全能力61、是指从代码数据、代码大模型、智能开发工具等层面构建的安全治理体系,目的是减少使用智能开发能力时智能化软件开发落地实践指南(2024 年)33带来的风险,主要包括数据安全、模型安全和应用安全,应用于企业落地智能开发能力的全过程。图 13 安全能力体系架构图1.数据安全治理数据安全治理应考虑从数据源头到应用全过程的安全可控,以保证用于代码大模型训练和调优的代码数据集安全。数据采集阶段确保从可信代码仓库获取源数据,防止版权风险;数据处理阶段通过清洗与过滤等技术,精准剔除敏感代码,并对代码数据进行分类与标注,便于后续的差异化管理和使用;数据安全评估阶段作为质量门禁,对拟入库并共享发布的代码数据集进行审62、查;数据管理阶段可通过存储层加密等手段确保代码数据存储安全,以版本控制和访问控制等手段确保代码数据可追溯,并通过定期安全评估开展数据健康状况监控,及时处理安全风险。同时,承载数据采集、处理等全过程的工具链,需具备任务隔离和严格的访问控制机制,确保其自身的安全,保证代码数据开发过程的安全可控。图 14 数据安全治理流程示意图智能化软件开发落地实践指南(2024 年)342.模型安全治理模型安全治理应考虑代码大模型在开发、管理及运行阶段安全可控。开发阶段,即代码大模型调优阶段,首先应保证数据和基础模型的来源可信,同时对模型进行安全标识和分类分级;其次通过相关数据集对代码大模型开展安全可信评估,确保63、模型推理结果满足基础安全要求。管理阶段,应对代码大模型进行安全性存储和加密传输,并加强模型版本管理实现模型溯源,确保合理的权限约束。同时,对于承载代码大模型开发全过程的工具链,需具备任务隔离和严格的访问控制机制,确保其自身的安全,保证代码大模型开发过程的安全可控。运行阶段,面向代码大模型推理服务,一是确保推理接口安全,通过通信加密协议、安全访问机制等方式,防止未授权访问及 API滥用等情况;二是确保提示词数据安全(如提示词不被篡改等)、知识库数据安全,并对 RAG 检索的知识附带来源,降低运行时推理风险;三是对推理资源做合理分配,防止推理资源的过度消耗;四是确保运行环境安全,防止模型泄露或被篡64、改,通过实施沙箱隔离及强化访问控制等措施,确保只有经过认证的用户和应用程序才能访问代码大模型。智能化软件开发落地实践指南(2024 年)35图 15 模型安全治理架构图3.应用安全治理应用安全治理是对基于代码大模型的智能开发工具的安全保障,一是关注应用安全防护,如部署 DDoS、WAF 等网络安全防护技术;二是强化敏感信息检测机制,对用户输入及模型输出内容实施敏感信息检测和内容安全防控,以防范敏感信息及关键资产的泄露,并保障内容合法性和适宜性;三是保证用户数据隐私安全,用户数据应严格按照授权内容存储,或者不存储,确保私有数据安全;四是可考虑模型领域隔离,仅限定于研发领域的应用,不提供其他无关领65、域的内容生成等功能;五是健全安全审计机制,通过系统请求和操作等审计日志的管理,确保智能开发工具使用安全性。图 16 应用安全治理框架图智能化软件开发落地实践指南(2024 年)36(五)其他工程化能力(五)其他工程化能力为进一步提升代码大模型及智能开发工具对问题的理解能力,以及对企业私有化知识的习得能力,提示词、RAG、Agent 等各工程化能力扮演着重要角色,可在不改变代码大模型的前提下达到更好推理效果,本节重点围绕提示工程和 RAG 展开分析。1.提示工程能力提示工程是用户与代码大模型交互的主要桥梁,通过设计和使用提示词可优化代码大模型能力,对提升模型性能、增强模型可控性、扩展模型能力等方66、面具有直接作用。面向智能开发领域,提示工程主要被用于两个阶段,一是代码大模型训练调优阶段,使用提示词构造训练样本,通过预训练、指令微调、反馈对齐等方式训练大模型,从而提高其对特定指令的遵从和理解能力,或者赋予模型连续对话、工具调用等能力;二是代码大模型推理阶段,通过提示词为大模型提供解决问题所需的必要信息,包括但不限于任务背景知识、必要的上下文信息、期望输出格式等,从而提升大模型正确生成答案的概率。提示工程的典型应用包括可感知上下文的代码补全、围绕代码仓的问答、智能解决问题单等场景,需通过提示词将待生成代码中可能用到或可能参考的代码片段、相关文档、项目结构、错误堆栈等信息告知代码大模型。(1)67、提示词要素提示词内容通常可包含以下元素。系统设定,涵盖人设/角色、基本原则、安全边界等重要内容;任务提示,明确指出大模型需要智能化软件开发落地实践指南(2024 年)37完成的具体任务或目标、输入格式、输出要求等;用户指令,包括当前要回答的具体问题的背景、描述、详细要求等;示例样本,提供若干具体的输入-输出示例;上下文输入,提供当前任务所需要的隐式上下文。除此之外,还可以根据具体场景附加其他元素,如检索增强内容、可调用工具列表、行动与反思指令等。业内使用的提示词模版较为典型的包括 BROKE、CRISPE、ICIO、APE 等。(2)提示词构造方法提示词构造是一个复杂且多维的过程,不仅涉及设计68、和编写提示词本身,还可借助其他工程化方式动态构造和组装提示词。手动编写提示词是一种基本且直接的提示词构造方法,由用户或代码大模型服务提供方,根据各自的需求和任务背景直接手动编写,本方法简单直接但不够灵活且效率较低,适用于简单场景;动态组装提示词是指在运行时基于模板生成提示词的构造方法,可通过软件分析、自然语言处理、大模型推理等技术进行动态填充,如代码生成任务中的上下文、代码重构任务中的项目结构等。(3)提示词实例参考在代码补全任务中,提示词通常如表 2 所示。通过该提示词,系统将首先设定代码大模型扮演一个编程专家角色,激发其在编程领域的特定知识;其次通过任务提示告知代码大模型需根据光标处的上下69、文进行补全;最后要求代码大模型根据示例样本,按照用户指令进行代码插入,并不可生成重复代码。通过该提示词可提升代码续写能力。智能化软件开发落地实践指南(2024 年)38表 2 提示词示例 1在代码解释任务中,提示词通常如表 3 所示。通过该提示词,系统将首先设定代码大模型扮演一个编程教练角色,激发其在教学领域的特定知识;其次通过任务提示告知代码大模型在解释时所需要使用的语言以及输出格式;最后根据用户指令明确需要解释的代码片段及其所在文件,并获取上下文信息进行代码解释,通过该提示词可提升代码解释的效果。表 3 提示词示例 2智能化软件开发落地实践指南(2024 年)392.RAG 能力检索增强生70、成(RAG)是指通过语义相似性计算从外部知识库中检索相关文档块,以增强代码大模型能力,减少幻觉并提高对专业知识的快速习得能力。面对私有代码库检索、研发问答知识追溯、生成的代码需符合内部开发规范、生成内部开发文档等情况,RAG可提供较好的解决方案。RAG 落地过程中,通常包括数据索引服务、向量化模型服务、向量数据库服务和搜索服务四个主要环节(如图 17 所示)。图 17 RAG 落地流程示意图数据索引服务是指将知识进行向量化并存储于数据库的过程,其中采用不同索引构建方式处理文本和代码数据是核心要点,文本的拆分处理可选择固定字符数分块、递归分块、语义分块和特定格式分块等方式,代码拆分处理时,对于常71、规长度的函数体可选择整体向量化而不做拆分,对于少数超大超长函数体既可采取自动截断也可按行进行切分;向量化模型服务可选择 BGE(Bi-Encoder forGeneralEmbeddings)、M3E(MultimodalMultilingualMultitaskEmbeddings)等模型,通过部署容器化并对外暴露端口,提供向量化服务;数据库服务使用向量数据库存储向量化之后的数据,可选择智能化软件开发落地实践指南(2024 年)40开源数据库如 Milvus,Faiss,Weaviate,Qdrant 等,并通过减少向量大小、缩小搜索范围等方式提高数据库检索效率;搜索服务是向量化模型服务和数72、据库服务的桥梁,一方面用于将查询请求转换为向量表示,并在向量数据库中搜索相似项,另一方面对于搜索结果需根据不同使用场景设置不同的相似度阈值,确保将高质量结果反馈给代码大模型作为输入的一部分。智能化软件开发落地实践指南(2024 年)41五、智能开发落地案例分析五、智能开发落地案例分析各行业积极探索智能开发落地之道,并在部分行业的应用成效显著。本章将对智能化软件开发在云服务、软件服务业、电力、金融及制造等行业的落地案例进行阐述和分析。(一)云服务行业案例(一)云服务行业案例某大型云服务企业云服务研发过程遵循 DevOps 最佳实践,一方面该企业产品需要基于业界前沿方法和技术不断提升研发效率和产品73、发布速度,以响应激烈的市场竞争并保持领先;另一方面作为公司研发工程能力的排头兵,需要优先验证和试点业界领先的智能化软件开发能力,为公司其他产品线更大规模的探索和应用打好前阵。该企业在落地前存在如下问题和需求。1)建立全新的智能化研发工程体系:面向全新的智能化研发范式,在流程、组织、工具等方面需要尽快通过试点探索形成新的工程体系,以牵引云服务研发生产力的持续提升;2)保持研发生产能力先进性:面对激烈市场竞争,如何通过AI 技术升级传统研发体系,保障软件研发生产力持续领先;3)软件研发流程中仍存在高能耗业务场景:问题包括如研发人员难以全盘掌握和快速精准获取海量知识;单元测试及接口测试脚本人工输出工74、作量大,效率低难以匹配业务代码的增长诉求;对高价值代码问题检视率低,质量不可控等。1.解决方案该企业围绕“设计-开发-测试-协同”四个核心研发阶段,基于“高智能化软件开发落地实践指南(2024 年)42能耗”活动(如高消耗、高知识门槛)和“AI 适用性”(业务成熟度、数据成熟度、技术成熟度)”两个方面共 5 个维度,识别出各研发阶段中 AI 实践价值场景。而“开发”场景为价值最高,因此优先落地覆盖了编码的“读-写-调-测-检”全流程。图 18 某云服务企业案例落地方案示意图2.价值和收益该企业首轮试点后,半年多快速覆盖用户 7000+人,日活 1800+,AI 代码生成 220+万行,单测生成75、 300+万行,研发问答 46+万次。其中单测全量覆盖率达到 57%(提升 89%),增量覆盖率达到 78%(提升 1.3 倍),研发效率得到明显提升。(二)软件服务业案例(二)软件服务业案例某软件服务企业为国内众多行业提供软件研发服务,包括需求设计、开发、测试、运维等,但服务过程中面临的痛点问题长期存在。1)业务系统沟通效率低:在被服务的企业中,业务需求复杂且多变,但需求人员少而开发人员多,造成沟通瓶颈,使得项目的智能化软件开发落地实践指南(2024 年)43整体进度迟缓;2)代码开发质量待改进:开发过程中缺乏高效的代码审查机制,导致潜在缺陷和技术债务未能及时被发现和解决,另外自动化测试实现76、不足,手动测试覆盖面有限,增加了系统上线风险;3)信创体系带来的迁移困难:由于历史原因部分企业存在不少Cobal 等语言的老业务系统,而现在熟悉 Cobal 的业务逻辑和技术人员极少,给系统迁移带来极大困难。1.解决方案针对上述一系列问题,该企业自研了 AISE 一体化平台,助力软件研发过程提质提效。1)通过将项目知识资产(需求文档、设计文档、业务需求等)进行处理,利用大模型智能分析问题和归纳总结能力,为每个项目组提供独立的智能问答助手,节省项目知识沟通成本;2)提供代码自动生成、自动审查、自动修复、单元测试用例自动生成、代码翻译和转换等功能,并将上述功能完全集成在现有开发环境中,在不改变开发77、人员习惯的同时提升开发效率和质量;3)引入多级外部知识库和大模型集成,支持 Github、Gitlab、网站、异构数据源等多种格式知识库的导入,同时无缝连接企业内部系统,提供效率查询、单点登录、业务系统数据联通等多种接口技术,给业务系统赋予更多智能化能力。智能化软件开发落地实践指南(2024 年)44图 19 某软件服务企业案例落地方案示意图2.价值和收益该企业的 AISE 一体化平台落地后,Cobal 代码迁移效率提升40%以上,项目沟通时间成本从以往以星期为周期降低为一天以内,开发效率提升 30%左右。(三)电力行业案例(三)电力行业案例某国网数字化建设支撑单位,专注于电力行业多个专业数字78、化系统的研发与推广,致力于推动电力行业实现数字化转型,但在软件开发过程中,面临多重挑战。1)外部资源难以利用:由于研发环境相对封闭,导致无法充分整合和合理利用外部优质资源;2)开发周期长:项目规模庞大,需求繁杂,但开发人员有限,致使开发周期不断延长,影响项目交付的及时性;3)代码规范性差、维护困难:缺乏严格的代码审查流程,导致智能化软件开发落地实践指南(2024 年)45代码质量参差不齐,为后续的软件维护和升级工作带来了极大的困难,增加维护成本和风险。1.解决方案针对上述问题,该单位基于人工智能大模型技术,研发了智能编码工具,实现了代码自动生成、优化、测试、规范性检查与修复等功能。1)以代码大79、模型作为基座模型,运用 LoRa 进行私有代码的定制化微调,从而更好地服务于电力行业的特定需求,并适应不同部门和项目组的独特工作流程;2)提供基于 AI 的查询和问答系统,针对公司公共组件库和统一数据模型进行检索,帮助开发者快速定位和理解组件功能,促进代码复用和标准化,降低维护成本;3)开发自动化检测和修正工具,可根据公司的代码规范要求对代码进行实时扫描,自动识别不规范代码片段,并提供修正建议或直接进行自动修改,提升了整体代码质量。图 20 某电力行业企业案例落地方案示意图智能化软件开发落地实践指南(2024 年)462.价值和收益通过智能编码工具的使用,代码生成和优化速度与准确率得到了显著提80、升,代码质量评分提高至 90%以上,开发效率提升超过50%,项目交付时间平均缩短 40%。(四)金融行业案例(四)金融行业案例某国有银行在企业数字化转型过程中,面临软件应用膨胀、代码量激增和架构复杂化的挑战。为抓住金融科技创新机遇,该银行决定引入大模型技术提升软件应用的开发效率,保障代码质量,并控制研发成本。该企业在落地前存在如下问题和需求。1)老旧应用重构及迁移困难:该行有很多海外应用使用了 Flex编程语言进行开发,代码量大且技术过时,而新人对 Flex 不熟悉,需投入大量精力维护,期望能将其重构成 React 代码;2)自研框架开发门槛高:行内基于 SpringBoot 的自研框架规范性81、设计约束多,日常开发过度依赖开发文档,需降低开发门槛,提升效率;3)代码质量隐患:由于线上问题时有发生,其影响大、定位难、耗时长,期望从代码层面保障开发质量,强化单元测试的执行力,原有单测覆盖率10%。1.解决方案针对企业前期存在的问题,与其他公司联创实现了智能开发工具的落地。1)代码翻译与转换:针对老旧应用从 Flex 转到 React 代码,使智能化软件开发落地实践指南(2024 年)47用大模型的代码翻译基础能力,并将行内代码和转换规则等加入学习和训练调优;2)代码辅助生成、框架知识问答:将行内自研开发框架、历史代码和开发文档等进行加入模型训练调优,优化对 Jump 等框架的场景处理能力82、;3)单测用例生成:针对行内单测覆盖率低等问题,落地智能开发工具的单测生成能力,提升单侧覆盖率。图 21 某银行案例落地方案示意图2.价值和收益该行通过落地智能开发工具,Flex 代码转换至 React 代码的准确率由 20%提升至 40%,代码生成采纳率超 30%,Jump 场景评分从 20 分跃升至 70 分。同时,核心业务场景单元测试覆盖率两周内提升 30%以上,部分业务系统覆盖率提升 50%以上。(五)制造行业案例(五)制造行业案例某大型家电制造合资企业,作为领先的数字化转型解决方案提智能化软件开发落地实践指南(2024 年)48供商,在企业数字化转型的过程中,面对日渐复杂的业务场景、83、逐渐庞大的代码规模和快速的交付节奏,期望通过大模型技术提升代码开发效率,该企业在落地前存在如下问题和需求。1)代码阅读瓶颈:现有源代码库中注释稀缺或不准确,严重影响维护性的开发进度;开发人员面对陌生代码时,常陷入理解困境,尤其是涉及不熟悉的编程语言时,理解成本倍增;2)开发效率亟待提升:企业面对庞大的研发团队、加速的交付节奏和严苛的质量标准,迫切需要提升研发效能、实现降本增效;3)大模型创新探索:作为行业大模型应用的先行者,企业不仅密切关注前沿技术的创新与演进,也渴望深入探索代码大模型在智能家居行业实际应用场景中的表现,评估其成熟度,并以此推动整个智能制造业的进步。1.解决方案该企业秉持建设“84、行业第一,世界一流”的目标,整体制定代码大模型落地方案,在部分研发领域实现小步快跑。1)通过落地代码大模型,实现代码生成、代码解释、代码注释等能力,解决阅读瓶颈等问题;2)通过集成高可用模型、高性能服务器,并借助 RAG 检索增强和 SFT 模型调优等技术,持续定制化地训练和优化代码大模型在注释生成和补全、用例生成、安全合规等方面的表现;3)部署智能化可视化看板,实时监测人员覆盖率、接口调用频次、问答接受度、单元测试覆盖率等各项指标,量化大模型对研发智能化软件开发落地实践指南(2024 年)49效能的提升。图 22 某家电制造企业案例落地方案示意图2.价值和收益该企业落地智能开发工具后,开发人85、员编码效率提升 20%30%,企业内部 80%开发人员已使用,月活用户比例达到 70%,助力企业整体研发效能提升 20%以上。智能化软件开发落地实践指南(2024 年)50六、总结与展望六、总结与展望智能化软件开发作为大模型落地应用最快的场景之一,其智能化水平得到持续提升,落地成效逐渐显现,落地方案逐渐明晰,为软件工程变革性发展带来巨大推动力。软件工程智能化变革成为必然,智能开发助推价值提升。大模型推动软件工程 3.0 围绕着交互性、智能化、自适应和持续优化等特点持续发展,智能化能力为软件开发环节带来的价值显著,包括开发效率、代码质量和产品迭代创新能力的提升,推动软件工程高质量发展。智能开发落86、地策略逐渐明确,三层落地框架成为主流。通过自我诊断、方案设计、部署实施、持续优化四个关键落地步骤,围绕模型层、服务层和应用层三层落地框架,企业落地智能开发能力的路径更加明晰。核心能力和使能能力建设助力智能开发能力高效落地。一方面通过代码生成与补全、单测用例生成、代码转换与优化、代码解释与注释等核心能力建设,可实现代码大模型和智能开发工具的基础落地;另一方面通过数据、模型、评估和安全等多维度的使能能力建设,可实现代码大模型持续优化迭代,以及应用工具能力的提升。未来,代码大模型和智能开发工具将从技术、应用和形态等方面持续发展,从而构建和落地更智能、全流程、可解决复杂研发问题的应用工具。技术能力的持87、续发展将带来更高准确性和更优性能。一是大模智能化软件开发落地实践指南(2024 年)51型自身能力的提升,基础大模型架构方面将探索更加高效、灵活、可扩展的底层模型架构(如 Mamba、MOE-Mamba 等),代码大模型方面将从高质量数据集、模型调优量化技术、上下文长度等角度生产更优性能的模型;二是工具工程化能力的提升,提示工程、RAG、AI Agent 等技术的发展将在工具层面为代码大模型进一步辅助增强,未来还将有更多新兴技术的发展和辅助,为智能开发能力落地提供更强劲动力。落地应用的场景将更加丰富、流程更加全面。随着智能开发能力在前端页面、数据库、桌面应用、嵌入式等场景的逐步落地,未来将衍生88、更多场景,包括工业领域代码开发等,为赋能新型工业化提供更多路径。同时在软件工程全生命周期中的落地将更加全面,围绕智能开发向需求设计、软件测试、系统运维、项目管理等环节拓展,通过 AIAgent 等技术打通全流程智能化落地,从而实现“人人都是开发者”的低门槛生态。应用形态将朝着更加智能化的方向持续推进。从当前的辅助开发人员完成任务,到帮助开发人员独立完成更复杂的研发任务,再到未来替代开发人员真正实现严格意义的智能开发,从而推动副驾驶(Copilot)到驾驶员(Pilot)的逐步演进。同时组织结构从团队作战将演变为单兵作战,开发人员将更聚焦于软件设计及更具有创新价值的工作,软件研发形态将得到重塑,软件业将迎来变革。代码安全和安全代码相辅相成推动软件安全可信发展。代码安全是指通过智能化能力检查和修复代码中的安全漏洞,从而提升其智能化软件开发落地实践指南(2024 年)52安全性,一是将拓展检查范围,不光检查传统代码,还将检查大模型等 AI 模型的安全漏洞;二是将降低代码检查工具误报率,提升漏洞检查质量。安全代码是指通过代码大模型生成的代码的安全性,未来将从数据、模型、工具等维度持续降低生成式代码的风险,使智能开发真正安全,使未来软件更加安全可信。53

    下载