乐于分享
好东西不私藏

大模型时代的软件开发何去何从︱大模型研发管理

大模型时代的软件开发何去何从︱大模型研发管理

会议推荐

2026第二届中国AI项目管理大会

2026第十五届中国PMO大会

2026首届中国汽车企业项目管理大会

2026第五届中国项目经理大会

2026第三届中国医药企业项目管理大会

本文目录

#为什么说大模型可能是软件开发的死胡同?

#大模型时代的软件智能化开发:我们在哪里?该往何处走?

AI大模型重塑软件开发

AI大模型如何重塑软件开发:现状、优势与未来展望

7个关键问题:大模型技术能彻底改变软件开发的未来吗?

一、“为什么说大模型可能是软件开发的死胡同?”

(InfoQ)

虽然“Does current AI represent a dead end?”这篇文章意在引发讨论,但其中的某些观点对软件开发人员来说特别具有相关性:

“当前的 AI 系统缺乏与其功能紧密相关的内部结构,无法作为组件进行开发或重用,也无法进行关注点分离或分阶段开发。”

本文仅讨论如何将大语言模型(LLM)作为产品解决方案的一部分,而非探讨如何在开发过程中使用 AI 工具(例如,Cursor 和 Zed AI 这样的 AI 编码工具)。尽管借助 LLM 进行特定的软件开发生命周期活动(SDLA)确实面临着一些挑战,但我们开发产品的方式与最终卖给客户的产品通常是有所区别的。因此,在下面的图表中,我们关注的是上面两个部分:

来自卡内基梅隆大学软件工程研究所的图片

当前 LLM 面临的问题在于它们像汽车一样被出售——用户需要为整个产品付费,而不能指望将它们作为可组合模块的一部分。汽车的不可分解性不是问题,因为驾驶是一项受到严格控制的活动。即便你能够像乐高积木一样将汽车组装起来,它也不会被允许上路。

这大概正是大型科技公司所期望的——他们希望卖给你一个完整的产品或服务,而不是一系列可以轻松被他人进行构建的可组合部件。保持 LLM 的神秘感有助于维持其高价值地位。

LLM 的运作模式违背了计算领域的一个基本原则,即任务应当可以被分解。

这违背了计算领域的一个基本原则,即任务应当可以被分解。一个高效的软件组件,无论是自行开发还是外部采购,都应由可进行单元测试的代码构成。这些组件必须能够与其他组件可靠地协同工作。

即便某个产品采用了 Oracle 数据库,我们依然能够明白在概念设计层面上是存在数据持久化的。在决定使用哪种类型的存储技术时,测试机制已经准备就绪了。同时,数据库技术在不断创新,但客户永远不会认为存储厂商在某种程度上控制了软件。

在学术界,可分解性的缺失往往与可解释性的缺失相伴而生。我们可以归纳出其他与 LLM 在交付软件中的商业问题相关的因素。

我们无法将 LLM 的行为与训练数据分离。

目前,我们无法将 LLM 的行为与训练数据分离。我们知道 LLM 是经过训练的,但训练过程通常是不公开的,而结果却被期望能够被“原封不动”地接受。这种对组件“腌制”的期望在烹饪中或许可行,但在软件组件开发中却并不适用。

安全和隐私问题成为关注点,因为我们缺乏可靠的途径或方法来防止 LLM 泄露某些敏感信息。我们无法从外部干预神经网络,向它解释哪些信息是私密的,哪些不应该被泄露。

法律所有权问题依然很棘手。我们可以证明冷计算的操作结果是可重复的,在输入相同的情况下会得出相同的答案。然而,由于 LLM 携带着无法摆脱的训练“包袱”,我们根本无法证明它们没有侵犯现有的知识产权——而实际上,它们很可能已经侵犯了。

那些致力于减少碳足迹的公司正朝着与 LLM 厂商相反的方向前进,而 LLM 厂商需要惊人的计算资源来获得递减的性能改进。

本文并不是要讨论如何使用 LLM 来辅助开发,也不是关于向终端用户提供 LLM 工具。我使用的文本编辑器内置了某些形式的 AI 功能,但这些操作没有任何保障。我们都知道这些通常是走过场的功能——某些必须出现在产品中的“噱头”,而并非核心组成部分。

我认为 LLM 作为服务被引入产品的前景不大,除非 LLM 本身就是产品。

鉴于前面提到的原因,我认为 LLM 作为服务被引入产品的前景不大,除非它本身就是产品。但即便如此,这对任何企业来说都是一个巨大的陷阱。当 Zoom 创始人 Eric Yuan 提出在 Zoom 中引入 AI 替身代替与会者参加会议的想法时,理所当然地遭到了嘲笑,他认为这种能力会在“技术栈的底层”自然而然地出现。将重大创新外包给了 LLM 厂商,实际上是将自己的产品路线图交给了另一家公司掌控。

软件开发人员应该如何应对

那么,软件开发人员应该如何应对?我们都明白,一个组件应该有明确的职责,应该能够被替换,并且能够与其他组件一起被测试。如果是外部组件,也应当遵循相同的计算标准——而且我们应该能够依据这些标准来重新构建它们。

我们不应因追求短期的热度而轻易改变游戏规则。关键在于要设计一个能够为企业提供所需功能的流程,然后开发一个平台,以可持续的方式让开发人员进行构建。

作为开发人员,我们应当保持开放的态度,拥抱真正可解释、可测试的 AI。

作为开发人员,我们应当保持开放的态度,拥抱真正可解释、可测试的 AI。如果涉及训练过程,这个过程应当是可监控、可报告、可重复、可解释且可逆的。如果我们发现 LLM 认为某件事是真实的,而实际并非如此,那么必须能够通过一系列明确的步骤迅速进行修正。如果这样的描述没有意义,那么目前基于 LLM 的计算也同样没有意义。但理论上,我看不出为什么未来不能改变这一现状。

我担心的是,这种差异就像是科学与圣物信仰之间的对比。我们可以进行一系列不可行的实验(如果将圣物切成几块,这些碎片是否依然保持其神圣性?),但不应该期望这两个领域会有任何融合的可能性。

作者 | David Eastman
  译者 | 明知山
  策划 | 褚杏娟

原文链接:https://thenewstack.io/why-llms-within-software-development-may-be-a-dead-end/

二、大模型时代的软件智能化开发:我们在哪里?该往何处走?

(彭鑫 CodeWisdom)

从去年4月至今,我已经写了多篇关于大模型时代软件工程的文章,包括《智能化时代的软件工程:拥抱大模型的正确姿势》《迈向更高层次智能化开发之路:写给大模型的2023总结》《当“低代码”遇上“大模型”:兼谈人机物融合应用场景下的应用开发》等。这主要是因为大模型的到来对于软件工程研究与实践都是一股强大的冲击波,我们需要想清楚大模型的到来改变了什么、没有改变什么,以及我们未来的软件工程研究与实践之路应该怎么走。最近两三个月,我以“大模型辅助软件开发:我们在哪里?该往何处走?”为题在不同场合(有学术报告会也有企业和行业技术大会)作了好几次报告,也参加了几次企业和行业交流活动。同时,我们CodeWisdom团队智能化开发小组也围绕相关问题进行了一些探索和研讨。基于以上这些思考和交流,我对大模型时代的软件智能化开发又有了一些新的理解,因此写下这篇文章与大家探讨和交流,其中既有此前几篇文章中相关观点的延续又有一些新的感受和看法。

1.大模型热潮

自从ChatGPT于2022年底问世以来,大模型就成为各个领域的热门话题,软件工程领域也不例外。特别是大家发现代码学习对于大模型的推理能力至关重要,同时代码生成又是大模型当前为数不多的一个比较明确的2B应用场景,因此“代码生成”就成了一个诸多企业和研究者关心的问题。所以我们可以看到,凡是炼大模型的企业都会同时搞一个代码大模型并作为一个独立的产品(有时候还会配合智能IDE)宣传推广,而大量人工智能学者也开始研究代码生成问题了。另一方面,关于大模型时代的软件工程,各种言论甚嚣尘上,人工智能、数据科学等其他领域的专家学者们也开始谈论编程的终结、自然语言编程以及软件开发范式的变革。

