【导读】2024年,AI在软件工程中的应用迎来全新变革!从辅助开发到全生命周期管理,AI工具正全面融入软件开发的每个阶段。本文深入探讨了AI编程工具的演进路径,从个体到团队再到组织,展示了如何通过AI提升开发效率和软件质量,深入揭示AI究竟如何重塑软件开发的未来。
作者|黄峰达(Phodal)
责编|唐小引
出品丨新程序员编辑部
在大多数组织中,开发者用于编码的时间不到总工作时间的40%,因此编码提效对整个软件开发生命周期(SDLC)的效能影响很有限,应尝试将AI应用于软件全生命周期和整个团队,而不仅仅是个别成员、个别环节的产出。
从2024年的视角回顾,与2023年相比,AI在软件工程中的应用已经变得更加广泛和深入。这一趋势体现在AI编程工具的进化上,主要体现在以下几个方面:
全面探索:从辅助开发人员到全生命周期;
演进路径:个体、团队、组织;
形态变化:从本地AIIDE到领域特定的智能代码生成。
全面探索:从辅助开发人员到全生命周期
AI技术已经从简单的辅助开发人员发展到涵盖软件开发的整个生命周期。在这一过程中,AI工具的应用范围不断扩展,从需求分析到运维管理,每个阶段都得到了显著提升。
单工具Copilot
如图1所示,是我们在2023年初对AI辅助软件工程的流程分析,即在软件开发的不同阶段,AI可以提供哪些辅助功能:
图1AIDevOps流程
从2022年GitHubCopilot的发布,我们可以看到越来越多的AI工具开始涉足到软件开发的不同阶段。
需求阶段的Jira/AtlassianIntelligence
原型设计的VercelV0
编码阶段的GitHubCopilot
运维阶段的DynatraceDavisAI
……
就2023年的结论而言,基于人工智能的工具与基础大语言模型可以增强软件开发在设计、需求、测试、发布和运维等各个环节中的能力,提高质量和效率。但是,这些工具往往是破碎、割裂的,还可能并不适合我们现有的研发流程。
AI原生的研发工具
我们也可以看到市面上的主流研发工具,如JetBrains、GitHub(网站)等,都在逐渐加入AI功能(如图2所示),使得AI功能逐渐融入到我们的日常工作中。
图2AINative工具
在IntelliJIDEA中,我们可以看到AI功能的加入,如:
原生的向量化模型
基于语义化搜索(SearchEverywhere)
结合补全统计的机器学习补全插件:MachineLearningCodeCompletion
适用于单个代码行的FullLineCodeCompletion
等等
而除了GitHubCopilot工具本身,其也开放了其插件能力,使得我们可以定义自己的AI智能体,以适应我们自己的工作流程。
多阶段协同
在2024年,我们可以看到更多的变化,诸如:
在智能运维领域,AI可以结合判别性AI分析日志,生成式AI分析原因,再结合智能体根据运行错误,自动修复代码问题等;
在测试领域,AI除了辅助进行测试用例的生成,还可以生成对应的单元测试代码,甚至是自动化测试代码;
在UI设计领域,AI可以直接生成对应的代码,基于提示词来修改UI,所生成的是最终的UI代码,而不是设计稿;
……
如下是Dynatrace的DavisAI示例:
图3HypermodalAI
Dynatrace的HypermodalAI(超模态人工智能),是一种将多种类型的人工智能整合在一起,以增强可观察性和安全解决方案的高级方法。这个概念结合了三种不同的AI模式:
预测AI:使用历史数据和观察到的模式来预测未来的行为和需求。这对于在问题发生之前预见并防止潜在问题至关重要。
因果AI:专注于实时分析富有上下文的数据,以确定问题的根本原因并自动化缓解风险。这种类型的AI通过理解系统内的依赖关系和交互,提供精确的答案。
生成AI:利用高级算法来创建针对特定问题的建议和解决方案。通过提供上下文相关的建议和使用自然语言处理自动化任务,这种AI增强了用户互动。
通过融合这些AI功能,超模态AI为管理复杂的软件环境提供了更全面和有效的解决方案。Dynatrace的DavisAI平台通过整合预测AI、因果AI和生成AI,提供实时洞察、自动化和增强的数字服务安全性。
诸如此类的变化,使得AI所能辅助的范围更加广泛,从而使得AI在软件工程中的应用更加全面。
演进路径:个体、团队、组织
从企业采用AI的路径来看,我们会发现:越来越多的组织开始探索在组织层面使用AI辅助整体软件研发。因而,AI辅助研发组织的技术蓝图便也逐渐清晰起来:
图4AIforOrg
从形态上可以分为:带扩展能力的IDE插件、团队AI助手、结合AI的内部IM,以及作为基础能力的ChatBot。
个体辅助IDE插件示例:AutoDev
AI编程工具应该怎么设计才能提效?在当前来说,国内的环境下,由于我们的目标是实现可见的效率提升,即要通过可度量的指标。因而,可以看到一些明显的变化:
代码补全与生成是最容易度量的指标,并且市面上也以此类为主。
在不同环节,从时间角度来计算,如代码审查、代码测试等。
结合代码的问答,以减少工具切换、复制粘贴,提高效率。
如下是我们开源的IDE插件AutoDev的能力全景图:
图5AutoDev能力全景
由于过去的AI编程工具主要面向的是个体开发者,而随着探索进入一些深入区,以及实践的不断推进。所以,在结合组织能力的情况下,我们可以看到:
多样的AI工具正在融入自己的开发流程中
AI工具开始融入内部的一系列规范
不断结合内部知识库,提升内容生成的质量
开始构建自己的场景化能力
故而,我们将其总结为,从个体到团队,再到组织,并开始思考如何扩大AI的应用范围。
团队AI助手示例:Haiven
在设计团队AI助手时,我们需要考虑到团队的拓扑结构,以及团队的工作流程。如图6所示:
图6团队拓扑
在一个组织中,必然会有大量的不同类型的团队,每个团队受限于业务盈利模式等因素,其采用的技术、工作流程等都会有所不同。诸如于,核心的业务部门可以享受自己特有的开发流程,而其它非核心部门则会采用一些标准化的流程。
考虑到盈利水平高的部门,通常是大型团队,他们不仅可能有自己的AIIDE插件,还会有自己的AI团队。因此,我们也建议设计一个可以让不同团队共享知识的AI团队助手。
诸如Haiven™团队助手:
提高软件开发的生产力和质量。可复用提示词(Prompt)可以将最佳实践和即时知识融入团队的工作流程,以减少浪费,提升开发者满意度,并保持软件质量始终如一。
动态增强团队成员能力。Haiven增强了团队的自然人类创造力,使他们能够轻松研究用户需求,探索创新功能并交付卓越的用户体验。
易于采用。支持多云和身份提供商,以及可根据团队工作流程定制的可插拔知识包,Haiven极易被采用和集成。
通过基础的AI赋能,让不同团队在有能力的情况下,可以根据自己的需求,定制自己的AI助手。
组织级IM/ChatBot示例
回到整体组织层面,我们也会看到内部的IM工具也在融合AI功能,以提升协作体验。诸如:
寻找负责人/专家:通过AI助手,可以快速找到组织内的专家,以解决问题。
运维ChatBot,辅助分析部署失败问题,可以自动化运维任务,如自动化部署、自动化监控等。
CI/CD问题分析:通过AI助手,在尝试修复问题时,还可以告知问题的可能根因。
AI会议创建与管理。通过AI助手,可以自动创建会议,自动邀请参会人员,自动记录会议内容,自动提醒会议时间等。
如下是TeamsCopilot的示例:
图7TeamsCopilot
在另外一方面,我们也会有大量的其它ChatBot在不同的研发团队中使用,比如辅助平台的使用、文档查找等等。
形态变化:从本地AIIDE到领域特定的智能代码生成
与通用性的AI辅助相比,领域特定的AI辅助效果更好,因为它更了解领域的特点,更容易生成符合领域规范的代码。从智能代码生成的角度来看,由于过去包含大量的语料知识,生成的代码质量更高,更符合领域规范。
IDE即AI辅助研发中心
在前面,我们已经看到了AI辅助研发中心的概念,即在一个组织中,AI辅助研发中心可以为不同团队提供AI能力,以提升整体的研发效率。
还需要注意的是,AI在快速生成大量代码的同时,也会带来一些问题,如代码质量、安全性等。我们需要考虑如何在AI生成代码的同时,保证代码的质量。如图8所示:
图8从代码生成到代码质量
我们需要考虑构建类似于SonarLint的体系化质量检查工具,以保证AI生成的代码质量。
AI增强的低代码平台
诸如低代码应用程序平台Appian的分析,生成式AI与低代码平台结合,可以在多个方面实现增强的生产力和创新:
文本生成与聊天机器人:结合生成式AI和低代码平台,能够快速部署聊天机器人,处理基本的客服请求或生成待人审阅的电子邮件草稿,从而简化沟通流程。
从PDF构建界面:生成式AI能够解析PDF设计并将其转换为功能性界面或表单。结合低代码平台,确保设计到代码的准确转换,无需额外校对。
自助式分析:利用自然语言处理的AI驱动平台,团队能够快速从数据源生成报告和洞察。AI与低代码的结合,使得能够灵活调整流程和操作,提升业务效率和决策能力。
除了上述的经典场景之后,我们也可以看到多模态AI代码的生成,诸如Google的ScreenAI。
图9ScreenAI
它可以将图像和文本结合起来,生成对应的DSL,进而转换成不同的代码。
’tJSON.
Youaregiventhefollowingmobilescreenshot,
thescreenshotaswellasthecorrespondingshortanswerstothem?
Theanswershouldbeasshortaspossible,
asfollows:
questions:[
{{question:thequestion,
answer:theanswer
}},
]
{THESCREENSCHEMA}
当然了,为构建这样的语料,你还需要生成大量的页面与低代码数据。
从云IDE到智能云开发环境
在云☁️时代,大型组织构建了大量的云IDE和云基础设施,以尝试卖出更多的云服务以及解决最后一公里的部署问题。尽管,受限于云IDE能力、网络与计算能力,云IDE采用并不高,但是随着AI的发展,我们可以看到更多的智能云开发环境的出现。
虽然..但是..,我们非常看好诸如这一类针对于领域特定的开发工具。
图10
它可以:
高效UI生成:通过输入提示词快速创建前端组件和页面。
一键定制化组件:少量的提示词即可创建优雅复杂的组件,一键导出并应用于项目。
快速原型设计:提供即用生产代码,适用于新旧项目,项目较大时需整理代码结构。
图生成代码:通过图形化界面生成代码,适用于新手,不熟悉代码的人员。
它可以快速帮助我们构建出一个原型,然后再进行。再结合其它AI工具,如代码审查、代码测试等,可以大大提高我们的开发效率。
还有诸如GoogleProjectIDX这一类AI辅助型工作区。IDX支持众多框架、语言和服务,还与Google产品集成,可简化您的开发工作流程,让您可以快速、轻松、高效地跨平台构建和发布应用。
图11IDXDemo
尽管IDX还非常早期,但是我们可以看到,未来的云IDE将会更加智能化,更加适应我们的工作流程。
在国内,我们也可以看到BabelCloud、MarsCode等一系列云IDE工具,也在不断的发展中。
结语
AI在软件工程中的应用已经从辅助开发人员扩展到整个开发生命周期,逐步演进为团队和组织层面的协作工具,并在工具形态上实现了从本地AIIDE到领域特定智能代码生成的转变。这些变化不仅提高了开发效率和质量,还推动了整个软件工程领域的发展。
全面探索:AI从辅助开发人员扩展到覆盖软件开发的整个生命周期,从需求分析到运维管理,每个阶段都显著提升了效率和质量。
演进路径:AI工具从个体使用扩展到团队和组织层面,以及组织层面的AI集成到内部IM和ChatBot系统中,全面增强了协作和效率。
形态变化:从本地AIIDE发展到领域特定的智能代码生成工具。智能云开发环境如Google的ProjectIDX等工具,使得未来的开发流程更加智能化和高效。
这些变化不仅提高了开发效率和质量,还推动了整个软件工程领域的发展。
黄峰达(Phodal),Thoughtworks中国区开源负责人、技术专家,CSDN博客专家,是一个极客和创作者。著有《前端架构:从入门到微前端》《自己动手设计物联网》《全栈应用开发:精益实践》等书。主要专注于AI+工程效能,还有架构设计、IDE和编译器相关的领域。
版权声明:本站所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请举报,一经查实,本站将立刻删除。