写点什么

华为 AI 软件工程实践:30 年专业经验沉淀打造企业级确定性的高质量软件

  • 2026-03-26
    北京
  • 本文字数:8955 字

    阅读完需:约 29 分钟

概述

华为“非创造性活动”与“创造性活动”二元划分的软件工程经验实践

在 30 年的研发实践中,华为基于 IPD 流程框架,结合业界先进研发模式与方法,将标准化的研发作业活动提炼为“非创造性活动”和“创造性活动”。代码提交、编译构建、单元测试执行、动静态检查、测试验证、软件部署等非创造性活动全面自动化,并通过分层分级的 CI/CD 流水线,构建起自动化“软件工厂(Software Factory)”,实现最小化人工干预。需求分析、架构设计、story 设计、软件开发、测试设计等需要依赖人类智力的活动归类为“创造性活动”,华为通过引入业界先进软件工程方法、理念与工程实践,如:实例化需求、OOA 分析法、F-F 方法、场景分析方法、分层架构设计、事件驱动架构设计、4+1 视图、CleanCode、重构、测试分层方法、启发式测试设计、风险分析技术、测试因子识别方法等,实现创造性活动高效开展和输出结果的确定性与一致性,并固化到流程活动中,形成专家经验资产(模板、指导书等)。

正是基于这套“机器的归机器(软件工厂,追求高效),人类的归人类(高阶工程方法,追求确定性一致性)”的二元划分体系,华为在传统软件工程时代构建起了业界领先的高效研发能力,支撑起华为多业务形态、高复杂度产品的开发与高质量交付。华为的软件研发能力包括如下五个维度:

  • 价值驱动的研发业务流程:基于业务形态定义业务价值流程,在流程中详细定义了实现业务价值过程中各个阶段的作业活动、活动之间的顺序以及输入、输出和验证标准等,形成了标准化研发作业体系,保障研发过程执行可检查,交付结果可管控。

  • 权责明确的研发角色:在实现业务作业场景中,通过明确研发流程各阶段的角色定义、职责边界、操作权限与协同规则,规范不同角色在流程节点中的准入条件、执行动作、交付物要求与决策权限,实现责任到角色、活动可执行、过程可追溯。

  • 规范标准化的研发过程能力:在长期落地实践中,针对不同业务形态构建了系统化、全覆盖的研发过程资产体系,包含各作业活动的工程方法、指导书、模板、标准规范、检查表、KCP 等,用以指导研发团队规范化开展需求分析、架构设计、代码开发、测试验证等全流程活动,推动软件开发从无序走向有序、从经验驱动走向标准驱动,最终实现研发全过程标准化、规范化。

  • 全场景海量研发经验数据:依托嵌入式、云服务、终端、车等丰富业务场景的长期工程实践,沉淀形成全场景、规模化的研发经验数据资产,涵盖架构设计范式、设计模式库、重构模式库、高质量代码范例、代码检视专家意见库、测试场景用例库、最佳实践样例集、成熟度评估模型等研发活动工程实践经验,为研发数字化、智能化提供了坚实的数据底座与实践支撑。

  • 连续、先进、好用的研发工具:将工程方法、流程规范与经验数据内建到工具平台,使工程能力和流程要求真正落地为可执行、可持续优化的数字化能力。持续打造先进、自主的工具体系,核心工具坚持自主研发,构筑起对外部风险的强大免疫力。同时,工具体系以研发人员满意为最高追求,将“好用”贯穿始终,通过简洁高效的交互与智能化辅助,激发创造力,提升研发体验与效率。

随着人工智能时代的全面爆发,软件工程的底层逻辑正在经历一场史无前例的重构,“意图编程(Vibe Coding)”等新兴模式尝试改变传统人机交互方式,将人类的自然语言意图直接转化为可执行的代码。然而,在面对专业垂直领域和高复杂大规模遗留系统时,Vibe Coding 模式正面临严峻挑战。大语言模型(LLM)的底层概率算法,决定了其生成过程天然伴随着“幻觉”与难以捉摸的非确定性。这种非确定性不仅难以保障短期的代码交付质量,更无法在长期的系统演进中持续降低代码熵值并提升可维护性。 