去年春天,在我组织的“智能化软件工程学术沙龙”微信群里就有专家提到:“GPT-4横空出世,和大刘笔下一样,大家分成了几个派别:降临派、拯救派、逃亡派、抵抗派”。有一位企业专家私信跟我说:“彭老师,我觉得你是抵抗派”,因为我老是说大模型在软件开发上这里不行那里不行。我这么做的出发点有公心也有私心:从公心上说,我确实觉得大模型在解决软件工程的深层次问题上没有那么强;从私心上说,如果大模型在软件工程领域无所不能,那么软件工程领域的研究基本都不用做了,等着大模型来降维打击就行。

事实上,我对大模型的态度也没那么负面,我们团队智能化开发小组现在基本上也都在拥抱大模型了。大模型的到来为我们打开了软件智能化开发的巨大想象空间,很多以前不敢想的事(例如生成式软件开发)现在可以去想了,认为做不到的事(例如整函数代码生成)现在可以做到了。但是,我认为要想实现更高层次上系统性的智能化开发还需要从软件工程的角度认真思考其中的根本性问题并深入探索可能的方法和技术创新

关于当前发展的现状我的感觉是稍微有点过热了。一些乐观派认为以GPT为代表的大模型能力还在继续提升(GPT-4都这么厉害了,GPT-4o、GPT-o1更厉害,后面只会越来越厉害),提示窗口越来越大(以后是不是整个项目代码都可以一股脑扔进去),多Agent等技术还在不断发展(多Agent角色扮演,搞个虚拟软件公司自己就把活干了),因此我们就躺着等大模型解放码农吧;一些企业宣传自己已经有了基于代码大模型的AI虚拟程序员并贡献了代码库中百分之多少多少的代码;一些人根据大模型生成各种小游戏的速度越来越快就宣称这预示着软件企业产品迭代速度将会越来越快;一些人用大模型做了一下文本需求整理和条目化,生成了一些放之四海而皆准的宏观设计方案(例如标准的前后端分离和微服务架构技术栈),就说大模型懂需求会设计。另外,今年以来工业界和学术界都很热衷在SWE-Bench(一个基于GitHub开源项目创建的自动issue修复的数据集)上刷榜单。这种全自动的issue修复的研究当然是有价值的,但我实在不认为这会成为企业软件开发(维护型任务)的主流目前看起来能够被自动修复的issue往往都是那种很容易直接定位的(例如issue报告中直接指出需要修复的地方),而在企业软件开发中仅仅是故障定位这一环节就可能会耗费大量的时间,这与软件需求和设计的复杂性密切相关。

当前这种过热的发展局面可能带来几个方面的负面影响首先,导致整个行业上上下下的浮躁情绪,都在畅想大模型带来的美好愿景或者被由此带来的焦虑所包围,本该重视的软件工程基础能力和基础设施建设反而被忽视。其次,导致企业管理层对于大模型所带来的变化有过高的期望,在最初的大量投入之后没有看到预想的“颠覆性变化”(例如可以大幅精简开发人员队伍)就转为消极以待。最后,导致大众对于软件工程甚至整个软件行业的认知产生偏差,甚至有人说软件工程将成为新的天坑专业,因为未来AI都可以编程了,人人都是程序员。

2.我所理解的现状

在大模型热潮的席卷下,很多开发人员都已习惯于在日常工作中借助大模型来辅助完成各种开发任务。一些企业还训练了自己的代码大模型,以获得更好的特定领域代码生成和理解效果。关于大模型在企业软件开发实践中的实际应用效果和现状,我有以下几个方面的理解和感受。

01

基于大模型的局部智能化支持成为常态

基于大模型的代码补全、推荐、解释和问答等智能化支持得到了广泛应用。特别是近期火热的Cursor等工具通过人机交互和产品设计上的创新将大模型与IDE及项目上下文有机结合,显著提高了开发人员的智能化体验。然而,当前这种智能化开发支持很大程度上仍然是局部性的,也就是开发人员个体有感(例如显著减少了网络搜索、查询API手册、代码库查找等方面的时间)但项目和企业层面上没有太多感觉(例如未带来显著的开发效率和产品迭代与交付速度提升)。这是因为大模型当前主要支持的编码环节在软件开发全过程中的时间占比并不算高(一些企业报告在10-20%左右),同时任务协调和知识缺失等方面的原因经常导致开发过程中的卡点和堵点

02

大模型的应用加剧了开发人员的分化

普通开发人员和专家型开发人员在软件开发效率和质量上存在着巨大的差异,这一差异随着大模型的应用被进一步放大了。普通开发人员对于大模型的能力缺乏必要的认知,经常随手使用大模型能力却又不擅长问题分解、上下文陈述和及时确认反馈,因此仅能获得一些浅层收益并且可能带来潜在的质量隐患(参见下面第4点)。而少量专家型开发人员已经掌握了与大模型的高效协作方式,善于需求理解和问题分解,熟知大模型擅长何种粒度和类型的任务,并能提供必要的上下文信息和及时的问题反馈。他们在大模型的加持下比以往更容易成为以一当十的超级程序员和全栈工程师

03

大模型对于软件维护类任务支持有限

许多企业软件开发任务都是维护型任务,即在一个存在多年的软件产品或系统上新增需求特性、修复缺陷或者通过重构提升性能和可维护性等。需要注意的是,在已有的软件基础上新增需求特性也是一种维护型任务,因为同样需要定位修改位置、修改/新增实现代码并控制变更影响。这些维护型任务可以细分为很多子任务,包括问题定位、修改实施、回归测试、变更影响分析、架构看护等,这些子任务的完成都要求对软件系统有充分的理解。大模型对于大规模复杂软件的理解能力有限,难以有效定位问题并提供智能化辅助支持。近期有不少工作关注于利用基于大模型的多Agent技术来自动修复SWE-Bench数据集中的issue(来自GitHub上的开源项目)。虽然取得了一定的效果而且榜单还在一直刷新之中,但是应该看到数据集中的issue经过了精心挑选,同时能够被自动修复的issue往往比较容易定位(例如issue信息中直接给出了修改位置或容易定位的关键词)。

04

大模型的滥用可能带来潜在和长期的质量隐患

大模型卓越的自动生成能力有可能会激发人性中的“懒”和“恶”试想,如果一个着急下班的开发人员没有那么高的质量意识和自律性的话,那么他在发现大模型生成的代码像那么回事特别是还能通过测试的时候可能就会提交了事了。如此一来,大量没有经过仔细推敲和深刻理解的代码就进入企业代码仓库之中了。相比之下,如果每行代码都是自己写的话,那么思考和推敲可能会更多一些。此外,近期在交流中听到一个企业专家提到,一些开发人员会利用大模型大量生成测试用例以满足测试覆盖度要求(甚至会同时删除一些无法通过的手写测试用例),而这些测试用例很多时候揭错能力不足,由此导致虚高的测试覆盖度甚至麻痹大意。这些问题对于软件质量带来的潜在和长期影响值得引起重视。

3.个人的一些思考

图灵奖得主、《人月神话》作者Frederick P. Brooks在1987年的一篇文章《No Silver Bullet: Essence and Accidents of Software Engineering》中指出“软件开发的根本性(Essence)困难在于对于构成抽象软件实体的复杂概念结构的构思(主要是需求和设计),而产生这种抽象软件实体的编程语言表示只是偶然性(Accident)的困难”而我的一个基本观点是,仅靠大模型技术的发展无法触发软件智能化开发的质变,因为这将涉及软件开发的根本性困难(即概念级别上的分析和设计),而大模型在这方面并不具备所需要的能力。同时,当前的主流研究路线(包括工业界)过于热衷于大模型和Agent等AI技术的“眼球效应”,在软件工程的本质困难上的思考不多。作为一个对AI只懂皮毛的软件工程研究者,我也只能更多从软件工程的角度思考其中的一些问题。这里分享下我自己近期的一些想法。

01

软件形态的多样性

现在谈论软件开发范式变化和自然语言编程的人越来越多,有的来自于软件工程领域,有的则来自于人工智能和其他一些领域。谈论这个问题一定要特别注意软件形态的多样性。“软件”是一个很宽泛的概念。从个人数字助理、企业信息管理系统、嵌入式控制系统、电子商务系统等应用软件到操作系统、中间件等基础软件以及CAD、CAE等专用工具软件,软件的频谱非常之宽。

