编程与软件开发

使用人工智能编程代理改进软件工程的五种实践

Pierre Pureur、Kurt Bittner 和 Todd Miller 介绍了使用人工智能编程代理的五种实用方法:记录旧有服务、发现架构缺陷、开展安全审计、为应用程序构建初始基础,以及测试可扩展架构。文章强调,代码生成速度并不能替代对架构质量要求的明确界定和对结果的人工审查。

2026-09-28
1 分钟阅读
2 浏览量
certi.news Editorial Team
使用人工智能编程代理改进软件工程的五种实践

人工智能编程代理可以帮助软件团队处理超越单纯编写代码的架构问题,但其价值取决于团队所明确设定的目标和约束。由 Pierre Pureur、Kurt Bittner 和 Todd Miller 撰写、Daniel Bryant 审阅并发表于 InfoQ 的文章提醒称,仅向代理提供功能需求,并不能保证获得可扩展、安全或易于维护的架构。

所提出的方法以质量属性需求(Quality Attribute Requirements,或 QARs)为基础,例如性能、安全性和可扩展性,并明确代理应考虑的权衡。文章还强调,必须使用明确的指标测试代理生成的内容,而不能仅仅检查代码或相信其建议。

1. 在依赖旧有服务之前记录其文档

现代架构可能依赖某个执行特定功能的旧有服务,例如从基于 IMS 数据库的旧系统中检索保险单据数据。问题在于,这些服务可能缺乏准确的文档,从而难以理解数据流,也难以发现可能在开发后期或迁移到生产环境后才出现的逻辑和安全缺陷。

代理可以绘制服务设计图并记录数据流,然后检查代码;如果服务难以理解和维护,还可以提出修复或重构建议。但这种使用方式并不能取消人工工程决策的必要性,即判断该服务是否值得保留,或者其风险是否要求将其替换。

2. 寻找架构缺陷

可以指导代理查找违反架构标准的情况、退化的编程实践,或需要重构的部分。检查示例包括应用程序编程接口的设计、复杂或不安全或低效的接口,以及违反领域驱动设计(DDD)边界的情况。

文章指出,代理通常会发现许多改进点,因此团队必须区分重要问题和低价值建议。当工程师明确可衡量的目标、已知替代方案和清晰的权衡,而不是仅仅描述所需功能时,结果质量会得到提升。

3. 在隔离代理的情况下开展安全审计

可以使用代理绘制数据流、确定高风险文件、检查复杂的逻辑缺陷、创建模拟利用尝试的测试或脚本,然后为发现的问题提出补丁。文章介绍了一项涉及被归类为存在安全风险的 npm 包的实践:其中两个包得到更新,一个包被替换,另一个包则在该警报被认定为误报后继续保留。

但这种使用方式需要明确的运行限制:将代理的访问范围限制在获准文件内,隐藏数据库密码和机密信息,在隔离网络中运行测试,并要求在合并任何更改之前进行人工审查。

4. 为原型构建架构基础

代理的速度可以快速构建原型,但如果没有为其设定架构目标,生成的原型可能只是临时性的,并不具备可用性。文章建议准备预先搭建好的结构化应用模板,其中包括代码编写风格、数据库设计、接口、首选平台和框架,以及以 Markdown 格式编写的 QARs。

还可以使用 GitHub 模板统一应用程序的初始结构,并从一开始就纳入团队标准。更好的做法是描述目标、约束以及验证目标是否实现的方法,而不是预先强制代理采用详细解决方案。

5. 生成可测试的初始架构

文章建议使用代理创建最小可行架构(Minimum Viable Architectures,或 MVAs),使其不只是用于证明功能的代码,还包括验证 QARs 所需的测试、测试数据和运行环境。代理可以生成测试工具和容器配置,但团队必须确认测试确实衡量了所要求的属性。

还应评估 MVA 是否能够应对架构变更场景,因为如果自动生成的架构并非为演进而设计,扩展它可能会变得代价高昂。

实际会发生什么变化?

文章的核心观点是,编程代理让代码生产更快,但也提高了对需求、约束和测试进行表述的重要性。与编写代码相关的技能并不会消失,但确定应该构建什么、什么才算可接受的质量,以及如何进行衡量,会变得更加关键。因此,应将代理视为受架构监督的工具,而不是工程判断的替代品。

新闻来源
InfoQ - Architecture Articles
查看原始来源 ↗
c
作者

certi.news Editorial Team

同一分类

你可能还喜欢

查看所有新闻