面对这一技术鸿沟,业界不得不重新审视一个核心议题:传统软件工程历经数十年沉淀的优秀经验,究竟该如何有效传承到 AI 驱动的全新范式中?

 

在 AI Coding 模式下,AI 软件工程核心需要解决两大关键难题:

1. 创造性中的确定性:在引入大语言模型(LLM)强大的自动生成能力时,必须通过工程化手段有效遏制 AI 固有的随机性与幻觉,确保系统输出的业务逻辑、代码与工程资产始终符合业务预期,满足企业级系统对稳定性和可靠性的严苛要求。

2. 过程中的可验证性:在 AI 深度参与的研发全生命周期中,打破“黑盒”效应,建立透明、可追溯且严格对齐安全与质量标准的自动化校验机制,确保所有智能化产出不仅“生成即可用”,更能经受住严格的工程审计与一致性检验。

这两者的结合,是保障 AI 能够从“探索性辅助工具”真正走向“企业级高质可信 AI 原生”的必由之路。 

一、创造性中的确定性,以传统软件工程方法约束 AI 生成的随机性

 

AI 时代软件工程的核心命题,已从早期的“如何用机器替代人类劳动”,转变为“如何在由 AI 主导的高能创造性活动中,构建“确定性锚点”。这些“确定性锚点”的本质是将工业界成熟的工程方法、规范体系、架构原则与测试标准,深度融入 Agent 的生成与大模型的推理过程中,以此来对冲 AI 生成的随机性,重塑工程的严谨性,我们才能在尽情拥抱 AI 创新生产力的同时,守住大型软件系统高质量、可持续演进的底线。

 

在这一全新范式下,“确定性锚点”具象化为高质量系统演进中的四大核心能力支柱:

1. 上下文设计:从意图到工程契约

为约束大模型的发散性和人在表达需求/意图时的模糊性,精准的提示词和基于软件工程方法/框架的上下文设计是当前最有效的解决措施,包含结构化需求描述方法、架构设计方法与约束、前置条件与验收标准等一系列工程方法,将意图转化为工程契约。通过结构化模板,结合实例化需求、F-F 方法、面向对象分析(OOA)与场景用例分析,将业务特性逐层拆解;全面引入属性驱动设计(ADD)、领域驱动设计(DDD)等架构设计方法,制定通用架构设计十大原则、组件化改造原则、微服务拆分原则等架构设计指导原则,强制 AI 在输出代码前优先完成核心设计目标、关键质量属性、组件交互与关键接口(API)等定义。同时,结合 SOP(标准作业程序)提供细粒度执行步骤,从源头锁定异常分支与边界条件,确保生成的架构设计与业务逻辑符合工程预期。

2. 智能体扩展机制:基于工程资产映射的协同分工

针对复杂遗留系统,研发体系引入 SubAgent、Skill 与 MCP(模型上下文协议)机制实现多智能体协同。在此架构中,工程经验被系统性地转化为三大扩展支柱:传统研发角色、职责与技能被实例化为对应的 SubAgent;SOP(标准作业程序)、标准规范与模板被封装为领域 Skill(原子能力);企业私有代码库、历史业务数据与架构模型等则通过 MCP 或 RAG 接入智能体,增强生成的准确性。“架构师 SubAgent”通过 MCP 获取遗留代码上下文,并调用内化了微服务拆分原则的专属 Skill 输出系统架构;“Committer SubAgent”在执行代码合入决策时,依据内置的检视规则调用“可信安全防御 Skill”对代码进行扫描,识别并拦截内存泄漏与越权访问等安全风险。该机制通过将实体工程资产与智能体扩展技术强绑定,实现了复杂系统演进的标准化与可控性。

3. 知识图谱构建:沉淀领域知识资产