从开发模式上看,这个频谱的一头是高度个性化和场景化的小应用,实现结构简单(例如组合和编排一下已有的服务和API即可实现),生存周期短(甚至可以按需合成、即用即抛)。对于这类软件,最终用户编程(End User Programming)显然是一个不错的选择,而自然语言编程也是呼之欲出了。

这个频谱的另外一头是操作系统等大规模复杂软件,基础性和特异性强,功能及设计复杂,生存周期长且处于不断演化之中。对于这类软件,往往只有经验丰富的专家型开发人员才能驾驭(例如Linux内核维护者的高龄化已经成为一个问题),而智能化技术能提供一些软件理解和问题定位等方面的辅助支持就已经很不错了。

02

软件的系统复杂性

软件的复杂性首先体现在规模上。大家都知道大模型一次性生成几百行的小应用(特别是贪吃蛇、俄罗斯方块等通用域上的常见应用)已经不在话下了,但生成更大规模的企业级软件还是很困难的。但软件的复杂性还不仅仅只是规模的问题,而且还与软件的外部和内部系统复杂性相关。

从外部看,软件往往属于一个软件密集型系统(Software Intensive System)的一部分(其他组成部分还包括硬件、设备、人、流程、物理和社会环境等),软件作为一种满足用户需求的解决方案的有效性和正确性除了取决于自身之外,还取决于所处的系统上下文环境以及系统级的设计方案(例如软件与其他系统组成部分之间的职责分配和交互关系)。由此带来的问题是,理解及编写软件代码的一部分重要背景知识并不在代码本身而在代码之外(一般可以用文档来描述,但文档很多时候要么不可靠要么根本就不存在)。

从内部看,大规模复杂软件具有较高的设计复杂性。从高层架构到局部设计,一个个设计决策在不断回答如何将上层设计要求转化成下一层的设计结构考虑、职责分配方案、交互关系定义以及各种约束和约定。而且,从不同维度和关注点出发考虑的设计决策之间纵横交织,最终得到的设计结构很大程度上将被淹没和消失在代码组织结构(例如包/目录、类/文件、方法/函数)之中,同时造成大量关注点的“混杂”(与多个关注点相关的代码混杂在同一个代码单元中)与“散布”(与同一个关注点相关的代码散布在多个代码单元中)。这些设计知识的缺失导致了许多现实世界中的软件开发难题,包括问题定位、变更影响分析、回归测试范围界定、架构看护等。

软件的系统复杂性还体现在软件的精密性和演化性上软件是一种高度符号化的解决方案表示方式,不管是代码还是配置文件,往往一点差错就会造成严重的系统失效,而一点改动就会造成不可预知的变更影响。这就导致在缺乏严密的验证手段的情况下(测试经常是有限和不完备的),通过大模型这种概率化的方式生成完全正确的代码往往是很难的。此外,大部分有生命力的软件都处于不断演化之中,这种演化往往表现为在既有软件系统基础上的“适应性生长”,也就是在已有的系统基础上不断尝试和调整从而实现新需求并确保系统的稳定性。有一位业界资深专家在交流时提到,从系统的角度看死代码有时候可能也是有用的,因为它已经自然成为演化过程中的一部分而后续的很多技术决策和尝试调整都是在此基础上开展的。由此带来一个问题,我将其称之为“代码的神秘主义”,例如开发人员经常不敢删除一段明显的“无用”代码,因为会感觉这段代码背后有着某种自己没有参透的神秘意图。

事实上,当软件的复杂度演化到一定程度之后,我们已经没有了掌握其一切奥妙的“上帝视角”,取而代之的是盲人摸象般的揣摩、理解甚至是猜测一个旁证是随着云原生和微服务架构热起来的“可观测性”的概念:这种大规模分布式软件已经无法通过传统的单步调试这种“上帝视角”去观察和分析了,权宜之计是收集大量外部可见的可观测性数据(例如log、trace、metrics)并据此推测软件系统潜在的问题及其根源。

最后摘录一段《中国学科发展战略·软件科学与工程》中的论述为这段思考收尾:

其高度灵活性也使得软件不仅仅是系统中的信息处理工具,也是管理各类资源、融合人机物的“万能集成器”,原则上规模可以无限扩展。这就使得整个人工系统的复 杂性向软件集中。纵观软件的发展历程,其复杂性呈爆炸性增长趋势。软件成为人类所创造的最复杂的一类制品。对复杂性的驾驭成为软件开发和运维的核心挑战。

03

软件开发的探索性

当我们把代码生成作为软件开发的一种途径时,似乎软件开发是一个从输入文本(需求描述)到输出文本(实现代码)的转换过程。就算考虑开发人员的参与,那也最多是一个文本交互过程。而事实上软件开发具有很强的探索性。软件开发的目标是完成从问题空间到解空间的转换,而这两方面都具有很强的探索性。

从问题空间看,用户需求基本上很难做到一次性完整、准确表述,而开发人员在软件开发过程中一般都需要不断探索和完善对用户需求的理解。事实上用户自身也不见得一开始就能把自己的需求想清楚、说清楚。试想,简单如计算器这样的软件,用户也不太可能一开始就把所有细节表述清楚(例如按键后的界面和声音效果)。这种需求探索往往需要以原型演示为基础(需求工程中对于原型有着很高的重视程度)。

从解空间看,软件运行在复杂的软硬件环境基础上同时内部还存在复杂的交互关系,因此开发人员也无法仅通过代码就对软件最终的运行效果有完整、准确的认识。开发人员一般习惯于通过软件运行发现各种问题,包括功能和性能缺陷等,然后进行诊断和修复。这是因为软件运行效果不仅取决于内部各模块之间的相互作用,而且还取决于与外部软硬件环境之间的相互作用。这些很大程度上都无法通过代码来预测,而只能通过不断运行和观察来探索。事实上,很多软件也都是通过这种方式不断修修补补从而不断保持稳定可靠运行的。

说到这里,我想类比下机器人的具身智能。对于机器人,目前主流的观点是仅靠纸上谈兵的大模型显然不够,还需要反映物理规律的世界模型来让机器人进行自主交互和探索,从而形成具身智能。那么,软件开发的这种探索性是不是也意味着需要建立某种形式的具身智能,从而能探索如何与人磨合获得满意的用户体验以及如何与软硬件环境磨合实现良好的运行效果?这样的探索过程涉及软件构建、部署、测试等许多不同的方面和环节中的工具和系统环境以及用户的参与。

4.有希望的探索方向

大模型带来的软件智能化开发浪潮才刚刚开始,我们需要从软件工程的本质规律和问题出发持续探索,不断推高智能化开发的水平和高度。以下是几个我认为有希望的探索方向,其中前两个与新应用开发相关而第三个与软件维护相关。

01

人机协作演进式应用生成

应用开发的探索过程需要人机结对共同完成,同时以一种演进式的方式来开展。在《ChatGPT协作开发实录:编程新手的试验探索》一文中,我们以俄罗斯方块游戏为例对不同的的生成式开发过程进行了对比实验。结果表明,与自顶向下、先生成设计方案然后逐类生成代码的方式相比,按照合理的特性拆解和演进式设计的思路与ChatGPT开展人机协作更容易实现完整的应用生成。参与实验分析的同学当时的总结是:

ChatGPT生成代码的能力是有目共睹的,但如何更好地使用ChatGPT,也紧密取决于使用者本身对于开发项目的理解和开发设计规划。在对项目有合理规划,并且对项目整体进行细粒度feature的拆解,甚至按照合理的顺序去逐步实现的情况下,ChatGPT能够发挥出更强的能力。

一直很推崇演进式设计的业界专家张刚看了我们的分享后给出了这样的评论:

演化才是本质。这个实验表明,逐层递进的演进式设计方案更容易得到结果,在俄罗斯方块这个规模的应用尤其明显。合理的演化路径会提升达成目标的效率。

为什么演进式生成更有效呢?以下是我的一点理解。首先,软件应用需求难以一次性完整准确表述,而后续需求变动可能导致此前确定的设计变动甚至推倒重来。因此,要允许大模型在迭代过程中不断对软件设计方案进行微调,而不是一上来就生成一个完整的设计。其次,逐层递进的增量开发能让大模型每一步都获得足够的上下文,避免空中楼阁式的代码生成。演进式的应用生成过程中,大模型每次都是在当前实现代码的基础上生成少量代码或进行微调;而逐类生成则意味着大模型需要在其他类不存在的情况下独立生成一些类的完整代码,犹如凭空建造空中楼阁一般。最后,演进式生成能让用户持续了解实现情况和运行效果并及时提供反馈很多人的实践都表明,如果不能及时发现所生成代码的问题并及时提供反馈,那么大模型很可能会把开发人员带沟里。

