生成式 AI 可以帮助改进软件开发的 7 种方法

Alan Zeichick | 高级撰稿人 | 2024 年 10 月 8 日

生成式 AI 可以帮助以莎士比亚的风格创作十四行诗,然后根据原始数据和分析结果转换思路并起草可行的商业计划。有了正确的输入和培训,生成式 AI 甚至可以帮助创建产品概念、朗朗上口的广告词、徽标以及包含定价建议的营销计划。因此,让生成式 AI 协助软件开发团队完成整个开发生命周期,甚至用 Java、C++、JavaScript、SQL 或组织喜欢的任何语言编写代码,都并不困难。

对生成式 AI 系统来说,编写代码与用英语、西班牙语或拉丁语写一首具有特定押韵格式和韵律的诗歌没有什么不同。使用 GenAI 协助软件开发过程是一个巨大的机会:PwC 分析师表示,通过使用 GenAI 代码生成工具,开发团队现在可以看到 20% 到 50% 的性能优势。我们来了解一下它是如何工作的。

什么是生成式 AI?

生成式人工智能 (GenAI) 是一项快速发展的技术,可通过从训练数据推断出来,帮助创建新内容。生成式 AI 模型通过创建并使用软件中编码的人工神经网络来工作。许多神经网络由数十亿甚至数万亿个特定参数或值组成,这些参数或值通过处理大量材料进行“训练”。幸运的是,更高效的模型一旦被训练有素,就会成为优秀的程序员,它们具有相当大的、多样化的功能、安全和高效的代码示例。

当它在训练过程中学习编写代码时,会产生一个大型语言模型或 LLM,生成式 AI 系统会尝试预测下一个命令应该是什么。然后测试该预测;如果它很好,神经参数会以一种方式进行调整。如果预测错误,则以另一种方式调整参数。有了足够的迭代,生成式 AI 系统可以很好地根据其训练数据生成结果。然后,当准确性足以达到目的时,生成式 AI 系统的任务是根据输入参数或提示词生成新代码。如果效果良好,那么您就可以开始了。如果效果不好,就让 AI 科学家弄清楚问题所在。

好消息是,您不需要创建自己的以代码为中心的 LLM。工具提供商已经为您完成了这项工作。

关键要点

  • 生成式 AI 非常有效地学习具有严格语法和规则的编程语言。
  • 培训生成式 AI 既昂贵又耗费资源,但一旦部署,系统就可以使用更少的资源。
  • 基于生成式 AI 的开发工具可以充当单个软件开发人员的助手,也可以充当完整的团队成员。

软件开发中的生成式 AI 详解

截止本文撰写时,我们不要期望能够通过描述一个复杂的程序,让生成式 AI 系统根据提示词输出一个完整的、可立即使用的应用。我们还没到那个程度。但是,生成式 AI 工具正被用于增强企业开发团队的工作,帮助他们提高代码质量和个人生产力。您可以将生成式 AI 视为服务于一个或多个角色的团队成员。

  • 团队可以使用通用生成式 AI 来帮助描述问题,并创建项目计划以供开发人员遵循。
  • 人类可以指示生成式 AI 生成测试用例,这些用例可用于评估人工编写的代码的质量。
  • 生成式 AI 系统可以帮助生成样板代码或代码片段,人类开发人员可以定制、完成这些代码或代码片段,也可以将其整合到其他代码模块中。
  • 生成式 AI 的一个常见用途是帮助保证质量,在将代码纳入软件配置管理系统之前检查代码是否存在错误或安全漏洞。系统可以根据外部标准(如公司编码标准或 OWASP Top 10 安全漏洞列表)检查代码库并突出显示问题。
  • 生成式 AI 系统可帮助设计复杂系统的架构,例如使用微服务的架构。
  • 生成式 AI 可以帮助查看现有代码,以提出性能改进或其他重构想法。它还可以查看传统的“意大利面”代码,并帮助描述其运作方式。
  • 当部署的代码无法正常工作时,正确的提示词可能有助于生成式 AI 查找缺陷的根本原因并提供补救措施。
  • 生成式 AI 可以帮助各个开发人员在犯错时发现问题,然后教他们更好的技术,从而提高他们的技能。

为什么生成式 AI 对软件开发很重要?

