- 软件开发、设计
- ai
随着科技的发展,AI 技术也在不断的发生变化,AI与软件工程的融合会是一种新的突破方式,通过下面的文章,我们一起看看这两者的融合需要了解什么吧!
软件开发人员依靠确定性而蓬勃发展。如果您向程序提供一组输入,您将始终获得相同的输出。在软件历史的大部分时间里,软件完全建立在确定性逻辑的基础上。
我们甚至有一个术语:自上而下的编程。所有算法都遵循一条路径,其分支也基于预期的逻辑。当我们调试代码时,我们会一遍又一遍地沿着相同的路径运行,找到行为偏离预期的地方,并使其回到正轨。 确定性和确定性逻辑适用于许多软件。但现实世界并非如此。相比之下,AI是概率性的。答案从来都不准确。相反,AI使用模型来预测行为,然后生成该行为。 也许描述这一点的最佳方式是传统软件与AI的更新方式。传统软件会获得更新和补丁。AI可以学习、自行进化、理解并吸收用户反馈,无需人工干预。这使得传统软件更加精 通过将AI应用到软件工程中,我们可以两全其美:既精确又灵活的软件。本文将探讨这次合并,以及它对开发人员和工程师以及他们的作品的用户意味着什么。 一、AI与软件工程的融合 如今,开发人员有机会使用AI作为其编码过程的一部分。新的AI工具可帮助创建代码、查找错误、设置测试套件以及生成测试和示例数据。在某些方面,AI可以帮助提高开发人员的工作效率,减少重复性任务所花费的时间,发现缺陷,并帮助经验不足的开发人员像经验丰富的开发人员一样编写代码。 但也有一个缺点:AI是出了名的不可靠。您需要能够检查其工作。AI目前的工作具有明显的信心,即使结果不正确,也使其结果看起来正确。因此,如果您不具备与您要求其处理的主题相关的技能、知识和经验,您将无法判断它何时出错。 也就是说,AI可以为开发、维护和测试代码的过程提供巨大帮助。虽然并非所有事情都会受益,但在这个过程中的某些时刻,AI可以介入并减少所需工作量数小时甚至数天。 但这不仅仅与生成代码有关。这也与生成的代码有关。AI和软件工程的融合将使开发人员能够创建更加智能、以用户为中心的应用程序,并且软件用户的体验将比传统的手工编码应用程序更加灵活和动态。 随着时间的推移,我们将看到一些应用程序基于实时用户反馈而动态发展,而一些软件甚至可以在用户遇到错误和不兼容性之前先行解决它们。它永远不会是完美的,但它肯定有助于使软件变得更好。 二、日常软件任务中的AI:真正的好处是什么? 这一切听起来不错,对吧?但让我们归根结底:软件工程中的AI到底是什么,可以让开发人员有额外的时间看《神秘博士》、和狗玩耍,或者:睡觉?让我们看看我们想到的五个领域。 有大量非常枯燥、平凡的任务需要开发人员的技能,但一点也不有趣。一个例子是帮助编写重复的代码块。 编码员长期以来都能够设置他们的 IDE 来填写代码块,就好像它们是宏一样,但AI可以学习代码块的模式和意图,并帮助使用程序员或组织的风格生成它们,而无需预先准备。 – 对它们进行编程。它可能会建议:“我以前见过你写过这样的代码。你想让我为你构建它吗?”。 是的,这可以帮助开发人员专注于更具创造性的工作,但它也可以在代码之间引入一致性,而不需要开发人员尝试将代码适应限制性模式。 这是AI可以根据模式和趋势预测代码行为的地方。AI工具可用于预测系统过载,预测用户行为,可能优化用户体验,并对需要改进的领域进行预先维护。另一个巨大的好处是随着运行平台的变化和更新而更新代码以满足最低要求。 除了节省编程时间之外,该软件几乎完全可以自行变得更加可靠和有弹性。 代码总是需要测试。典型的循环包括一些编码、一些测试、一些修复……冲洗、清洗、重复。然而,由于AI可能能够预测软件行为,因此它们甚至可以在测试开始之前标记错误。 开发环境长期以来能够标记语法和类型转换错误,这涉及语言结构的知识。但是,如果开发环境可以开始标记逻辑错误,这可能会大大加快代码交付速度并减少给定项目所需的修复阶段的数量。 大多数软件项目一旦完成,就需要近乎持续的维护水平,以跟上发现的错误、平台的变化和性能问题。我编写了一款有助于促进非营利捐赠的软件,我至少花费了80%的时间来响应用户请求或添加新功能,而只是根据支付网关不断变化的要求重写代码。如果我可以减少任何吃力不讨好且繁琐的维护工作,就可以为用户提供更多的价值。 尽管在开发环境中添加了AI,但所有迹象都表明,在可预见的未来,程序员——真正的人类程序员——将创建大多数软件。 减少时间和乏味当然可以帮助开发人员保持敏锐,但AI还可以监控团队的整体绩效,如果团队成员被过度利用、过度劳累或走向倦怠,则向经理提供通知。它还可以帮助重新分配团队任务,使每个成员都能发挥自己的优势,并帮助进行规划和资源分配。 随着技术复杂性的增加,也存在一些问题。在本节中,我将讨论三个值得关注的领域。 这是我对软件工程中的AI最大的担忧:随着我们在越来越多的代码中使用AI,我们对其工作原理的了解会越来越少。如果您曾经从其他人那里继承过一个项目,特别是当该组织或开发人员无法提供咨询时,您就会明白我的意思。 AI生成的内容将比您和您的团队编写的代码更像是一个黑匣子,而且风险在于,一旦生成,人类将很难维护。不要陷入期望AI维护自己的软件的陷阱。当AI的代码出现问题时,你和你的团队就需要找出问题所在并进行修复。 AI依赖大量数据来创建模型。如果您不使用公共模型——例如,如果您正在研究公司独特的领域专业知识——可用于训练AI的总数据集可能不够。 此外,AI系统会在广泛的数据集上进行训练,但并非所有数据都达到您想要完成的工作所需的质量水平。 我不断提醒人们,将AI引入软件工程项目就像雇用一群有才华的暑期学生。他们可能很聪明,速度很快,但他们会时不时地丢球,他们离开后你就会有烂摊子需要清理。虽然你的AI不会离开,但它会给你留下一些它无法解决的问题。1. 重复性任务的自动化
2. 预测分析和提高软件可靠性
3. 加快开发/测试周期
4. 降低软件维护成本
5. 保持人的因素
三、AI在软件工程中的挑战和局限性
1. 增加了复杂性和维护挑战
2. 数据依赖