为了实现有效的演进式应用生成,需要研究如何实现基于大模型的人机协作迭代化开发过程,包括需求及问题理解、特性拆解与编排、增量代码生成、结果审视与反馈等。

02

DSL与大模型相结合的应用生成

生成式开发其实在大模型出现之前就已经存在,只不过是以一种基于规则和模板的方式实现的,那就是低代码开发。低代码开发以DSL为基础,而DSL是业务和技术领域专家知识的一种凝练,因此可以认为是一种知识驱动的方式。由此可以认为DSL与大模型相结合的应用生成就是知识与数据双驱动的智能化技术发展路径的又一例证

这一点我在《当“低代码”遇上“大模型”:兼谈人机物融合应用场景下的应用开发》一文中已经有所阐述,在此不再赘述,仅摘录一段观点如下:

大模型代码生成当前难以支持大规模企业级应用开发的一个主要原因是缺少特定领域知识及相关的编程抽象。大模型广谱的代码生成能力使得其所面对的候选解决方案空间巨大,同时相应的软件设计特别是架构设计能力也是大模型的短板。而低代码开发专注于特定领域(例如基于云的Web信息系统),因此可以将领域知识和特定领域的编程抽象融入平台之中,从而大大缩小候选解决方案空间、增强其代码的模式化程度,同时可以以预定义的参考架构以及技术栈为应用奠定设计框架并提供运行时质量保障。低代码开发平台背后都存在一套特定领域语言(即DSL),这种DSL应用范围受限(局限在目标领域之中)但其编程抽象层次远高于通用编程语言。因此,如果专注于特定领域软件开发,那么面向DSL的代码生成效率和准确性无疑都会更高。

03

基于大模型的代码数字孪生

企业软件开发中的维护型任务的一个主要问题在于知识的缺失。这几年我在报告中经常提到的一个口号是“软件开发最大的浪费是知识的浪费、重复思考的浪费”。重复编写的代码、反复揣摩的设计意图、重复犯过的错误…这些问题背后的知识也许曾经在开发人员的脑海中浮现过、在交谈讨论和聊天记录中出现过,甚至曾经被记录过,但就是无法在需要的时候出现。开发人员经常是在缺少架构约束、业务场景、系统上下文等方面的业务和技术知识的情况下完成开发任务的。而软件文档基本不可靠,要么过时要么从来没有存在过。在这种情况下,期望大模型能够理解大规模软件代码及其背后的需求和设计知识显然不现实。

基于大模型的代码数字孪生试图以一种与代码双向映射、协同演化的方式抽取、积累并持续更新关于代码的高层知识。一般数字孪生都是指对现实世界系统(大到城市小到发动机)的一种数字化和可视化映射,其中伴随着对系统核心规律和机理的抽象与建模。而这里说的代码数字孪生则是代码中所蕴含的需求与设计知识的抽象与建模。为此,可以将程序分析与大模型相结合,从代码、文档、开发历史、运维数据等不同渠道抽取关于软件更抽象层次上的实体、概念及各种关系。另外需要注意的是,代码数字孪生的构建还需要人的参与。试想,一个开发人员花费很长时间弄懂一个软件背后的设计思想之后如何有效将所获得的知识贡献出来并能在后续软件开发和维护过程中被有效利用?大模型在知识抽取、关联和利用等方面的强大能力不仅可以使得散落在代码、文档、开发历史等各处的软件开发知识能够被有效利用,而且可以激励更多的开发人员以众包的方式贡献自己对于软件的理解和开发经验

说到这里,似乎还可以把软件知识积累这件事推到一个更高的高度。“软件定一切”、“人类文明运行在软件之上”已经成为公认的发展趋势。未来,人类的衣食住行以及经济社会发展方方面面都会由软件承载并实现高度的智能化,经济社会运转规律将越来越多地以软件功能逻辑的方式呈现。另一方面,软件将成为一种新型基础设施同时其规模和复杂度不断提高,逐渐成为一种巨复杂系统。因此,关于这些软件的知识积累和沉淀也许也会成为我们人类文明记录的一部分。

5.总结

大模型技术发展助推软件开发进入智能化时代。基础大模型及微调、提示工程、检索增强、多Agent技术等大模型相关技术在其中扮演了重要的角色。从企业实践看,代码推荐、片段生成、代码解释、代码重构、缺陷检测与自动修复等局部的智能化支持得到广泛应用。然而,更加系统的智能化开发能力仅掌握在少数专家手中,而其诀窍在于将人的问题分解、设计规划、代码审查、问题反馈能力与大模型的自动生成能力有机结合。

当前大模型主要是在一些局部任务上发挥作用,而无法在更大范围内和更高层次上提供智能化支持。我的一个判断是仅靠大模型技术的发展无法触发软件智能化开发的质变。这是因为智能化开发能力的进一步提升涉及软件开发的根本性困难,即概念级别上的分析和设计,我们无法将突破的希望寄托在大模型自身的发展上,具体表现包括大模型在设计知识的学习以及复杂软件维护任务的困难上。而当前的主流研究路线(包括工业界)过于热衷于AI技术的“眼球效应”,在软件工程的本质困难上的思考不多。

对于应用开发而言,人机协作的智能化开发应当成为企业追求的主流方向,其中包括几个重要的方面。

演进式应用生成:软件开发是一个探索性认知过程,需要引导大模型逐步理解和掌握软件的整体上下文,而演进式设计是一个有效手段;

知识与数据双驱动:对于特定领域应用开发而言,通过领域基础框架和DSL限定架构选择和所涉及的概念空间可有效提高应用生成的准确性;

有效审视与反馈:开发过程中的持续反馈十分重要,为此需要为开发者洞察软件应用生成过程提供有效手段,便于及时发现问题并给与反馈。

对于复杂软件的维护任务而言,通过大模型增强的代码数字孪生实现软件开发知识的有效积累和利用。对于具备长期维护价值的系统(如Linux)而言,共建、共享与代码同步演化的代码数字孪生平台(包括代码及其高层知识)具有重要的价值。当前的软件开发知识高度分散和碎片化,而大模型强大的知识抽取、关联与利用能力为软件开发知识积聚提供了有效手段。在此基础上,还需要以某种适当的方式(例如与日常开发过程自然融合)吸引和鼓励开发人员贡献自己所拥有的软件开发知识(例如代码背后的软件设计决策及其他业务和技术背景知识),同时还需要不断发现关键知识缺失并通过专家反馈进行补充。

写到这里,这篇文章基本上已经写完了。但因为前几天在我组织的智能化软件工程沙龙群里的讨论,这里还想再谈一个问题,那就是未来是否还需要编程。那次讨论的起因是“大模型是否具有推理能力”,进而发展到“未来是否还需要编程”。激进派认为大模型自由自己的一套推理机制,不必非要套用人类那套概念化推理模式,进而大部分地方软件也可以消失了(由大模型接管了)。我自然属于保守派,认为大模型并不会真正意义上的“推理”,在软件开发上也只是辅助作用,而未来人类还是需要通过程序来掌控我们这个世界。通过讨论我发现激进派的观点自有自己的一套逻辑体系:因为大模型自有自己的一套“推理”机制,因此我们说的大模型不会推理的那些问题只不过是一个鲁棒性问题(这个是可以持续改进的);同时,人类未来也不一定需要知道怎么回事(可解释性和可控性不那么重要),只要AI把人服务好就行。所以,最后我发现两派观点分歧的根本原因在于关于AI的价值观选择上:如果人类打算将很多东西的控制权让渡给AI,那么自然也可以接受AI那种概率化的“推理”(以后再说运气不好可能部分就是AI造成的),而程序很大程度上也没有存在的必要了。

三、AI大模型重塑软件开发

(迅迅 AI智用宝)

引言

随着人工智能(AI)技术的迅猛发展,AI大模型正逐渐渗透到软件开发的各个环节,给传统的开发流程带来了巨大的变革。AI大模型凭借其强大的学习能力和数据处理能力,能够在需求分析、软件设计、代码生成、智能测试、优化算法等方面发挥重要作用。AI在软件开发上的应用提高了设计开发的效率、质量,降低了错误、成本。这种变革不仅影响着软件开发者的工作方式,也对整个软件产业产生了深远的影响。