生成式 AI 对于软件开发非常重要,因为它可以帮助开发团队在软件开发生命周期的每个阶段提高工作效率。这是至关重要的,因为现代公司运行在软件上,这是毫无疑问的。许多软件(包括文字处理器、电子表格以及会计和人力资源系统)现已上架。但竞争优势来自于为后端操作、网站、数据库、移动应用等编写定制软件。

挑战:高质量的代码需要时间和专业知识来创建,无论是开发人员还是承包商。当需要新的应用程序来抓住机会或应对挑战时,队列中通常会出现积压的项目。招聘更多的开发人员是一个缓慢的过程,就像入职一样。时间就是金钱。借助 GenAI,您可以更快地将新想法投入生产,这有助于制造或节省现金,提高员工和客户满意度,并有助于组织履行其使命。

GenAI 在软件开发中的潜在优势

GenAI 可以成为企业软件开发团队的宝贵补充,与帮助开发人员的工具一样,您的组织可以定义、衡量和评估这些改进。所有使用现代技术(例如 GitHub 或源代码管理系统)的开发平台都会定期收集有关开发人员和团队绩效的指标,例如每天的代码行和代码质量。

从项目规划到架构设计再到分析代码和问答,将生成式 AI 融入整个生命周期的开发团队通常会发现他们的工作速度大大加快了。以下是生成式 AI 可以提供的一些帮助:

  • 提高生产率。代码和测试用例通常可以由人工智能生成,然后由人类比人类独自完成这个过程更快地进行审查。
  • 减少错误。生成式 AI 系统可以帮助生成缺陷较少的代码,例如使用错误的变量名称或忘记初始化指针。这在重复的日常任务中尤其如此,经验丰富的开发人员可能会感到无聊。
  • 提高代码质量。生成式 AI 可以帮助进行代码审查,识别逻辑错误、安全缺陷或代码可能无法反映业务用例要求的点。
  • 快速创建原型。生成式 AI 可以帮助创建模型代码,这些代码可能不可用于生产,但可以作为概念证明来向利益相关者展示。
  • 提高非开发人员开发的可访问性。生成式 AI 提供了让非开发人员通过在聊天窗口中以普通语言键入他们的要求来创建简单程序的潜力。

生成式 AI 如何帮助软件开发?

生成式 AI 可以帮助各个开发人员和团队提高工作效率,帮助他们更快地创建质量更高的软件,从而帮助企业软件开发。它特别方便的领域包括定义软件架构,构建产品计划和生成代码。

生成式 AI 还擅长帮助执行重复性任务,并生成对许多程序通用的所谓样板代码,然后人类开发人员可以在其他地方定制和完成或使用这些代码。生成式 AI 还可以帮助审查软件源代码中的缺陷和潜在问题,例如安全漏洞以及代码功能可能偏离用户要求或公司标准的地方。

生成式 AI 可以帮助改进软件开发的 7 种方法

在许多领域中,基于生成式 AI 的开发工具可以充当单个企业软件开发人员的助手或完整的团队成员。以下是当今技术可以提供帮助的一些更常见的地方,从软件设计到软件部署。

1.Bug 检测和调试。生成式 AI 系统可以有效地帮助识别和修复或建议修复代码中的错误。当然,整个行业都是围绕缺陷修复而构建的;开源和商业工具可以扫描源代码,以发现安全或功能缺陷,包括只有在系统负载过重的情况下才会发生的微妙错误,或者存在内存泄漏,多线程执行问题,尝试访问受保护的内存等等。

生成式 AI 可以通过多种方式为 bug 修复增加价值。首先,它可以使用提示来帮助分析代码是否会执行开发人员或利益相关者的预期,因为即使代码正确编译和运行,它也可能不会执行正确的操作或返回所需的结果。其次,生成式 AI 可以帮助总结传统工具中的缺陷报告,帮助测试团队和开发人员了解细微的错误,找到错误的代码模式,并提出解决方案。

2.代码生成。生成式 AI 可以根据提示或规范自动编写代码。如前所述,生成式 AI 不太可能很快生成复杂的业务应用。但是,它可以帮助创建开发人员可以完成的样板代码,以及可能实现复杂算法的代码片段,进行困难的过程调用或访问外部资源。

例如,许多开发人员知道如何使用 SQL 读取、写入和更新数据库信息。但是,编写 SQL 存储过程是一门艺术,可以处理复杂的数据库表并在非常大的数据集上高效运行。生成式 AI 工具可以使用提示来帮助程序员表达对数据库访问的要求,然后提供可复制并粘贴到应用中的建议 SQL 调用或过程。

