软件2.0初具规模:软件行业如何借助人工智能提高效率? - kdnuggets


IT行业尤其是软件开发行业一直是AI的早期践行者。在这篇文章中,我们描述了机器学习和AI在软件开发的不同方面的一些早期应用。我们还描述了在未来几年内将AI用于软件开发的领域将会加速发展的领域。
当今的软件开发通过连续集成(CI)和连续部署(CD)的视角来实现软件自动化,这是两种广泛使用的软件工程开发实践。大型软件项目涉及多个工程师,负责共享代码库的副本。CI是一种要求团队成员更频繁地集成其工作的惯例,因此可以更快地发现并定位错误。CD是一种软件工程方法,其中将通过自动测试的代码更改自动部署到生产中。
我们开始看到使用AI使 代码开发的某些 方面自动化的解决方案,包括通过程序综合,智能代码完成和静态代码分析自动创建代码的解决方案。
 
​​​​​​​代码开发 
这是软件生命周期中自动化程度最低的过程,因为上半个世纪创建的工具使当今的开发人员更加高效。与30年前使用的语言相比,如今的编程语言是高级的。尽管这些语言使开发人员更加高效,但由于对开发人员的需求仍然超出供应,因此需要更好的工具。例如,Codata&Kite是  使用AI来提高代码质量和强制合规性的“智能代码完成”产品。
将出现一系列旨在进一步增强和增强开发人员能力的工具:

  1. 来自OpenAI的最新 示例 显示了一种语言模型,该模型能够在使用Microsoft超级计算机在GitHub代码存储库上进行训练后生成Python代码。
  2. 涉及神经支持生成器的早期示例(Autopandas) 提示了一些工具 ,这些工具使开发人员无需掌握复杂的API即可在库和框架中高效工作。它涉及到用户指定所需的输入和输出,而Autopandas会生成用于生成输出的最佳程序。可以为数据密集型流程构建类似的工具,包括ETL,数据建模,仪表板等。
  3. Facebook AI的另一个 最新示例 潜在地为将代码迁移到现代或更高效的编程语言的工具铺平了道路。它演示了如何将无监督的机器翻译应用于源代码以创建转编译器。

我们相信,向微服务的转变为自动化开辟了可能性,并将为支持AI的软件开发工具带来更多机会。将软件分成更小的部分为高度针对性的自动化解决方案铺平了道路。
 
软件测试 
利用计算机视觉(CV)和自然语言处理(NLP)的深度学习正在进展。想象一下一个带有GUI和测试机器人的软件应用程序,它能够识别和理解文本框和其他界面元素。可以启用同一机器人来自动创建测试套件。这描述了今天的情况。一个例子是Mesmer,这是 一家致力于自动化客户体验测试的机器人过程自动化公司。
展望未来,我们相信下一代自动化工具将把这些功能提升到另一个层次。想象一下一组AI代理,它们可以从应用商店中下载和测试软件,并在此过程中学习设计和实现软件的更好方法。这些AI代理可以提供定制的应用程序开发服务,类似于Wix为网站开发提供的服务。
 
代码分析与合规性 
这是我们将看到AI兴起的另一个领域。机器学习和AI将帮助组织发布遵循推荐的开发原则的更好的代码,提供有关关键漏洞的警报,并进行全面的静态代码分析。我们开始在这些领域看到一些采用AI解决方案的公司,并且我们希望未来还会有更多公司。
 
应用程序监视
AIOps解决了对操作支持的需求。AIOps结合了数据分析和机器学习功能,以分析IT系统生成的数据。AIOps平台增强了广泛的操作范围,包括异常检测,事件关联,预测和根本原因分析,以改善监视和可观察性以及服务管理。这是一个活跃的领域:现有的“基于规则的”应用程序监视解决方案开始增加机器学习,而像Anodot这样的新公司  则为应用程序监视提供异常检测和预测
 
自动化任务
软件的哪些特定领域是自动化和AI技术的主要候选者?我们认为,有两个关键要素对于寻找自动化的候选人很重要:(1)专注于使用频繁的系统或频繁发生的任务,(2)必须经常调整或调整的系统。一些示例包括:
  • 数据管理系统:有自动驾驶数据管理系统的早期描述和示例 ,以及展示了使用机器学习来学习联接和索引或管理多个存储引擎的简单系统。
  • 仪表盘:我们一直希望自动创建仪表盘,而不是通过手动和繁琐的过程来从数据仓库和报表工具中创建它们,而已!用户体验和表示方式也很重要:用户淹没在图表和警报中。理想情况下,机器学习和AI可以浮现正确的图表,趋势和相关性。像Anodot和Sisu这样的初创公司有一些早期的,部分的例子,但是我们预计在未来的几年中会有很多进展。
  • 网站和移动应用程序:我们期望AI能够带来高度个性化的网站和应用程序。少数技术公司正在使用实时数据进行在线学习和 强化学习, 以提供高度个性化的用户界面。我们希望这些工具和技术在不久的将来变得更容易使用。
  • UX和设计工具:用于创建和编辑数字媒体的工具中开始出现简单的自动化和脚本编写。机器学习有可能将自动化提升到另一个层次。有使用深度学习和强化学习(RL)来帮助游戏设计师的早期示例。设计是视频游戏中昂贵且重要的部分。可以使用来自计算机视觉的新工具(例如GAN)来增强游戏设计师的能力 。一个更复杂的示例是使用强化学习来训练  游戏中的非玩家角色