传统软件开发流程与模式

需求分析

需求分析是软件开发的起点。开发团队需要与用户进行深入的沟通和交流。这包括组织需求收集会、进行用户调研、分析业务流程等活动。目的是明确软件需要实现的功能、性能要求、界面设计要求、安全性要求等多方面的需求。例如,在开发一个电商平台时,需求分析阶段要确定商品管理功能(包括商品的添加、删除、修改、查询等操作)、用户注册与登录功能、订单处理功能(订单创建、支付、发货、退货等)以及界面的布局和交互设计等。这个阶段需要耗费大量的时间来确保需求的准确性和完整性,因为需求的变更在后期开发中会带来很高的成本。

软件设计

架构设计

架构设计决定了软件的整体结构,包括软件的分层结构、模块划分以及模块之间的交互方式。例如,常见的三层架构(表示层、业务逻辑层、数据访问层)将软件分为不同的功能层次,使得各层之间职责明确,便于开发和维护。在设计一个大型企业资源规划(ERP)系统时,架构师要考虑如何将采购、销售、库存管理等不同的业务模块进行合理划分,以及如何实现它们之间的数据交互。

架构师还需要考虑软件的可扩展性、可维护性和性能等因素。例如,采用微服务架构可以提高软件的可扩展性,使得每个微服务可以独立开发、部署和升级,但同时也增加了系统的复杂性,需要更好的服务治理机制。

数据库设计

数据库设计涉及到确定数据的存储结构、表结构、字段类型、索引等。对于一个社交网络应用,数据库设计要考虑如何存储用户信息(如用户名、密码、个人资料等)、好友关系、动态信息等。合理的数据库设计可以提高数据的存储效率和查询速度,减少数据冗余。例如,通过使用范式化设计可以避免数据的重复存储,但在某些情况下,为了提高查询性能,可能需要进行反范式化操作。

编码

编程语言选择

根据项目的需求和特点选择合适的编程语言。例如,对于开发高性能的系统级软件,C或C++可能是较好的选择;对于快速开发Web应用,Python、Java或JavaScript等语言可能更合适。不同的编程语言有不同的语法、特性和适用场景。

代码编写规范

程序员需要遵循一定的代码编写规范,以确保代码的可读性、可维护性和可扩展性。这包括代码的缩进、命名规范(如变量名、函数名的命名方式)、代码注释等方面。例如,在Python中,通常采用蛇形命名法(如my_variable)来命名变量,并且要对复杂的函数和代码块进行适当的注释,以便其他开发人员能够理解代码的功能。

代码编写过程中还需要考虑算法和数据结构的选择。例如,在处理大量数据的排序问题时,选择合适的排序算法(如快速排序、归并排序等)可以提高程序的运行效率。

测试

单元测试

单元测试是对软件中的最小可测试单元(通常是函数或类)进行测试。开发人员编写测试用例来验证单元的功能是否正确。例如,在一个Java项目中,使用JUnit框架对一个计算类中的加法函数进行单元测试,输入不同的数值,检查输出结果是否符合预期。

集成测试

集成测试是将多个单元组合在一起进行测试,检查它们之间的接口是否正确交互。例如,在一个Web应用中,将前端页面与后端服务进行集成测试,确保用户登录功能在前端输入正确的用户名和密码后,能够正确地与后端的用户认证服务进行交互并登录成功。

系统测试

系统测试是对整个软件系统进行全面的测试,包括功能测试、性能测试、安全性测试等。功能测试验证软件是否满足所有的功能需求,如在一个金融软件中,测试转账功能是否能够正确地将资金从一个账户转移到另一个账户。性能测试检查软件在不同负载条件下的性能指标,如响应时间、吞吐量等。安全性测试则评估软件对各种安全威胁(如SQL注入、跨站脚本攻击等)的抵御能力。

部署与维护

部署

部署是将软件安装到目标环境(如服务器、移动设备等)的过程。对于Web应用,可能需要将代码部署到Web服务器上,配置服务器环境(如安装Web服务器软件、数据库管理系统等),并确保应用能够正确运行。在移动应用开发中,需要将应用发布到应用商店(如苹果App Store或安卓应用商店),并满足商店的审核要求。

维护

软件维护包括修复软件中的错误(Bug修复)、根据用户需求的变化对软件进行功能升级、优化软件的性能等。例如,当用户反馈某个功能在特定设备上无法正常使用时,开发团队需要进行故障排查并修复问题。随着业务的发展,如果需要在软件中添加新的功能(如在电商应用中添加新的支付方式),开发团队需要进行相应的开发和测试工作,然后部署到生产环境。

传统软件开发存在的问题和遇到的瓶颈

传统软件开发存在的问题

需求理解偏差

在需求收集阶段,主要依赖与客户沟通、问卷调研以及业务专家经验。然而,客户往往难以清晰表述复杂需求,业务专家也可能存在知识盲区,导致开发团队对需求理解不准确。例如,在开发一款医疗管理系统时,客户提及 “方便医护人员操作”,但未明确具体操作流程和功能细节,开发团队基于自身理解设计,后续极易因与客户期望不符引发需求变更。

设计局限性

软件设计师手工绘制架构图与模块图,受个人知识储备和项目经验束缚,很难全面兼顾性能、可扩展性、成本等多方面因素。以电商系统开发为例,初期架构若未充分考虑高并发场景,随着业务量暴增,系统可能频繁卡顿甚至崩溃,重新设计架构则耗费巨大人力、时间成本。

编码效率低

程序员逐行编写代码,不仅速度慢,且代码质量受个人编程习惯、技能水平影响大。不同程序员编写的代码在可读性、可维护性上差异显著,新人接手老代码时常常一头雾水,增加开发成本与出错概率。

测试漏洞多

人工编写测试用例无法穷举所有场景,复杂业务逻辑下容易遗漏隐藏缺陷。回归测试时,因需重复大量手工操作,常因疲劳疏忽导致部分测试不严谨,使软件上线后仍有诸多未发现的问题。

部署维护复杂

部署阶段手动配置服务器环境、安装依赖软件等操作繁琐易错,稍有不慎就会引发兼容性问题。维护过程中,面对海量日志排查故障如同大海捞针,运维人员需耗费大量精力定位问题根源,软件性能优化也常因缺乏有效数据支撑而盲目进行。

传统软件开发遇到的瓶颈

开发周期瓶颈

由于各环节依赖人工,流程繁琐且易返工,导致软件开发周期冗长。在竞争激烈的市场环境下,如移动应用开发领域,一款社交类 App 若开发周期比竞品多出数月,可能错失市场先机,用户被竞品大量吸引,企业前期投入难以收回。

人力成本瓶颈

大量重复性、基础性工作占用人力,从需求梳理、代码编写到测试维护,每个环节都需投入众多人力成本。尤其随着软件规模扩大,人力需求呈线性甚至指数级增长,给企业带来沉重财务负担,压缩利润空间。

协作沟通瓶颈

需求、设计、开发、测试、运维团队之间信息传递依赖文档、会议等传统方式,易出现信息失真、更新不及时等问题。例如,开发过程中需求变更后,若未能及时同步给测试团队,测试用例就会失效,引发团队间矛盾,影响项目推进效率。

技术创新瓶颈

传统模式专注于既有流程优化,难有余力探索新技术应用。面对新兴技术如区块链在软件安全、分布式存储方面的潜力,因开发周期长、成本高、风险大,企业往往望而却步,阻碍软件技术整体升级。

AI在软件开发中的应用场景

辅助需求分析

需求理解与澄清

AI可以分析需求文档中的自然语言描述,帮助开发人员更好地理解需求。例如,对于一些模糊的需求描述,AI可以通过语义分析和知识图谱等技术,提供更清晰的解释。如果需求文档中提到“用户需要一个方便的搜索功能”,AI可以进一步分析并提出诸如“是否需要支持模糊搜索、是否需要对搜索结果进行排序”等问题,以帮助澄清需求。

需求优先级排序

AI可以根据业务目标、用户反馈等因素,对需求进行优先级排序。例如,在一个移动应用开发项目中,AI可以分析用户的使用频率、对不同功能的满意度等数据,确定哪些需求是最紧急和最重要的,从而帮助开发团队合理安排开发资源。