3.代码审查。生成式 AI 可帮助审查代码质量、安全性和遵守优秀实践情况。代码审查是软件开发过程的一个重要组成部分,团队在组设置中查看复杂的代码(投射在屏幕或大型显示器上),以验证其正确功能并提出需要改进的领域。开发人员可能会感到代码审查压力很大,特别是当他们遇到更高级的软件工程师时,他们发现只有错误。代码审查也非常耗时,许多人只是想让他们快速完成,这可能会导致缺乏勤奋。

生成式 AI 可以帮助开发人员通过初步代码审查来发现明显的错误。这有助于初级开发人员学习并让面对面的审核会话更快。生成式 AI 还可以作为团队代码审查团队的参与成员,突出显示需要额外关注的领域,甚至提供改进方式。

4.文档。AI 可以自动生成或改进代码库的文档。即使是好的意图,开发人员在回顾几个月前编写的软件时也容易问自己:“当时我到底在想什么?”这就是为什么文档在许多层面如此重要,包括整个项目的架构以及特定模块或微服务的目的。在模块和服务中,文档可以解释为库、API 和算法做出的决策,特别是当开发人员有选择时。有一个原因——现在,它是什么?生成式 AI 可以帮助开发人员在编写代码的过程中解释这些决策,然后将这些解释扩展到易于理解的文档中。

此外,当生成式 AI 用于帮助生成代码本身时(参见上文第二点),它可以编写完整的文档来解释代码片段或微服务的作用以及如何正确使用它。

5.学习和培训。GenAI 可以帮助提供即时示例和说明,以提高开发人员技能。软件开发人员(甚至可能是摇滚明星程序员)都在不断学习。总有一些新技术,如人工智能和微服务,即将上线,以及新的工具,新的语言功能,新的设计模式,新的安全漏洞,新的公司标准和最佳实践,甚至新的合规要求。

虽然有许多课程和课程,以及内部培训和指导,但持续的帮助是有价值的。生成式 AI 可以帮助检测开发人员何时遇到困难,例如当尝试使用已弃用的功能或过时的 API 时,并提供即时的个性化培训。它还可以通过提示,帮助在开发人员不知道或记得如何执行新的或很少使用的任务时提供即时指导。这就像一个帮助屏幕,但针对这种情况进行了定制。

6.程序优化。优化和重构现有代码以提高性能是生成式 AI 可以提供帮助的领域。重构是软件开发生命周期的一个重要组成部分:它是您获取代码部分的地方,并且无需更改其功能,即可使其运行得更好。这可能意味着提高其速度和可扩展性,降低其内存消耗,更新算法,利用新的微处理器快捷方式,或使用新的语言指令。开发人员使用运行时指标来发现代码区域较慢、资源消耗过多或导致端到端延迟并确定重构的目标。

程序优化可能是生成生成式 AI 代码的理想场所,开发人员只需将有问题的代码输入系统,简单问一句:"你能做出运行速度更快的版本吗?”我们的说法过于简单,但其实通过查看代码的作用和工作原理,生成式 AI 凭借其预测能力往往能找到更好的方法。更重要的是,由于旧的代码和重构的代码可以被比较和基准化,因此很容易确定重构过程的好处,并验证底层功能并没有改变。

7.测试。生成式 AI 可帮助创建测试用例、自动执行测试流程和模拟边缘用例。不同的方法论对软件测试过程有自己的独特看法。例如,测试驱动开发 (TDD) 坚持认为,在编写一行代码之前,您需要创建测试用例,以确保您编写的任何代码都能正常工作。在其他方法中,开发团队可能会在冲刺结束时进行测试;在其他方法中,专门的测试团队会进行测试。利益相关者在测试中的作用至关重要,并且根据方法的不同而有所不同:有时,利益相关者会持续参与,而在其他情况下,他们只审查待发布的候选版本。

生成式 AI 可在帮助测试和测试管理方面发挥多种作用。我们提到了 bug 检测,许多开发人员认为这是一个乏味的过程,而生成式 AI 还可以帮助编写脚本以用作测试自动化工具。此类生成式 AI 增强工具还可以帮助测试边缘情况,即不太可能发生但仍必须由代码模块、存储过程或微服务正确处理的情况。此外,生成式 AI 可以帮助检查测试用例,包括人类编写的测试用例,以确定它们是否是好的测试,以及它们是否涵盖所有可能的情况,包括错误状况和在运行时尝试破解代码。

