如今,很多软件开发人员正在使用人工智能技术帮助编写和审查代码、检测错误、测试软件,并优化开发项目。这帮助企业更有效地部署新软件,并使新一代开发人员更轻松地学习编程。
这是调研机构德勤公司最近发布的一份有关软件开发采用人工智能技术的调查报告得出的结论。报告的作者David Schatsky和SourabhBumb描述了在过去的18个月中多家公司如何推出几十个人工智能驱动的软件开发工具。并且其市场正在增长。致力于软件开发的人工智能初创企业在2019年获得了7.04亿美元的投资。
新工具可以帮助软件开发人员减少工作量,在编写软件时检测错误,并自动执行许多确认软件质量的测试。在当今越来越依赖开放源代码的时代,这一点很重要,因为开放源代码可能会带来一些错误。
尽管有些人担心采用自动化技术可能会使编程人员失去工作,但调查报告的这两位作者认为不太可能。
Schatsky说:“在很大程度上,这些人工智能工具是在帮助和增强人类的能力,而不是取代他们。这些工具有助于使编码和软件开发民主化,使一些编程新手能够填补人才缺口,学习新技能。人工智能技术还可以进行代码审查,并提供质量保证。”
调研机构Forrester公司在2018年进行的一项研究发现,从事软件开发的企业中,37%的企业正在使用由人工智能驱动的编码工具。Tara、DeepCode、Kite、Functionize和DeepTabNine等许多公司提供自动化编程服务,而在2020年这一比例将会更高。
成功应用似乎正在加快这一趋势。Schatsky说:“除了节省成本和时间以外,许多采用这些人工智能工具的企业还改善了最终产品的质量。”
德勤公司的研究表明,人工智能可以帮助缓解软件开发人才长期短缺的现象。去年,软件质量不良使美国企业损失了3190亿美元。人工智能的应用具有缓解这些挑战的潜力。德勤公司的分析人员认为人工智能可以在软件开发的许多阶段提供帮助,其中包括:项目要求、编码审查、错误检测和解决,以及通过测试、部署和项目管理提供的更多帮助。
IBM工程师从Watson项目中学到的人工智能开发经验
IBM公司的杰出工程师Bill Higgins是IBMWatson开发人工智能任务团队负责人,有着20年的软件开发工作经验。他最近发表了一篇有关人工智能对软件开发的影响的研究报告。
Higgins说,“企业需要放弃以往开发软件的模式。如果开发人员难以适应,那么企业适应的难度将远远超出开发人员。事实证明,企业管理人员缺乏人工智能方面的经验也是一种优势。因为他必须经历这一学习过程,因此对需要适应的开发人员有了更深刻的理解和同情。”
他表示,为了了解软件开发中的人工智能,他研究了其他人如何应用人工智能(提出问题)以及使用人工智能优于其他替代方法(解决方案)的情况。这对于理解可能发生的情况并避免误区很重要。
他说,自从在宾夕法尼亚州立大学获得计算机科学学位以来,学习人工智能这一过程是他感到最紧张、最困难的一次学习经历。他说:“让我重新思考从经验中改进软件系统实在是太困难了,而软件系统只做开发人员让它们做的事情。”
IBM公司开发了一种概念模型来帮助开发人员思考基于人工智能的转型,称之为人工智能阶梯(AILadder)。这个阶梯有四个梯级:收集、组织、分析和注入。大多数企业拥有大量数据,这些数据通常是以孤立的IT工作或通过收购的形式组织起来的。例如一家企业可能有20个数据库和3个数据仓库,其中包含冗余和不一致的客户信息。其他数据类型(如订单、员工和产品信息)也是如此。Higgins说:“IBM公司使AILadder从概念上摆脱了困境。”
在注入阶段,该公司致力于将训练的机器学习模型集成到生产系统中,并设计反馈循环,以便可以从经验中不断改进模型。注入式人工智能的一个示例是Netflix推荐系统,该系统由复杂的机器学习模型提供支持。
IBM公司已确定API、预先构建的机器学习模型和可选工具的组合,以封装、收集、组织和分析用于常见机器学习域的人工智能阶梯(AILadder),例如自然语言理解、与虚拟代理的对话、视觉识别、语音和企业搜索等。
例如,Watson的自然语言理解变得丰富而复杂。机器学习现在擅长于理解语言的许多方面,其中包括概念、概念之间的关系以及情感内容。现在可以通过完善的API和支持的SDK,向开发人员提供基于机器学习的自然语言处理的NLU服务和研发工具。
Higgins说:“因此,即使开发人员没有进行数据科学或机器学习方面的培训,他们现在也可以开始在应用程序中利用某些类型的人工智能。虽然这并没有消除人工智能的学习曲线,但会使其变得更平缓。”
本网站的文章部分内容可能来源于网络和网友发布,仅供大家学习与参考,如有侵权,请联系站长进行删除处理,不代表本网站立场,转载者并注明出处:https://www.jmbhsh.com/shenghuozixun/31757.html