第11章 超越代码生成:人工智能增强开发的未来
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
Vibe 编码可能始于人工智能根据我们的提示生成 代码,但其影响远远超出了编写代码的范畴。 随着人工智能技术的发展,它们将改变软件开发生命周期的方方面面。在本章中,我将对人工智能在软件中的作用如何在未来扩展进行推测,但也会提供相关信息。我将探讨人工智能驱动的测试、调试和维护;人工智能如何影响软件设计和用户体验个性化;人工智能辅助下的项目管理演变;甚至编程语言本身的未来。我们的目标是想象这样一个未来:人工智能不仅仅是代码生成器,而是软件工程的全面参与者--同时将讨论建立在基本原则的基础上,因此即使具体技术不断发展,讨论仍然具有现实意义。
测试、调试和维护中的人工智能
想象一下,在未来的开发环境中,只要您编写了一个函数(无论是手工编写还是动态编码),人工智能工具 就会立即为其编写一套单元测试,发现潜在的错误,甚至修复它们--所有这些都只需要几秒钟的时间。这种情况很快就变得可信了。让我们来分析一下人工智能在质量保证和维护方面的潜在(和已经出现的)贡献。
自动生成测试
编写全面的测试非常耗时,而且往往会因为截止日期而被忽视。 正如第 7 章所述,当前的人工智能助手可以通过自动生成测试来缓解这一问题。例如,在给定一段代码后,人工智能可以提出一套涵盖典型案例、边缘案例和错误条件的单元测试。
未来,这可能会更进一步:人工智能可以检查你的整个代码库,找出测试覆盖率不足的函数或模块,并生成额外的测试。它甚至可以模拟人类测试人员不会想到的输入(如模糊测试),从而捕捉到可能存在的角落错误。这样做的好处是,只需编写最少的人工测试,就能获得更强大的代码库。
需要注意的是,测试的好坏取决于人工智能对规范的理解。因此,人类应该对人工智能生成的测试进行审查,确保它们与软件的预期行为一致。例如,人工智能可能会断言某种输出在技术上是代码所做的,但也许需求是不同的--只要有人类在回路中,这实际上有助于捕捉代码或测试中的误解。
智能调试
调试通常需要通过乏味的日志搜索或代码步进来定位错误源。 第 5 章向你展示了人工智能如何像智能调试伴侣一样发挥作用。目前的一些人工智能工具可以将错误信息和有问题的代码作为输入,并返回解释和代码更改来修复错误。
如果想了解人工智能辅助调试工作流程的发展,可以考虑使用人工智能系统来监控程序的执行,当出现崩溃或异常时,它会分析堆栈跟踪和变量状态,找出可能的原因。它不会只给你一条错误信息,而是会说:"你的程序出错了:
调用 getEmail() 时,由于 userProfiles 为空,应用程序崩溃。这表明在加载用户配置文件时缺少 null 检查。
此外,人工智能还能提出修复建议:
可能的解决办法是在 userProfiles 为空的情况下对其进行初始化,或者在调用 getEmail() 之前添加一个条件。您希望我应用此修复方法吗?
未来的调试人工智能可以直接与运行环境集成,实时捕捉问题。它们甚至可以通过分析代码路径,在问题发生之前就预测出来:
如果在 y = 0 的情况下调用该函数,可能会引发除法归零异常;请考虑处理这种情况。
这与静态分析类似,但人工智能掌握了无数代码库和错误模式的知识,因此可能更具洞察力或灵活性。
预测性维护和重构
随着 时间的推移,需求会发生变化,代码也会变得过时或不理想。维护涉及重构(在不改变行为的情况下改进代码结构)、更新依赖关系和优化性能等活动。人工智能可以在这些方面提供帮助: ...