首页 AI开发编程 程序员花费的编程时间不到总编程时间的40% AI如何辅助软件工程? |新程序员

程序员花费的编程时间不到总编程时间的40% AI如何辅助软件工程? |新程序员

标题:程序员编程总时间不到 40%,AI 究竟怎么辅助软件工程?| 新程序员

【导读】2024年,AI在软件工程中的应用将迎来新的变化!从辅助开发到全生命周期管理,人工智能工具正在全面融入软件开发的各个阶段。本文深入探讨了AI编程工具从个人到团队再到组织的演进路径,展示了如何通过AI提升开发效率和软件质量,深度揭示AI将如何重塑软件开发的未来。

作者|福达尔

主编|唐晓音出品丨新程序员编辑部在大多数组织中,开发人员花费在编码上的时间不到总工作时间的40%,因此编码效率对整个软件开发生命周期(SDLC)的性能影响非常有限,我们应尝试将AI应用到整个软件生命周期和整个团队,而不仅仅是个别成员和个别环节的输出。

从2024年的角度回顾,人工智能在软件工程中的应用比2023年更加广泛和深入。这一趋势体现在人工智能编程工具的演进上,主要表现在以下几个方面:

全面探索:从助理开发到全生命周期;

进化路径:个人、团队、组织;

形态变化:从本地AI IDE到特定领域的智能代码生成。

从全球范围来看,不同国家和地区人们的关注点有所不同。例如,在中国,人们更关心如何提高软件工程师的工作效率,而在其他地区,人们更关心如何提高软件工程。质量,以及如何协助遗留系统的迁移。除了所处的数字化阶段和水平不同之外,技术人才的数量、质量和分布也存在差异。

探索一切:从助理开发人员到完整生命周期

人工智能技术已经从简单地帮助开发人员发展到涵盖软件开发的整个生命周期。在此过程中,人工智能工具的应用范围不断扩大,从需求分析到运维管理的各个阶段都得到了显着的提升。

单工具副驾驶

如图1所示,是我们2023年初AI辅助软件工程的流程分析,即AI在软件开发的不同阶段可以提供哪些辅助功能:

图1 AI DevOps流程

从2022年GitHub Copilot的发布开始,我们可以看到越来越多的AI工具开始介入软件开发的不同阶段。

需求阶段的Jira/Atlassian Intelligence

Vercel V0 原型制作

编码阶段的GitHub Copilot

Dynatrace Davis AI 处于运营阶段

……

到2023年结束时,基于人工智能的工具和基础大语言模型可以增强软件开发在设计、需求、测试、发布、运维等各个方面的能力,提高质量和效率。然而这些工具往往是支离破碎、支离破碎的,可能不适合我们现有的研发流程。

AI原生研发工具

我们还可以看到,市场上的主流研发工具,如JetBrains、GitHub(网站)等,都在逐渐加入AI功能(如图2所示),使得AI功能逐渐融入到我们的日常工作中。

图2 AI Native工具

在IntelliJ IDEA中,我们可以看到AI功能的加入,比如:

原生矢量化模型

基于语义搜索(Search Everywhere)

机器学习补全插件结合补全统计:Machine Learning Code Completion

单行代码的全行代码完成

ETC。

除了GitHub Copilot 工具本身之外,它还开放了其插件功能,允许我们定义自己的AI 代理以适应我们自己的工作流程。

多阶段协作

2024 年,我们可能会看到更多变化,例如:

在智能运维领域,AI可以结合判别式AI分析日志,生成式AI分析原因,再结合Agent根据运行错误自动修复代码问题;

在测试领域,AI不仅可以辅助生成测试用例,还可以生成相应的单元测试代码甚至自动化测试代码;

在UI设计领域,AI可以根据提示词直接生成相应的代码并修改UI。生成的是最终的UI代码,而不是设计稿;

……

以下是Dynatrace 的Davis AI 示例:

图3 超模态人工智能

Dynatrace 的超模态人工智能是一种先进的方法,它将多种类型的人工智能结合在一起,以增强可观察性和安全解决方案。这个概念结合了三种不同的人工智能模式:

预测人工智能:使用历史数据和观察到的模式来预测未来的行为和需求。这对于在潜在问题发生之前预测和预防它们至关重要。

因果人工智能:专注于实时分析上下文丰富的数据,以识别问题的根本原因并自动缓解风险。此类人工智能通过了解系统内的依赖关系和交互来提供精确的答案。

生成式人工智能:利用先进的算法为特定问题创建建议和解决方案。该人工智能通过提供上下文建议和使用自然语言处理自动执行任务来增强用户交互。

通过融合这些人工智能功能,超模态人工智能为管理复杂的软件环境提供了更全面、更有效的解决方案。 Dynatrace 的Davis AI 平台通过集成预测人工智能、因果人工智能和生成人工智能,为数字服务提供实时洞察、自动化和增强的安全性。