软件设计

架构设计

AI 算法依据项目的功能特点、性能期望、成本预算以及未来扩展性需求等多维度关键信息,自动生成一系列架构蓝图。以开发一款面向全球用户的社交平台为例,考虑到海量用户实时互动、数据高并发读写、不同功能模块频繁更新迭代等复杂情况,AI 推荐采用云原生架构,精准划分用户管理、动态推送、好友关系、多媒体存储等微服务模块,并清晰规划模块间高效、可靠的交互路径。相较于传统人工凭借经验摸索的单一架构选型,AI 提供的多样化架构方案对比,助力开发团队从性能、成本、可维护性等多角度权衡,选出最优架构,确保系统能灵活应对业务爆发式增长。

数据库设计

AI 通过深度分析软件业务流程与数据流向,智能规划数据库表结构、字段类型、索引设置等关键要素。在开发一款电商订单管理系统时,AI 依据订单创建、查询、修改、统计等操作频繁度,优化数据库表设计,精准确定主键、外键关联,合理分配字段存储长度,同时自动生成高效的索引策略,大幅提升数据读写速度。并且,随着业务发展,AI 能实时监测数据变化趋势,动态调整数据库架构,预防数据冗余、查询缓慢等问题,保障数据存储与检索的高效性。

页面设计

AI 综合用户行为追踪数据、视觉喜好调研结论以及行业设计流行趋势,快速生成贴合用户操作习惯与审美倾向的交互页面原型。以一款旅游预订 App 为例,AI 分析用户在浏览景点、筛选酒店、下单支付等环节的操作习惯,优化页面布局,将热门目的地推荐置于首页显眼位置,简化预订流程至三步以内;同时结合大众对旅游类 App 清新、活力色彩风格的偏好,精心搭配色调,提升视觉吸引力。通过持续 A/B 测试,AI 不断迭代页面设计,使新用户注册转化率较传统手工设计提升近 40%,显著降低用户流失风险。

代码生成

生成代码框架

开发人员仅需输入项目的概要描述,AI 便能迅速搭建起适配的代码框架。例如,当开发一款在线办公文档协作软件时,开发者输入 “构建一个支持多人实时编辑、具备权限管理、版本回溯功能的文档协作平台”,AI 即刻输出涵盖基础架构、模块划分的代码框架,包括用户认证模块、文档编辑模块、实时通信模块、数据存储模块等关键部分,且以清晰的目录结构组织,遵循常见的设计模式,如采用 MVC(模型 – 视图 – 控制器)架构,让开发人员能快速定位各个功能的代码位置,极大节省从零开始搭建架构的时间,快速开启核心功能的开发。

生成前端代码

对于前端界面的代码生成,AI 同样有所作为。以开发一款健身类移动应用为例,开发者输入 “创建一个包含课程展示、教练介绍、用户预约课程以及社区分享功能的健身 App 首页”,AI 可迅速生成 HTML、CSS 和 JavaScript 代码。生成的 HTML 代码构建出页面布局,CSS 美化样式,实现美观且符合健身风格的色彩搭配、字体排版,JavaScript 则赋予页面交互功能,如点击课程卡片展开详情、滑动切换教练介绍等,确保前端界面既视觉吸睛又操作流畅,开发人员按需调整,就能满足个性化设计需求,加速前端开发进程。

生成后端代码

在后端代码生成方面,AI 可依据前端需求与数据库设计,产出代码。如开发电商系统的订单处理后端,开发者描述 “创建接收前端订单提交请求、验证订单信息、与库存系统交互扣减库存、生成订单记录并返回处理结果的后端模块”,AI 能够快速生成 Python 的 Flask 或 Java 的 Spring Boot 等框架下的后端代码,包含严谨的请求处理逻辑、与数据库交互的 SQL 查询语句,确保订单数据准确无误地存储、更新,同时实现高并发处理能力,满足电商促销时大量订单涌入的需求,助力后端开发高效推进。

智能调试

错误检测与定位

AI可以分析代码的语法和逻辑结构,快速检测出代码中的错误。AI在代码生成和分析过程中,可以严格按照编程语言的语法规则进行操作,从而有效避免语法错误。例如,在生成Python代码时,AI会确保代码中的缩进正确、变量命名符合规范等。对于开发人员来说,语法错误是最常见的错误类型之一,AI的语法错误检测功能可以在代码编写的早期阶段就发现并纠正这些错误,提高代码的质量。通过对代码逻辑结构的分析,AI可以发现一些潜在的逻辑错误。与传统的调试方法相比,AI可以同时分析大量的代码,不受人类疲劳和注意力分散的影响,提高了错误检测的效率。

自动修复建议

除了检测错误,AI还可以针对一些常见的错误提供自动修复建议。例如,在Java代码中,如果存在空指针异常的风险,AI可以建议添加空指针检查代码。这有助于开发人员更快地解决问题,减少调试时间。

算法优化

性能分析与改进

AI可以对代码中的算法进行性能分析,找出算法中的瓶颈。例如,在一个排序算法中,AI可以通过分析算法的时间复杂度和空间复杂度,确定是否存在更优的算法或者是否可以对现有算法进行优化。它可以根据代码的执行情况和输入数据的特点,提出优化方案,如调整循环结构、使用更高效的数据结构等。

自适应算法调整

在一些复杂的系统中,如机器学习模型训练过程中,AI可以根据训练数据的变化和模型的性能表现,自适应地调整算法。例如,在神经网络训练中,AI可以根据损失函数的值和梯度下降的情况,自动调整学习率等超参数,提高模型的收敛速度和准确性。

软件开发中AI工具推荐

按类型分

大模型类工具

随着技术演进,大模型在逻辑推理与代码编写方面展现出卓越能力。以 OpenAI 的 o3 为例,其在编程竞赛中取得优异名次,超越了绝大多数程序员。最近国内的 deepseek v3具备出色的逻辑推理与代码生成能力。用户借助精准的 prompt 输入,可驱动大模型高效完成各类复杂任务,为软件开发赋能。

集成开发环境(IDE)类工具

在 AI 编码 IDE 领域,Cursor 功能特性与 Github Copilot 相近,二者的差异主要体现在部署形式上,Cursor 作为独立 IDE,而 Github Copilot 以插件形式嵌入,开发者可依据个人操作偏好与项目需求灵活选用,以实现高效编码体验。

插件类工具

Github Copilot 和 CodeGeeX 均是插件类代码编程助手。它们与主流 IDE融合,在开发过程中感知代码上下文,预测开发者意图,自动补全代码片段或提供编程建议,缩短了编码耗时,提升代码质量,无论是小型个人项目还是大型团队协作开发,都能优化开发效率。

按作用分

代码生成工具