为解决通用大模型领域知识匮乏的问题,系统将需求树、场景库、架构模型、软件框架、代码检视记录与开发者测试(DT)用例全面向量化,构建了底层领域知识图谱(注:随着 Agent 和 LLM 能力提升,可能不再需要这样做或者不需要做这么多)。该图谱跨越了静态数据仓库的局限,实质性地确立了“需求-设计-代码-用例-缺陷”的端到端双向可追溯语义网络:在面临前端业务需求变更时,智能体能够依托该网络启动严格的正向追溯,将抽象的业务变动精准映射至系统内部,自动锁定并评估所有相关联的架构模块、底层代码片段以及需同步更新的回归测试用例,从而规避人工漏改引发的次生风险;反之,在处理复杂的生产缺陷时,系统支持从孤立的异常代码段或报错日志切入并发起逆向关联分析,理解最初的业务设计模型与原始需求意图,使缺陷治理不再局限于局部的代码修补,而是在全局架构视角下实施根除。这种基于知识图谱的双向追溯机制,保障了复杂系统在智能化演进过程中的全局逻辑一致性。

4. 全链路监督工程:系统演进的过程控制

为保障交付质量,AI 生成的各类研发产物被严格纳入层层递进的流水线门禁控制体系。在需求分析与架构设计阶段,AI 产出依次通过需求评审与软件设计评审,以确保业务意图与系统架构的逻辑自洽;在代码生成与提交流水线阶段,AI 产出需满足代码 CleanCode 与可信验收条件,通过 Committer 检视方可获准合入代码主干;在随后的系统验证阶段,代码需经过分层自动化测试,并结合精准测试技术,确保核心变更影响面被完整覆盖验证;最终验证的代码通过灰度发布机制平稳部署至生产环境。这种将工程纪律实例化为阶段性强制评审与自动化卡点的验证体系,确保了 AI 交付产物的可靠性。 

上述工程能力并非停留在理论层面,而是落地为一系列具体、可操作的研发工具与平台。这些工具化的工程能力显著降低了应用门槛:开发者无需精通每一项工程细节,只需遵循工具引导即可自动获得符合规范的产出;团队协作时,工具确保了方法执行的一致性,避免了因人而异的偏差;更重要的是,工具承载的工程纪律为 AI 生成内容的可控性提供了保障。华为智能体正是基于这一理念,将上下文契约、智能体扩展、知识图谱与全链路监督工程内建为基础能力,真正提升创造性活动中的确定性。 

将传统软件工程经验有效转化为 AI 时代的实际生产力,关键是要打破“先生成、后校验”的黑盒模式,将确定性管控措施融入于智能体代码生成的全过程。通过将“可信软件工程(Trustworthy Software Engineering)”的过程管控实践深度融入现有研发作业流中,从机制上实现对 AI 代码生成过程的实时监测与动态纠偏。

二、过程中的可验证性,构筑高质量软件基座

1. 围绕软件开发作业流活动,构建可验证的工程活动

华为可信软件工程始终瞄准确定性高质量目标、始终围绕着开发活动工作流展开,通过不断优化工程活动、持续减少偶发性因素、增加确定性结果、构建起可验证的高质量高效的软件工程能力。

1.1 完善的作业流过程与评审设置,降低结果的不确定性

软件开发作业流:整体可分为软件设计、软件开发与自验、代码提交与 Review、代码审核与合入、自动化流水线、测试执行、缺陷管理、测试评估、版本发布等几个大阶段,通过设置审核检查点控制和管理交付质量:

1.2 丰富的可信软件工程资产,助力可信高质量

华为公司业务领域广泛,覆盖 ICT、终端、云、能源等众多业务场景,产品形态丰富,拥有嵌入式、云服务、终端业务等。19 年全面开始可信软件工程能力变革,围绕可信高质量的目标,对软件开发能力实施了多轮锤炼和打磨,沉淀了海量的可信软件活动资产,涵盖数以千计的 场景流程、评审要求、标准规范、检查规则、约束、经验与知识库等。这些资产沉淀,在整个端到端变革实践落地的过程中发挥了重要作用,无论是架构设计合规性和完备性检查、还是软件架构设计与实现一致性看护,无论是自研软件 Clean Code 扫描、还是开源软件漏洞扫描,都是基于这些规范、标准、checklist 等可信活动资产构筑起的质量防护网。这些可信资产依然可以融入到 AI 软件工程各环节,筑起 AI 软件工程的质量堤坝。

1.3 详尽的过程信息管理,保障过程可追溯

