01Introduction 02Gen AI 将如何影响软件编程 ? 03为什么测量很重要 ? 04衡量 Gen AI 影响的挑战 05建立测量协议 结果 : 来自实际尺寸实验的测量的关键 CONTENTS11Conclusion 12关于作者 随着生成式人工智能(Gen AI)继续影响我们日常生活的几乎每一个方面,它对软件设计、编码和单元测试的影响既不可避免又令人兴奋。但这些预期的影响是什么?如何衡量它们?如何定义一个经过验证的测量协议?而实际规模的实验又揭示了什么? 生成型AI可以在软件工程师使用设计和编码将用户故事转化为软件时提供协助。它可以被用于创建设计输出,如用户界面原型、实体模型和接口。这可以显著提高生产效率,而不牺牲质量。但是,只有在由专家实施测量过程的情况下,才能感受到全部的好处。 How willGen AI影响软件编程? 这在实践中意味着什么?例如,软件工程师可以使用简洁的语言来描述软件功能的预期功能,然后审查、更新和验证生成的输出。其他示例包括代码自动补全、生成单元测试代码、(重新)编写文档以及从一种编程语言迁移到另一种语言。当然,生成式AI已经得到了开发者的高度评价,因为它在编码过程中支持他们。它可以直接建议干净的代码,或者评估现有代码以改进软件质量,如果它发现了问题的话。 首先,根据企业和组织的观点,通用人工智能(Gen AI)将对软件编程产生什么影响?我们的最新Capgemini研究机构报告显示:1报告表明,61%的组织认为促进更多创新性工作,如开发新的软件功能和服务,是生成人工智能(Gen AI)的主要益处。紧随其后的是提高软件质量(49%)和提升生产效率(40%)。这些生产效率的提升被用于开展创新性工作,如开发新的软件功能(50%)和技能提升(47%)。很少有组织计划通过此来减少员工数量(仅占4%)。2 软件质量可以追溯到早期测试阶段,在这个阶段,单元测试案例和/或相关测试数据集未能涵盖所有可能的用户输入和场景。生成式AI可以帮助开发人员编写更完整的单元测试案例,其中用户故事能够提供高度相关的工程背景。它能够生成大量与真实世界数据高度相似的合成信息,以确保高覆盖率的单元测试。 尽管通用人工智能(Gen AI)在软件工程领域的应用仍处于早期阶段,仍有90%的组织尚未规模化应用,但27%的组织正在开展大规模的Gen AI实验性应用,而11%的组织已经开始在其软件功能中利用Gen AI。预计到2026年,Gen AI将在超过25%的软件设计、开发和测试工作中发挥关键作用,增强软件工作队伍的经验、工具和平台,并提升治理水平。4 生成型AI准备通过将重点从编码转向提示工程和代码校验来重新定义传统的编程实践。这正如OpenAI计算机科学家Andrej Karpathy近期所说:“目前最热门的编程语言是英语。”3.” 为什么测量很重要 ? 在现代技术快速演变的背景下,做出明智的决策对于成功至关重要。然而,在数据泛滥的世界中,提取有意义的见解是一项艰巨的任务。因此,建立一个测量框架是必不可少的。它如同导航工具,在浩如烟海的信息中引导团队从原始数据过渡到可执行的决策。 衡量生成式人工智能(Gen AI)的表现确保其达到预期目标,无论是提高效率、提升准确性还是降低费用。这还有助于识别改进领域,指导进一步的发展和优化。并且它提供了问责制,向利益相关者展示其价值和投资回报率(ROI)。 同时,测量使我们能够量化属性,从而更有效地进行比较、分析和理解。它还允许跟踪进度和评估性能,并提供数据驱动的见解,以指导决策过程。 测量方面的挑战Gen AI影响 “量化的指标才能有效管理”这句老话在生成式AI的新范式中依然适用。实施固然重要,但测量至关重要。然而,衡量生产力由于软件开发生命周期(SDLC)中开发工作的多方面性质、其发生的动态和不断演变的环境,以及其固有的主观性和无形性,本身就具有复杂性。有效的测量需要一种全面的方法,考虑定性和定量因素,包括具体情境下的考量。 测量软件质量是一项挑战,因为它涵盖了多个维度,包括功能、性能、可靠性、易用性、可维护性、安全性和可扩展性。评估质量需要考虑这些多样的方面,每一方面都有各自的一套度量标准和标准。另一个挑战在于不同的利益相关方有不同的优先级,无论是客户、企业、架构师、开发人员、测试人员还是运维人员。 来自将每天使用Gen AI的软件工程师的反馈也需要被考虑。这是一个重要的话题,因为Gen AI对开发环境和他们的工作方式产生了影响。 近九成(86%)年收入超过50亿美元的大型企业已经采用了(试点/规模化应用)通用人工智能,而年收入在1亿至5亿美元的小型企业中仅有23%实现了这一 Adoption。5 建立测量协议 生产力指标,如部署时间或解决问题所需时间,未能全面捕捉生成式AI(Gen AI)带来的好处。特别是在非传统的产品ivity衡量标准,如员工满意度方面,这些可以通过DORA和SPACE等度量框架更好地捕捉。7然而,DORA和SPACE尚未获得广泛关注,因为实施它们既耗时又昂贵。这一发现表明,包括速度、质量、安全性和开发者体验的关键绩效指标(KPI)在内的一套指标可能证明是有用的。8 现在让我们专注于如何定义和实施一个实用的测量协议,以清晰地了解通用人工智能(Gen AI)在编码及作为定制应用程序开发一部分的单元测试中的影响。 几乎一半的受访组织(48%)尚未定义衡量软件工程中生成式AI使用成效的指标。我们还发现,目前似乎没有统一的标准来衡量生产力。6 我们的调查揭示了一个关于常用指标的重要事实。虽然它们适合常规 大多数组织在使用通用人工智能(Gen AI)时,根据如SPACE和DevOps研究与评估(DORA)等较少流行但更为全面的生产力指标框架进行衡量时,显示出改进。 测量协议提供了 WELL-DEFINED 过程,从而生成可理解、可比较和可靠的結果。 组件 - 测量协议由什么组成 ? • 团队组织:通过采用并行团队、影子团队或多元金字塔团队等不同模式,组织团队以实现显著且可执行的结果。 • 前提条件与成功因素:建立确保稳定和一致测量所需的条件和因素,包括团队稳定性、持续时间、积压任务、技术、工具、法律以及网络安全。 • 测量方法:确立测量的时间线和流程,包括准备阶段、基线确定以及执行过程。 • 正常化过程:定义在实验执行过程中如何管理不稳定性与变异性,例如团队规模、容量或复杂性的变化,并据此调整相应的指标。 • 测量指标:识别用于衡量生成式AI对软件工程影响的指标,如编码速度、代码质量、代码安全性和开发者体验。 • 定量反馈:建立一种机制以收集有关开发者整体体验的信息,形式可以是调查问卷或逐字报告。需要注意的是,负面体验往往能提供最佳的学习机会。 • 测量工具:确定用于收集和分析指标的工具,如SonarQube、CAST、Jira或开发者调查。 • 测量报告:选择适用于呈现和传达测量结果的模板和格式,涵盖详细和高层管理需求。 指标 - 在实际尺寸实验期间将评估哪些数据 ? 除了建立和启用必要的组件,还必须定义将在实际规模试验中评估的指标。这些是需要测量和分析的基本数据点。 • 单元测试覆盖率:评估软件质量和可靠性的关键指标。为了简化起见,我们专注于指令覆盖(C0),因为大多数工具都是以此来测量的。 • 速度 : 这应该在不同的水平上测量 , 因为它是最重要的指标。 • 代码效率:衡量软件中潜在的性能和可扩展性瓶颈。为了保持简单,我们专注于静态代码分析而不进行运行时分析(例如,使用探查器)。这不是行业标准,但这是一个我们的客户认为极其宝贵的指标。 编码速度:这是衡量团队生产力(编码和单元测试)的关键指标,通常用实现的故事点数来衡量。 • 代码安全性 : 确定应用程序的漏洞问题风险和违规概率。 开发者能力/资深程度的编码速度:根据开发者的不同能力(良好、一般、较低),计算在有和无生成式AI辅助的情况下完成“X”故事点所花费的时间。 • 代码气味 : 指可能需要注意或重构的不良或有问题的代码的指标。 编码速度按复杂性计算:根据故事复杂性(简单、中等和复杂)所需的故事点数,计算有无Gen AI辅助下的差异。 • 代码重复:强调代码库不同部分中存在的相同或相似代码片段。借助生成式AI,更容易创建代码重复。 团队组织 - 什么最有效 ? • 单一团队:同一团队在有和无Gen AI辅助的情况下,按顺序执行相同用户故事大小/复杂性的待办事项列表。 执行测量协议需要参与适当的用户故事积压。 但在测量过程中应该涉及多少个团队?在我们看来,尽可能多地涉及多个团队可以最大限度地减少人为因素的影响。 • 多个团队 : 至少两个团队在有和没有 Gen AI 帮助的情况下并行执行相同的积压工作。 团队设置 - 最佳组合是什么 ? • 团队成员构成均衡:资深员工与初级员工比例适中。资深员工在日常工作的同时进行指导、mentorship和审核工作。 团队的资历或能力对于标准化工作非常重要。因此,了解负责定义待处理任务的团队组合类型是必不可少的。 • 团队成员的高级金字塔:拥有高度技能和能力的团队。无需进行辅导、mentorship或详细的代码审查。在理想情况下,这被视为最高标准。 • 部门成员的初级金字塔结构:初级成员占多数。这要求重点关注辅导、mentorship以及审查,因为资深团队成员数量较少。 单一团队 顺序执行具有和不具有 Al 的相同大小复杂度的需求。由试点核心团队支持的现有项目团队 多团队方法 在有和没有 Al 增强的情况下并行执行相同的需求 流程 - 关键考虑因素是什么 ? 作为编码速度、代码质量、代码安全以及开发人员体验提升,在不使用生成式AI辅助的情况下。• 使用选定的生成式AI工具,并遵循最佳实践和指导原则,执行冲刺和发布。• 在实际规模试验执行期间及之后收集指标和反馈,使用测量工具和调查问卷。• 检查并标准化指标和反馈,使用标准化过程和公式。• 整合并报告测量结果,使用模板和格式,并突出关键见解和发现。 一旦所有组件都被定义,需要有一个过程来确保高质量的结果,并减少由于估算不准确和人为因素导致的副作用。 • 创建团队组织和实验范围,包括用例、待办事项列表和技术栈。• 定义时间线和衡量方法,包括持续时间、阶段和流程。• 验证先决条件和成功因素,例如团队稳定性、法律清关、网络安全审批和工具设置。• 进行基线审计以了解当前的软件工程指标情况,如 时间线 准备工作 • 定义团队组织和试点范围• 确定时间表• 验证前置条件(工具采购、法律和安全审批)• 准备团队执行(工具上线、演示、工具集) 结果 : 来自实际尺寸实验的测量的关键见解 在Capgemini,我们进行了多项真实规模的实验,既包括内部实验也与客户共同进行了外部实验。结果积极且令人鼓舞,总结如下。 • 利益遍及所有层级:数据显示,金字塔模型中的初级团队受益最多,但高级团队也获得了明显的收益。 代码质量是关键 : 通过静态代码分析和手动代码审查 , 我们认为代码质量没有下降。 • 开发者喜爱它:来自团队成员的定性反馈一直保持积极。他们喜欢新的工具和不同的工作方式。如报告中所述,生成式AI工具可以帮助初级专业人士更快地学习并迅速上手,而这些工具使高级专业人士能够专注于培养初级人员,确保他们的学习和记忆,解决复杂问题,并与业务部门协作。 • 文档资料可用:随着“枯燥”的文档工作任务被与之相当规模的实验接管,相关指标得到了改善。 • 单元测试到位:单元测试的生成提高了整体测试代码覆盖率,这是一个重要的功能正确性指标。 • 速度提升:尽管每次实验都有其特定的背景和细节,但总体来看,在软件开发生命周期中,编码和单元测试方面实现了10-30%的改进。 Conclusion 基线指标 , 我们可以在我们的工作流程中深入了解 Gen AI 的性能和价值。 Measur