诸如此类的变化使得人工智能辅助的范围更加广泛,从而使得人工智能在软件工程中的应用更加全面。

进化路径:个人、团队、组织

从企业对AI的采用来看,我们会发现越来越多的组织开始探索在组织层面利用AI来辅助整体软件开发。由此,AI辅助研发机构的技术蓝图逐渐清晰:

图4 组织AI

从形式上可以分为:具有扩展能力的IDE插件、团队AI助手、内部IM结合AI、以及作为基础能力的ChatBot。

单独的辅助IDE插件示例:AutoDev

AI编程工具应该如何设计才能提高效率?在当前国内环境下,我们的目标是通过可衡量的指标来实现看得见的效率提升。结果,可以看到一些重大变化:

代码完成和生成是最容易衡量的指标,也是市场上主要的指标。

在不同的环节,是从时间角度来计算的,比如代码审查、代码测试等。

结合代码问答,减少工具切换、复制粘贴,提高效率。

下面是我们开源IDE插件AutoDev的能力全景图:

图5 AutoDev能力全景

因为过去的AI编程工具主要针对个人开发者,随着探索进入一些深入的领域,实践不断推进。所以,结合组织能力,我们可以看到:

各种AI工具正在融入到自己的开发流程中

AI工具开始融入一系列内部规范

不断结合内部知识库,提高内容生成质量

开始构建自己的场景化能力

因此,我们总结为,从个人到团队,再到组织,开始思考如何拓展AI的应用范围。

团队AI助手示例:Haiven

在设计团队AI助手时,我们需要考虑团队的拓扑结构,以及团队的工作流程。如图6所示:

图6 团队拓扑

在一个组织中,必然存在大量不同类型的团队。每个团队受到业务盈利模式等因素的限制,采用的技术和工作流程都会有所不同。例如,核心业务部门可以享受自己独特的开发流程,而其他非核心部门会采用一些标准化流程。

考虑到高利润的部门,通常是大型团队,他们可能不仅有自己的AI IDE插件,而且还有自己的AI团队。因此,我们还建议设计一个AI团队助手,让不同的团队能够共享知识。

像Haiven 团队助理一样:

Haiven Team Assistant 是由Thoughtworks 开发的一款人工智能驱动工具,旨在增强软件开发流程。它与现有的人工智能编码助手集成,并提供可插拔的知识包,帮助团队完成开发任务、加速反馈循环并推动创新。支持多个云和身份提供商,以便轻松采用和集成到现有工作流程中。它支持研究、用户旅程分析、架构开发和团队知识编码,以提高生产力、质量和团队能力,同时保持对AI 环境的控制。

提高软件开发的生产力和质量。可重复使用的提示(Prompts)可以将最佳实践和即时知识集成到团队的工作流程中,以减少浪费、提高开发人员满意度并保持一致的软件质量。

动态提升团队成员能力。 Haiven 增强了团队的人类自然创造力,使他们能够轻松研究用户需求、探索创新功能并提供卓越的用户体验。

易于采用。凭借对多个云和身份提供商的支持,以及可根据团队工作流程进行定制的可插入知识包,Haiven 非常易于采用和集成。

了解当今人工智能的潜力。人工智能市场是动态且快速发展的,许多工具并不是专门为软件开发任务而设计的,也不是专注于有限的功能范围。 Haiven 提供了一个简单的沙箱来试验当今的新功能。

通过基础的AI赋能,不同的团队如果有能力,都可以根据自己的需求定制属于自己的AI助手。

组织IM/ChatBot 示例

回到组织整体层面,我们还会看到内部IM工具集成AI能力,提升协作体验。例如:

寻找负责人/专家:通过AI助手,可以快速找到组织内的专家来解决问题。

运维ChatBot协助分析部署失败问题,可以自动化运维任务,如自动化部署、自动化监控等。

CI/CD问题分析:通过AI助手,在尝试修复问题的同时也可以获知问题可能的根本原因。

人工智能会议创建和管理。通过AI助手,您可以自动创建会议、自动邀请与会者、自动记录会议内容、自动提醒会议时间等。

以下是Teams Copilot 的示例:

图7 Teams 副驾驶

另一方面,我们还会有大量其他不同研发团队使用的ChatBot,比如辅助平台的使用、文档搜索等。

形式的变化:从本地AI IDE到特定领域的智能代码生成

与一般的人工智能辅助相比,特定领域的人工智能辅助更有效,因为它更好地理解领域的特征,并且可以更容易地生成符合领域规范的代码。从智能代码生成的角度来看,由于过去包含大量的语料知识,因此生成的代码质量更高,更符合领域规范。

IDE是AI辅助研发中心