详尽的过程信息管理不仅保障了开发过程的端到端可追溯,更为构建持续验证的质量门禁提供了事实依据。在 AI 软件工程中,这种详尽的数据支撑了质量管理从“被动追溯修复”向“持续验证、主动预防”的能力转变。

  • 开发信息的全链路验证与双向追溯:开发信息追溯是质量管理的基础,通过统一的软件工程、端到端打通的信息流,自动化的信息记录跟踪,实现开发过程的可追溯性和可审计性。在 AI 软件工程中,智能体可基于这些详实的数据,自动执行需求的可测试性分析与过程的合规性验证,确保每一个开发环节的产出都具备清晰的质量证据,为后续问题定界或系统自愈提供闭环的验证基准。

  • 代码变更的持续验证与智能审核:代码修改及审核信息,为评估代码质量及开发人员工作效率提供了最直接的参考和输入。在 AI 软件工程中,依托历史变更、审核意见与编码经验库,智能体能自动评估代码质量、识别潜在逻辑漏洞,还能自动生成针对本次变更的验证测试用例,确保合入主干的代码始终处于高维度的可用状态。

  • 异常信息的闭环验证与主动防御:异常信息包括编译异常、构建异常、扫描异常、测试异常、运行异常等多种类型,各类异常信息处理方法,是开发人员进行后续修复及预防性编码重要的知识库。在 AI 软件工程中,异常不再仅仅是被动记录的日志,而是触发自动验证的“探针”。智能体可以对异常信息进行自动捕获、聚类与根因验证,不仅能智能推演最优修复方案,还能自动生成针对该类异常的自动化回归用例,而且这种机制确保了每一个被修复的异常都能防止同类问题不再发生。

  • 代码缺陷的深度验证与预防性度量:代码缺陷情况包括缺陷详细记录、缺陷分布、缺陷趋势、缺陷分析等内容,为质量预测预防提供了可靠的历史经验数据。在 AI 软件工程中,通过对缺陷生命周期的深度挖掘,AI 可以自动识别系统中的高频缺陷模块,基于历史缺陷模式,AI 不仅能完成缺陷的自动修复与验证确认,还能建立质量预测模型,主动输出系统级质量加固方案和预防性测试策略,实现质量管理从“已知缺陷修复”到“未知风险防御”的跨越。

2. Clean Code

在 AI 编程席卷全球的今天,代码生成的“量”已不再是瓶颈。真正的挑战在于:如何确保 AI 生成的代码能够达到工业级的高质量标准?华为将数十载沉淀的 Clean Code 经验融入 AI 软件工程,构建了一套涵盖质量度量、代码评审、持续重构与改进的全闭环治理体系。这一体系确保了 AI 生成的每一行代码,都符合华为的严苛质量要求。

2.1 统一的 Clean Code 度量模型:明确质量标准

秉持“没有度量就没有管理”的理念,华为构建了统一的 Clean Code 度量模型,包含可读、可维护、安全、可靠、可测试、高效、可移植七大核心维度,设计了可自动检查的度量指标,例如函数长度、圈复杂度、代码重复率及编译告警清零等。这些指标如同 AI 软件工程的“导航仪”:在 AI 生成代码被提交后,后台引擎会进行全方位扫描,一旦代码偏离标准,系统将实施即时拦截并要求开发者修正,从源头守住工业级代码的规则底线。

2.2 规范的 Committer 评审机制:严控入库质量

除了自动化度量,还设立了严苛的 Committer(代码合入决策者) 机制作为代码入库的最终关卡。在代码提交入库前,还会同时被人和“数字同行”审视。Committer 角色由正式选拔任命的软件技术能力强、实战经验丰富的软件专家担任,负责决策每一次提交的代码能否入库, AI 生成的代码也须经过审核方能入库。这种“人机协同”的双重校验模式实现了:

  • 深度把关: Committer 不仅审查逻辑正确性,更要关注设计美感与架构合理性。

  • 进化反馈: 专家多年来累积的评审意见会形成闭环反馈流,沉淀为经验库,驱动 AI 不断学习并优化其生成偏好。

  • 智力赋能: 华为将海量 CWE(常见弱点枚举)规则、疑难杂症修复指南及专家实战经验形成丰富的知识库,深度注入和赋能给 AI,高效识别风险。