Blackbox(https://www.blackbox.ai)功能全面且强大,不仅能够依据开发者需求生成结构清晰、逻辑严谨的代码,还涵盖代码分析、智能搜索、智能体构建以及 App 快速搭建等多元功能。同时,为适配不同开发环境,它提供了 Vscode 插件和 JetBrains 插件,方便开发者按需集成。

v0.dev(https://v0.dev/)专注于前端代码生成领域,对 TS + React 技术栈支持尤为出色,同时对 Vue 也有良好适配。其所生成的前端代码具备高可读性、高可维护性,并且创新性地搭载 OCR 功能,识别精度高,能在诸如将设计稿快速转换为代码的场景中发挥关键作用,大幅节省前端开发时间。

代码编程助手

CodeGeeX(https://codegeex.cn/)以免费且高效的特性吸引众多开发者。它能实时理解开发者正在编写的代码逻辑,在关键节点给出精准的代码补全建议、函数调用推荐等,有效辅助开发者流畅编码,降低代码出错概率,无论是新手入门还是资深开发者攻坚复杂项目,都能从中受益。

Github Copilot(https://github.com/features/copilot)作为付费插件,在代码编程助手领域占据领先地位。官方数据表明,可显著提升编程效率达 55%。

数据库客户端工具

NineData(https://9z.cloud/)为数据库开发与管理带来极大便利,支持多达 60 余种数据源,涵盖主流 NOSQL DB。免费版本已能满足日常开发者基本需求,提供 SQL 智能提示补全,让编写复杂查询语句更加轻松;支持自然语言生成 SQL,降低数据库操作门槛;配合 SQL 优化与性能分析功能,确保数据库高效运行;还具备数据备份功能,保障数据安全。对于有进阶需求的企业用户,企业版进一步提供索引推荐、智能数据恢复、数据库告警以及完善的 DevOps 审批流程,如 Table Schema 变更审批等,助力 DBA 精细管理数据库。虽当前仅提供 SaaS 版本,需通过网关连接本地,但持续迭代优化,如新增的存储过程代码翻译为 Java 代码功能,使其应用场景不断拓展。

自动化测试工具

UiPath(https://www.uipath.com/AI)支持开发者使用自然语言便捷描述测试需求,自动生成测试脚本并执行,大幅提升测试效率,尤其适用于大规模软件项目频繁迭代中的回归测试场景,精准捕捉潜在缺陷,保障软件质量,深受有一定经济实力、追求高效测试流程的企业欢迎。

未来发展趋势

更加智能的开发助手

随着AI技术的不断发展,未来的AI大模型将成为更加智能的软件开发助手。它们不仅能够在代码生成、调试等方面提供更准确、更高效的服务,还能够根据开发人员的编程习惯、项目的特点等因素提供个性化的建议。例如,对于一个擅长Python编程的开发人员,AI助手可以根据他的编程风格生成更符合他习惯的代码,并且在项目开发过程中,根据项目的复杂度和进度提供针对性的优化建议。

与软件开发流程深度融合

AI将与软件开发的各个环节进行深度融合,从需求分析到软件维护的全过程。在需求分析阶段,AI可能会通过分析大量的用户数据和市场趋势,自动生成需求文档的初稿,并且能够根据用户的反馈实时进行调整。在软件设计阶段,AI可以根据项目的需求和目标自动生成多种设计方案,并对方案进行评估和优化。在编码阶段,AI将不仅仅是生成代码片段,而是能够参与到整个项目的代码架构设计中。在测试和维护阶段,AI可以持续监控软件的运行状态,自动发现问题并进行修复。

推动低代码&无代码开发

AI大模型将为低代码&无代码开发平台注入新的活力。低代码&无代码开发平台旨在让非专业开发人员也能够创建软件应用,而AI可以进一步简化开发过程。例如,AI可以根据用户的需求自动生成低代码/无代码开发平台上的组件和工作流,并且能够对用户创建的应用进行智能优化。这将使得更多的企业和个人能够快速创建定制化的软件应用,加速数字化转型的进程。

四、AI大模型如何重塑软件开发:现状、优势与未来展望

(原创 听吉米讲故事 AI智能体研究)

AI大模型如何重塑软件开发:现状、优势与未来展望

引言

今天在CSDN上看到这个话题的讨论,就想着写一篇关于AI大模型如何重塑软件开发的文章,简单总结一下这段时间的实践和思考。最近一段时间,随着人工智能(AI)技术的不断发展,AI大模型正在迅速成为重塑软件开发流程的重要力量。从代码自动生成到智能化测试,从需求分析到系统运维,AI大模型正在深度影响着软件开发的各个环节。它不仅改变了开发者的工作方式,也为企业和整个产业链带来了新的机遇与挑战。本文我就简单探讨一下AI大模型的定义、应用场景、优势与挑战,以及未来发展趋势。

AI大模型的定义与特点

AI大模型(例如GPT4o,Claude3.5,Gemini1.5等)是基于海量数据训练的深度学习模型,具有强大的自然语言处理能力。它们通过学习人类语言和编程语言的语法、语义和上下文关系,能够理解、生成并优化代码。这些模型的核心特点包括:

  1. 强大的语言理解和生成能力:AI大模型可以理解自然语言需求,并将其转化为技术实现方案。
  2. 跨领域知识整合:由于训练数据覆盖广泛,AI大模型能够在不同编程语言、框架和工具之间灵活切换。
  3. 持续学习与优化:通过不断更新训练数据,AI大模型能够适应快速变化的技术趋势。
  4. 高效的人机交互:它们能够通过对话形式与开发者协作,完成从需求分析到代码生成的全过程。

这些特点让AI大模型在软件开发中具备了广泛的应用潜力,正在推动开发流程向智能化、自动化方向迈进。

AI大模型在软件开发中的应用场景

AI大模型在软件开发领域的应用场景十分广泛,从需求分析到系统运维的各个环节都能发挥重要作用。以下通过具体案例,展示AI大模型如何在不同阶段提升开发效率和质量。

1. 需求分析与设计

在软件开发的早期阶段,AI大模型可以帮助开发者快速完成需求分析和系统设计。例如:

  • 案例1:需求转化电商企业希望开发一个促销活动管理系统,产品经理只需描述“需要一个支持多种促销规则配置的系统”,AI大模型即可生成详细的需求文档,包括功能模块划分、数据库设计建议等。

  • 案例2:架构设计初创公司希望快速搭建一个用户管理系统,AI大模型根据需求生成了基于微服务架构的建议,包括用户认证模块、权限管理模块等。

2. 代码生成与优化

AI大模型在代码生成方面的表现尤为突出,已经成为开发者的重要助手:

  • 案例3:代码自动生成金融机构需要一个复杂的数据报表生成工具,开发者通过输入“生成一个支持多种图表的报表工具”,AI大模型输出了完整的前端代码,包括图表组件和数据接口。

  • 案例4:代码优化游戏开发团队在优化游戏性能时,AI大模型发现了关键的性能瓶颈,并建议优化算法和减少不必要的渲染调用,从而显著提升了帧率。

3. 测试与调试

软件测试和调试是开发过程中的重要环节,AI大模型在这方面也展现出了强大的能力:

  • 案例5:自动化测试用例生成物流公司开发了一套订单管理系统,AI大模型根据系统的功能模块自动生成了覆盖率高的单元测试用例,显著节省了测试时间。

  • 案例6:错误诊断与修复建议SaaS公司在上线前发现系统偶尔崩溃,AI大模型通过分析日志快速定位到内存泄漏问题,并提供了修复代码。

4. 运维与维护

在软件上线后的运维阶段,AI大模型同样能够发挥重要作用:

  • 案例7:日志分析与故障排查云服务提供商利用AI大模型分析海量日志,成功预测并避免了一次可能导致服务中断的数据库死锁问题。
  • 案例8:知识库构建大型企业通过AI大模型自动整理技术文档,构建了一个覆盖全面的知识库,便于新员工快速上手。

现代AI编码工具生态

随着AI技术的发展,2024年涌现出了许多革新性的开发工具,针对开发的不同阶段,极大地提升了开发效率:

1. Cursor AI编辑器

  • 作为新一代AI代码编辑器的代表,Cursor在2024年推出了全新的上下文感知功能,能够理解整个项目的代码结构。
  • 提供了业界领先的开发体验,集成了代码补全、重构建议和实时多文件编辑等功能。
  • 相比传统的GitHub Copilot,Cursor更注重开发者的实际编码体验,保留了编程的趣味性和创造性。
  • 支持多人协作和版本控制,成为团队开发的重要工具。

2. Claude Artifacts功能

  • Anthropic公司在2024年推出的Claude Artifacts功能,是Claude 3.5 Sonnet版本的重要特性
  • 支持文本、视觉和交互式内容的创建,特别增强了AI的编程协作能力
  • 能够生成交互式应用和完整项目结构,帮助开发者快速构建应用
  • 通过Claude.ai平台提供功能预览和使用

3. Bolt.new平台

  • 作为新兴的AI开发平台,Bolt.new提供了从编码到部署的一站式解决方案。
  • 创新的”Prompt-Run-Edit-Deploy”工作流程,大大简化了开发过程。
  • 特别适合快速原型开发和小型项目,能够显著减少从想法到上线的时间。
  • 提供直观的可视化界面,降低了使用AI开发工具的门槛。

AI大模型带来的优势

AI大模型带来的优势自然也是显而易见的,以下就简单总结一下:

1. 提升效率

AI大模型能够显著减少开发中重复性、机械化的工作。例如,自动生成代码和测试用例可以大幅缩短开发周期,让开发者将更多精力投入到创新性工作中。

2. 降低开发门槛

AI大模型降低了软件开发的技术门槛,使得非专业人士也能参与到开发中。例如,产品经理可以通过自然语言描述需求,直接生成代码原型。

3. 提高代码质量

通过代码优化、错误诊断和测试用例生成,AI大模型能够帮助开发者避免常见错误,确保代码质量更高、更稳定。

4. 促进创新

AI大模型的高效性和智能化使得开发者能够更快地进行原型验证和技术实验,从而加速技术创新。

AI大模型面临的挑战

尽管AI大模型为软件开发带来了巨大变革和机遇,但在实际应用中仍面临着诸多挑战。这些挑战涉及技术、管理和合规等多个层面,需要开发者和企业共同努力探索解决方案。

1. 技术挑战

  • 代码质量保障:AI生成的代码质量可能参差不齐,开发者需要对其进行严格审查。
  • 安全性问题:AI生成的代码可能存在安全漏洞,需要引入安全检测机制。
  • 模型局限性:AI大模型在处理复杂逻辑和特定领域问题时,可能表现出不足。

2. 组织与管理挑战

  • 开发流程调整:引入AI大模型后,传统的软件开发流程需要重新设计,以适应新的工具和方法。
  • 团队角色转变:开发者需要从单纯的编码者转变为AI模型的指导者和审查者。
  • 伦理与责任问题:AI生成代码的知识产权归属、错误责任划分等问题需要进一步明确。

3. 数据隐私与合规性

AI大模型的训练和使用需要大量数据,这可能涉及用户隐私和数据合规性问题。企业需要在使用AI大模型时加强数据保护措施,确保合规。

未来发展趋势

1. 智能化开发平台的普及

AI大模型将与开发工具深度融合,形成一体化的智能开发平台。这些平台将覆盖需求分析、代码生成、测试部署等全流程,进一步提升开发效率。

2. 人机协作模式的优化

未来,开发者与AI大模型的协作将更加紧密。开发者将更多地扮演设计师和监督者的角色,而AI大模型负责完成具体的实现工作。

3. 行业定制化模型的兴起

针对特定行业需求的定制化AI大模型将逐渐兴起。例如,金融行业的专用模型可以更好地理解行业规范和需求,生成更符合业务场景的代码。

4. AI辅助决策的普及

AI大模型不仅会辅助开发,还将逐步参与到技术决策中。例如,帮助企业选择最佳的技术栈、评估系统架构方案等。

5. AI开发工具的融合与进化

各类AI开发工具将逐渐融合,形成更完整的开发生态系统。不同工具将在各自的优势领域深耕,进一步优化开发者的体验。

6. 企业采用策略

企业需要根据项目规模和需求选择合适的AI工具组合,同时加强团队培训和安全合规性,以实现AI工具的价值最大化。

结语

AI大模型正在以惊人的速度重塑软件开发流程,为开发者、企业和整个产业链带来了前所未有的机遇。然而,面对这一技术变革,我们也需要正视其挑战,积极探索解决方案。在未来,随着技术的不断进步和应用场景的拓展,AI大模型必将成为推动软件开发迈向新高度的重要引擎。

对于开发者而言,拥抱AI大模型不仅是一次技术升级,更是一次思维方式的转变。通过与AI的深度协作,我们将迎来一个更加智能、高效和创新的软件开发新时代。而对于普通用户来说,AI大模型也将成为我们工作和生活中不可或缺的一部分,它将极大地提高我们的工作效率和生活质量。

希望本文能够为大家提供一些启发,让我们共同期待AI大模型在软件开发领域创造更多的可能性!

五、7个关键问题:大模型技术能彻底改变软件开发的未来吗?

(飞算科技)

自ChatGPT等大模型问世以来,为我们打开了软件智能化开发的巨大想象空间。大模型的推理能力,尤其是在代码学习方面的表现,为软件工程带来了新的机遇。代码生成,作为大模型的一个明确应用场景,已经成为企业和研究者关注的焦点。大模型技术真能彻底改变软件开发的未来吗?
软件的智能化开发现状
在大模型的热潮下,许多开发人员已经开始在日常工作中借助大模型来辅助完成各种开发任务。企业也在训练自己的代码大模型,以获得更好的特定领域代码生成和理解效果。但是,大模型在解决软件工程的深层次问题上并没有那么强,我们需要从软件工程的角度认真思考其中的根本性问题,并深入探索可能的方法和技术创新。
01
局部智能化支持成为常态
基于大模型的代码补全、推荐、解释和问答等智能化支持得到了广泛应用。这些工具通过人机交互和产品设计上的创新,显著提高了开发人员的智能化体验。然而,这种智能化开发支持很大程度上仍然是局部性的,对项目和企业层面的影响有限
02
开发人员的分化加剧
大模型的应用加剧了开发人员的分化。普通开发人员和专家型开发人员在软件开发效率和质量上存在巨大差异,这一差异随着大模型的应用被进一步放大
03
软件维护类任务支持有限
大模型对于大规模复杂软件的理解能力有限,难以有效定位问题并提供智能化辅助支持。尽管有些工作关注于利用基于大模型的多Agent技术来自动修复issue,但这些issue往往比较容易定位
04
滥用大模型可能带来质量隐患
大模型的自动生成能力可能会激发人性中的“懒”和“恶”。开发人员可能会在没有仔细推敲和深刻理解的情况下提交大模型生成的代码,导致大量未经深思熟虑的代码进入企业代码仓库
探索智能化开发的新路径
面对大模型时代的挑战,我们需要探索新的智能化开发路径,以实现更高层次的系统性智能化开发。
01

人机协作演进式应用生成

软件开发是一个探索性认知过程,需要引导大模型逐步理解和掌握软件的整体上下文。演进式设计是一个有效手段,它允许大模型在迭代过程中不断对软件设计方案进行微调
05
DSL与大模型相结合的应用生成
低代码开发以DSL为基础,而DSL是业务和技术领域专家知识的一种凝练。DSL与大模型相结合的应用生成是知识与数据双驱动的智能化技术发展路径的又一例证
06
基于大模型的代码数字孪生
企业软件开发中的维护型任务的一个主要问题在于知识的缺失。基于大模型的代码数字孪生试图以一种与代码双向映射、协同演化的方式抽取、积累并持续更新关于代码的高层知识
在智能化时代,大模型技术的发展为软件开发领域带来了前所未有的机遇和挑战。基础大模型及其微调技术、提示工程、检索增强以及多Agent技术等与大模型相关的技术发挥着关键作用。企业实践中,代码推荐、片段生成、代码解释、代码重构、缺陷检测与自动修复等局部智能化支持已经得到了广泛应用。
尽管如此,我们必须承认目前大模型主要在一些局部任务上发挥作用,而在更大范围和更高层次上提供智能化支持的能力仍然有限。更系统的智能化开发能力仍然集中在少数专家手中,因为其中涉及如何将人类的问题分解、设计规划、代码审查和问题反馈能力与大模型的自动生成能力有效结合。
飞算科技,作为新一代数字化技术服务专家,依托于互联网技术、大数据和人工智能技术积累,结合在多个行业领域的实战经验,将理论与实践深度融合,不断探索为客户提供更高效、更定制化的软件开发解决方案。
在这一探索过程中,飞算科技自主研发的智能开发工具——SoFlu软件机器人,成为了变革的利器。SoFlu软件机器人融合了大模型技术以及互联网架构的实战经验,通过可视化、标准化和自动化的开发方式,彻底改变传统的软件工程作业模式。
它不仅推动了敏捷数据工程和持续集成实践的发展,还使得企业用户能够以低于市场价50%的成本,获得高达传统方式十倍的开发效率,同时确保了软件项目的高质量交付。这种效率的提升和成本的降低,极大地增强了软件开发的性价比,为企业在激烈的市场竞争中赢得了先机。


本公众号声明:

1、如您转载本公众号原创内容必须注明出处。

2、本公众号转载的内容是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请作者或发布单位与我们联系,我们将及时进行修改或删除处理。

3、本公众号文中部分图片来源于网络,版权归原作者所有,如果侵犯到您的权益,请联系我们删除。

4、本公众号发布的所有内容,并不意味着本公众号赞同其观点或证实其描述。其原创性以及文中陈述文字和内容未经本公众号证实,对本文全部或者部分内容的真实性、完整性、及时性我们不作任何保证或承诺,请浏览者仅作参考,并请自行核实。

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 大模型时代的软件开发何去何从︱大模型研发管理

评论 抢沙发

5 + 9 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