软件开发中生成式 AI 的未来

“我们很难做出预测,特别是针对未来的预测。”棒球巨头 Yogi Berra 说道。生成式 AI 是一个新的领域:该技术的第一个例子直到 2020 年代初才出现,例如专注于生成文本的 ChatGPT 和用于创建图像的 DALL-E 等产品。许多消费者和企业高管仅仅在两年前,也就是 2022 年左右才开始转向生成式 AI。

无论您如何看待生成式 AI,我们只处于技术的早期阶段,毫无疑问,我们会在软件开发等领域找到新的商业用例。

但让我们先来预测一下:未来几年会发展成什么样子呢?

首先,要让生成式 AI 尽其所能,在为开发团队生成代码、质量保证、文档和测试用例创建提供支持方面做得更好。生成式 AI 可能更具会话性,能够更好地与开发人员和非开发人员进行交互,从而逐步完成需求定义过程,然后将这些需求转化为项目计划、文档、测试用例和代码。

如果我们真的能够预测未来,或许有些软件根本不需要编写。业务用户只需告诉生成式 AI 系统他们想要完成什么,软件就会创建执行该精确任务的临时应用。无论生成式 AI 在软件开发中的未来如何,它都可能为拥抱该技术的企业带来巨大的价值。

利用 Oracle 的生成式 AI 开发力量

Oracle 生成式 AI 现已推出,内置在 Oracle Database 23ai 中,并嵌入业务应用(例如 Fusion 和 NetSuite)中。

一个令人兴奋的探索领域是如何使用生成式 AI 和 Oracle APEX 进行低代码应用开发,以及使用新功能 APEX AI Assistant 来帮助开发人员完成复杂任务。更广泛地说,您可以注册 Oracle Cloud Infrastructure (OCI) 账户,并获得免费储值来试用 Oracle AI 服务,包括生成式 AI。开始免费试用

对于这种新技术,生成式 AI 在软件开发中的应用是无穷无尽的。您的开发人员可能会发现生成式 AI 是一个有价值的助手,也许是团队的重要成员。

主要的 AI 使用场景包括使用聊天机器人革新客户服务和利用 AI 算法构建全新的医疗卫生服务体验。其中的联系是什么?软件开发。

软件开发中的生成式 AI 的常见问题解答

如何在编程中使用生成式 AI?

生成式 AI 可以在软件开发过程的许多环节中使用。对于编程,生成式 AI 必须针对您的项目所使用的特定编程语言进行训练。针对您想要执行的操作,向系统提供非常具体的命令(称为提示词),它应该能够生成可供编译和运行或添加到源代码管理系统或在线存储库(例如 Github)中的完成的源代码。

我可以使用 AI 构建软件吗?

您可以使用 GenAI 以多种方式构建软件。它可以帮助生成代码,尽管在技术开发的这个阶段,该代码只执行相对简单的函数。至少现在,生成式 AI 的真正价值是帮助您的开发团队完成规划项目、设计架构、生成测试用例、执行代码审查和编写文档等任务。

AI 将如何成为软件开发中的挑战?

GenAI 仍然是新的,特别是在开发团队中使用。可以说,主要的挑战是让持怀疑态度的开发人员接受这项技术,他们想要保持现状,拒绝改变方法、工具链和流程。也可能有人将生成式 AI 视为影响职业生涯的潜在威胁。

除此之外,每个组织都需要对生成式 AI 软件建立信心。代码是否可靠、安全且高性能?测试用例是否准确,它们是否提供完整的代码覆盖?文档是否满足要求?生成式 AI 辅助软件开发的初始阶段将主要以实验为主。如果技术正确应用,结果应大大提高开发人员的工作效率,更快、更低成本地将更好的软件投入生产,以帮助组织履行其使命。

最后,在人工智能生成代码的所有权和可保护性方面,法律仍在发展。您能否在 AI 用于生成某些代码的软件中注册版权?如果使用商业生成式 AI 系统,服务条款是否要求您将任何输出授权给模型的所有者?在开始在软件开发中使用生成式 AI 之前,应先调查这些问题。

注:为免疑义,本网页所用以下术语专指以下含义:

  1. 除Oracle隐私政策外,本网站中提及的“Oracle”专指Oracle境外公司而非甲骨文中国 。
  2. 相关Cloud或云术语均指代Oracle境外公司提供的云技术或其解决方案。