2.3 大规模重构:化解技术债务,防止架构腐化

华为将从实战中来的数以万计的大规模软件重构经验形成海量的经验库,在 AI 软件工程模式下,开发者能利用这些软件重构经验精准剖析存量代码中的“坏味道”,解耦臃肿函数、化解复杂嵌套逻辑、消除不合理的循环依赖等,消除技术债务。

3. 编程规范

3.1 华为编程规范:打造可信高质量代码基准规约

华为编程规范覆盖 Java、C/C++、Python、JS、go 等主流语言,经过 20+ 万研发人员,历经 20+年、千亿行级代码以及云服务、手机、嵌入式、车等多种业务场景下的持续迭代优化,得到欧洲最严苛客户的市场认可,是华为软件开发的核心竞争力资产。以 Java 语言编程规范为例,不仅包含了上百项基础编码与工程准则,还对并发编程、泛型设计与序列化机制等高阶核心技术提出严格约束,构建了覆盖编码全生命周期的约束与最佳实践,为企业级高并发、高可用场景筑牢了高可读、高可维护与极致安全的代码基准规约。

同时,华为编程规范在团队长期落地实践中,通过持续发现问题、解决问题,沉淀出覆盖多业务场景的编码军规、缺陷库、缺陷修复经验案例库、优秀代码案例集等,这些海量的经验沉淀,构筑起华为高质量代码的堤坝。

3.2 基于编程规范生成可信高质量的代码

面对高可靠性、高可维护性和高可读性等代码质量要求,华为将编程规范资产(编码军规、缺陷库、缺陷修复经验案例库和优秀代码案例集等)深度融入 AI 软件工程全流程。这不仅是为 AI 提供上下文,更是为全流程建立了客观的、可度量的验证基准。通过构建覆盖 AI 代码自动生成、自动化验证门禁与智能修复的闭环能力,确保每一行代码不仅“生成即合规”,且“全程可验证”,最终交付满足华为可信标准的确定性高质量代码。

  • 提高代码生成质量:在 AI 代码生成环节前,将全量编程规范要求结构化注入上下文工程中,把编码军规和优秀代码案例总结为 AI 生成代码的前置约束,这使得 AI 不仅“按规写代码”,更能在生成业务代码的同时,同步输出配套的自测用例或验证逻辑,从而提升生成代码的初始质量。

  • 代码规范自动检查:常驻于智能体协同体系中的“代码检查智能体(Code Check Subagent)”,会结合检索增强生成(RAG)技术,对 AI 生成的代码自动执行上百条编码原则、规范及最佳实践的全方位校验,精准挖掘代码中隐藏的潜在缺陷。

  • 代码缺陷智能修复:针对验证门禁中发现的代码问题,代码检查智能体实时检索缺陷库和修复经验库,精准匹配特征并完成智能修复。通过自动触发回归验证测试,验证问题代码是否被真正修复,并确保未引入新的问题,从而生成真正经得起检验的可信高质量代码。

4. 安全规范

随着 AI 大幅降低代码生成的门槛,规模化的代码生成也同时带来了安全风险的规模化放大。为构筑软件的安全底座,华为制定了安全领域两大核心规范:架构级的“安全功能规范”侧重于网络安全、系统韧性与隐私保护;代码级的“安全编码规范”侧重于防范常见的安全漏洞。

将这两大规范通过“内建安全(Security by Design)”植入 AI 生成全生命周期中,实现随时可度量、可验证。

4.1 基于安全功能规范的架构级验证与威胁防御

面对复杂的网络韧性、数据加密标准及隐私保护等高阶安全功能要求,验证工作必须在 AI 介入架构设计与业务建模之前展开。为了弥补大模型在宏观安全设计上的盲区,研发团队在需求与设计阶段,率先通过 BDD(行为驱动开发)语法明确界定系统的“滥用用例(Abuse Cases)”、威胁模型及隐私合规红线。这些前置契约被设计注入上下文工程中,将宏观的安全功能意图转化为前置的架构约束与验证基线。与此同时,在智能体协同网络中常驻的独立“安全架构智能体(Security Subagent)”会结合检索增强生成(RAG),实时调用华为历年沉淀的安全功能规范文档与隐私保护红线法则。当主智能体进行服务拆分方案设计时,必须先经过安全架构智能体的审查与 BDD 契约验证,一旦系统捕捉到违背数据脱敏原则或最小权限原则的场景,将在生成阶段自动终止,从源头确保业务架构的原生安全性。