此前,我们看到过AI辅助研发中心的概念,即在一个组织中,AI辅助研发中心可以为不同团队提供AI能力,以提高整体研发效率。

还需要注意的是,人工智能在快速生成大量代码的同时,也带来了一些问题,比如代码质量、安全性等,我们需要考虑在人工智能生成代码的同时如何保证代码的质量。如图8所示:

图8 从代码生成到代码质量

我们需要考虑构建一个类似于SonarLint的系统质量检查工具,以保证AI生成代码的质量。

AI增强的低代码平台

低代码应用程序平台Appian 等分析、生成式AI 与低代码平台相结合,可以在多个领域提高生产力和创新:

文本生成和聊天机器人:将生成式人工智能和低代码平台相结合,通过快速部署聊天机器人来处理基本的客户服务请求或生成电子邮件草稿以供审核,从而简化通信。

从PDF 构建界面:生成式AI 可以解析PDF 设计并将其转换为功能界面或形式。与低代码平台相结合,确保从设计到代码的准确转换,无需额外校对。

自动工作流程生成:由生成式人工智能增强的低代码平台,可快速生成复杂的工作流程,包括可视化图表和可执行代码。这对于计费管理等任务至关重要,可以根据用户反馈进行快速迭代改进。

自助分析:利用人工智能驱动的自然语言处理平台,团队可以快速从数据源生成报告和见解。人工智能与低代码的结合,可以灵活调整流程和运营,提高业务效率和决策能力。

除了上述经典场景外,我们还可以看到多模态AI代码的生成,比如Google的ScreenAI。

图9 ScreenAI

它可以将图像和文本结合起来生成相应的DSL,然后可以将其转换为不同的代码。

你只会说JSON。请勿编写非JSON 的文本。您将获得以下移动屏幕截图,并以文字进行描述。您能否针对屏幕截图的内容生成5 个问题以及相应的简短答案?答案应尽可能简短,仅包含必要的信息。你的答案应该结构如下:questions: [{{question: the Question,answer: the answer}},]{THE SCREEN SCHEMA}当然,为了构建这样的语料库,你需要大量的页面和低代码数据也需要生成。

从云IDE到智能云开发环境

在云时代,大型组织构建了大量的云IDE和云基础设施,试图销售更多的云服务并解决最后一英里的部署问题。虽然由于云IDE能力、网络和计算能力的限制,云IDE的采用率不高,但随着AI的发展,我们可以看到更加智能的云开发环境的出现。

虽然……但是……,我们非常看好v0.dev这样的特定领域的开发工具。

图10 v0.dev

它可以:

高效UI生成:通过输入提示词快速创建前端组件和页面。

一键定制组件:只需几句提示文字即可创建优雅复杂的组件,并一键导出并应用到您的项目中。

快速原型制作:提供即用型生产代码,适用于新旧项目。当项目较大时,需要整理代码结构。

图形化代码生成:通过图形界面生成代码,适合新手和不熟悉代码的人。

它可以在继续之前快速帮助我们构建原型。结合其他AI工具,比如代码审查、代码测试等,可以大大提高我们的开发效率。

还有人工智能辅助的工作空间,例如Google Project IDX。 IDX 支持多种框架、语言和服务,并与Google 产品集成以简化您的开发工作流程,以便您可以快速、轻松、高效地跨平台构建和发布应用程序。

图11 IDX 演示

虽然IDX还很早期,但我们可以看到未来的云IDE将更加智能,更加适应我们的工作流程。

在国内,我们还可以看到Babel Cloud、MarsCode等一系列云IDE工具,它们也在不断发展。

结论

人工智能在软件工程中的应用已经从辅助开发人员扩展到整个开发生命周期,逐渐演变为团队和组织层面的协作工具,实现了从本地AI IDE到特定领域智能代码生成的工具形态转变。这些变化不仅提高了开发效率和质量,也促进了整个软件工程领域的发展。

全面探索:人工智能从辅助开发人员扩展到覆盖软件开发的整个生命周期,从需求分析到运维管理,显着提升每个阶段的效率和质量。

演进路径:AI工具从个人使用扩展到团队和组织层面,将组织层面的AI融入内部IM和ChatBot系统,全面提升协作和效率。

形态变化:从原生AI IDE 到特定领域的智能代码生成工具。智能云开发环境如Google的Project IDX等工具让未来的开发流程更加智能、高效。

这些变化不仅提高了开发效率和质量,也促进了整个软件工程领域的发展。

关于作者:

黄丰达(Phodal),Thoughtworks中国开源总监、技术专家、CSDN博客专家,是一位极客和创造者。着有《前端架构:从入门到微前端》 《自己动手设计物联网》 《全栈应用开发:精益实践》等书籍。主要关注AI+工程性能,以及架构设计、IDE和编译器相关领域。

热门文章