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