4.2 基于安全编码规范的代码级实时管控与开源合规

针对代码实现过程中产生的注入攻击、内存泄漏等常见漏洞,以及引入第三方开源依赖带来的不可控风险,必须在代码生成过程中实施自动化检测。在编码阶段,AI 交付的每一行代码都要经过 Agent 内置的安全规范用例测试和安全编码规范扫描,Agent 还内置开源软件合规与漏洞扫描(SCA),对引入的开源组件进行实时的 License 传染性等合规验证和漏洞检测。同时,基于历史真实攻防演练形成的 CVE/Issue 漏洞库与 AI 生成的抽象语法树(AST)进行特征动态对比验证,进一步提升了最终生成代码的质量。

三、码道 Agent 与 CodeArts 深度融合,重构研发新范式

1. 范式革命:开启编码自动驾驶模式

在华为智能化研发布局中,码道早已超越了传统“代码助手”的狭义范畴,它更像是一个由万亿级参数淬炼而成的“智慧中枢”,深植于 CodeArts 软件开发生产线之中,这是建立在源自 MCP(Model Context Protocol) 这一通信协议之上的 AI 与研发作业工具平台的深度融合,重构了华为 AI 软件开发新范式,开启了编码自动驾驶模式。 

  • 全景感知,服务透明化:开发者不再需要记忆任何复杂的 UI 路径或工具入口,“码道”拥有了俯瞰整个 CodeArts 的“上帝视角”。开发者只需下达自然语言指令,Agent 即可跨越边界,精准调用后台 API,让庞大的生产线如臂使指,实现了从“人找工具”到“工具随人”的颠覆性进化。

  • 原子化编排:“码道”具备了强大的逻辑拆解与资源编排能力。一个看似简单的业务意图,会被 Agent 自动拆解为跨服务的原子化操作链。它能智能的快速完成“读取需求-拉取代码-逻辑构建-安全扫描-自动化提交”的复杂闭环,将曾经耗时数小时的跨平台协作,转化为全智能化的调度与编排。

  • 重塑沉浸式研发作业:开发者全程无需离开 IDE 或对话窗口,让思维灵感不再被零散的操作所打断,代码产出过程如自动驾驶。 

2. 开发者的一天:见证“码道”带来的研发场景

为打造这种沉浸式的开发体验,华为设计了后端工程师在“码道”下的典型工作场景。通过智能化的流程协作,开发者得以从繁琐的工具操作中解脱,将核心精力从基础编码转向更高价值的架构设计与逻辑构建。

“码道”与 CodeArts 的结合并非简单的 1+1,而是一场研发生产力的革命,它标志着软件工程向“AI 原生”范式的演进。对企业而言,这意味着华为三十余年积累的研发流程、安全基线与工程实践,已从静态的文档资产转化为可交互、实时调用的智能化服务;对开发者而言,这种深度融合极大提升了单兵作战的交付效率与质量,实现了生产力的实质性飞跃。

结语

面对 AI Coding 固有的不确定性挑战,华为依托深厚的软件工程实践积淀,成功构建了一套解决企业级研发确定性问题的标准化体系。通过将海量可信资产与严苛的代码规范深度融入大模型底座,我们不仅为代码与架构的创新中注入了严谨的确定性,更借助全量合规自检与一致性核查机制,确保了研发全生命周期过程中的绝对可验证性这种以系统化工程手段化解 AI 随机性的闭环实践,彻底打破了代码生成的黑盒效应,真正让 AI Coding 从探索性的辅助助手,蜕变为企业实现高质高效交付与全面智能化演进的坚实利器。

上述是基于当前大模型与 Agent 能力的华为软件工程应用实践,随着 AI 能力与技术持续演进与快速迭代,这些实践也将会被重构,而 AI 软件工程要解决的确定性高质量这一本质问题仍将长期存在,我们也将持续探索 AI 与软件工程深度融合的路径与方法。