写给技术管理者的低代码手册系列文章(17)——第六部分:AI辅助开发技术与低代码的结合路径(第一章)
写给技术管理者的低代码手册系列文章(1)——从软件工程视角理解低代码的价值、边界与演进路径 写给技术管理者的低代码手册系列文章(2)——第一部分:低代码诞生的背景【第一章】 写给技术管理者的低代码手册系列文章(3)——第一部分:低代码诞生的背景【第二章】 写给技术管理者的低代码手册系列文章(4)——第一部分:低代码诞生的背景【第三章】 写给技术管理者的低代码手册系列文章(5)——第二部分:低代码的概念、价值与发展现状(第一章) 写给技术管理者的低代码手册系列文章(6)——第二部分:低代码的概念、价值与发展现状(第二章) 写给技术管理者的低代码手册系列文章(7)——第二部分:低代码的概念、价值与发展现状(第三章) 写给技术管理者的低代码手册系列文章(8)——第二部分:低代码的概念、价值与发展现状(第四章) 写给技术管理者的低代码手册系列文章(9)——第二部分:低代码的概念、价值与发展现状(第五章) 写给技术管理者的低代码手册系列文章(10)——第三部分:低代码的技术原理与工程基础(第一章) 写给技术管理者的低代码手册系列文章(11)——第三部分:低代码的技术原理与工程基础(第二章) 写给技术管理者的低代码手册系列文章(12)——第三部分:低代码的技术原理与工程基础(第三章) 写给技术管理者的低代码手册系列文章(13)——第四部分:低代码的典型应用场景与价值呈现(第一章) 写给技术管理者的低代码手册系列文章(14)——第四部分:低代码的典型应用场景与价值呈现(第二章) 写给技术管理者的低代码手册系列文章(15)——第四部分:低代码的典型应用场景与价值呈现(第三章) 写给技术管理者的低代码手册系列文章(16)——第五部分:低代码应用的管理挑战 软件开发领域存在一个持续了半个多世纪的梦想,那就是通过更好的工具替代开发者。这个梦想每隔十年左右就会以新的技术形态重现一次。 1970年代,COBOL的设计理念是“使语法可读性足够强,理解业务的人可以编写代码”,结果发现仍然需要专业程序员。1980年代,CASE工具(Computer Aided System Engineering,例如UML、E-R等)承诺通过图表生成代码,最终也未能兑现。1990年代,Visual Basic等可视化工具扩展了参与者范围,但并未消除对专业开发的需求。2010年代以后,低代码平台延续了同样的愿景。而当下,生成式AI被认为是最有能力实现这一目标的技术。 与过去不同的是,AI已经展现出了前所未有的代码生成能力,它能够理解自然语言、生成可运行的代码片段,甚至在某些场景下直接输出完整的应用原型。这一能力的飞跃,让人们重新审视一个问题,当AI已经能够写代码,软件开发是否正在走向全面自动化?这一问题进一步引出了对低代码技术的质疑,既然AI可以绕过设计器、模型与配置,直接输出可执行代码,那么低代码是否正在成为一种过渡性的技术?或者更激进地说,低代码是否只是“在AI辅助编程成熟之前,用来弥补开发效率不足的临时方案”? 本文试图从软件工程的基本原理出发,对上述判断给出一个更为冷静、也更具解释力的回答:AI辅助开发需要元数据驱动加可视化审查作为监管载体,而不能依赖传统的代码审查体系。而低代码恰好是一个不错的解决方案。 要回答上述问题,必须首先厘清一个基础判断,AI是否已经具备独立承担企业软件开发的能力? 如果答案是肯定的,那么低代码确实可能成为过渡性技术;但如果答案是否定的,那么问题就变成了AI在企业软件开发中的真实位置是什么,以及需要什么样的工程体系来支撑它发挥作用? 在展开具体讨论之前,有必要先回顾企业软件区别于其他软件领域的几个基本特征。这些特征对后续的讨论非常重要。 这些特征意味着,企业软件领域对“工程治理”的需求,比面向消费者的应用或工具型软件更为迫切。而这,正是软件工程这个学科诞生的原动力。 我们必须承认,AI在辅助开发领域具备非常强大的能力,可以将自然语言描述转换为代码文本。例如,当开发者描述创建一个订单详情页面,包含客户名称、订单金额和提交按钮时,大模型通常可以快速生成一段前端组件代码,甚至配套生成一个简单的后端接口。这种体验,很容易让人产生一种系统已经被写出来了的错觉。 图:AI辅助开发工具的运行界面 但是,软件工程的核心目标,并不是生成一个看起来能跑的结果,而是构建一个在给定约束条件下,行为可预测、结果可复现的系统。需求评审、设计建模、测试与上线,本质上都是在不断压缩不确定性。 而生成式AI的工作机制建立在概率性推断之上。即便输入保持一致,模型在不同上下文状态下生成的结果,也可能在架构、命名与实现路径上存在差异。这种不确定性在内容创作领域是优势,但在工程体系中就成为了天然的风险。 这并不意味着AI生成的代码本身不可靠,而是说它并不具备工程系统所要求的那种内生确定性。工程中的确定性,来源于显式规则、结构化约束与一致的解释机制,而非统计相似度。这正是为什么需要人类监管的第一个核心原因:必须有人来验证AI生成的内容是否符合工程确定性的要求。 为了帮助理解这一点,我们可以将AI辅助开发中的AI类比于一名的全栈程序员,小C,他的知识很全面,前后端代码的产出效率都很高。小C以“远程办公”的形式通过了公司的招聘后,就和其他开发者一样参与到开发工作中。唯一的不同,是小C没有和团队成员有任何形式的工作外交流,公司甚至无法通过合同对他进行约束。在这一背景下,公司该如何对他进行管理呢?会直接将企业软件的端到端工作(从业务需求到可执行的软件)交给小C来独立交付吗?我们的答案是否定的。我们大概率会将为小C配套同级评审的开发人员与测试人员,从代码和成果两个层面,对他的产出进行验证。 更麻烦的是,真实的软件工程并非一次性完成,而是在长期迭代中逐步演进。每一次需求变更、架构调整或性能优化,都会对系统既有结构产生影响。AI的不确定性会放到这些影响,很可能会将其转换为三类严重的系统性风险: 从工程角度看,问题的根源在于AI加速了实现的生成,但没有建立结构的约束。每一次AI生成代码,都是在无边界文本空间中进行概率推断,而不是在有明确语义的结构空间中进行规则填充。这就导致了AI的概率性输出带来的风险会在多轮迭代中不断累积,导致系统逐渐偏离原有设计意图。最终,系统大概率会呈现出一种每个局部都看似合理、整体却难以理解的状态,不得不通过人工重构来重新建立秩序。 这表明,AI辅助开发在企业软件开发领域的问题并不局限在单次生成是否正确,而在于是否具备在长期演进中自我约束与保持结构稳定的能力。这是为什么需要人类监管的第二个核心原因,必须有人对系统的长期演进负责,确保每一次变更都不会破坏既有的工程基础。系列文章
引言
第一章 AI需要在人类的监管下构建企业软件
1.1 企业软件的特殊性
深入了解企业软件的工程治理水平如何决定软件的可维护性与质量,请移步:第三部分的第一章
1.2 确定性:解决概率性输出与工程确定性之间的根本矛盾
1.3 长期可演进性:避免长期迭代带来的系统劣化