欢迎进入凯鼎电子官网
语言选项
中文版 English

人工智能有望从根本上改变软件开发

发布时间:2019-05-21      点击:

新工具和尖端项目展示了机器学习和高级分析将如何彻底改变软件的设计、测试和部署方式。

我们正在进入特斯拉人工智能主管Andrej Karpathy所谓的“软件2.0”的时代,在这个时代里,神经网络会编写代码,而人们的主要工作是定义任务,收集数据和创建用户界面。

但并非所有任务都可以通过神经网络来解决(至少现在还不行),而传统的软件开发仍然可以发挥作用。然而,即便如此,人工智能、机器学习和高级分析正在改变软件的设计、编写、测试和部署方式。

总部位于巴西的TOTVS为大约100,000名企业客户提供关键的行业软件。例如,其金融服务解决方案每天处理数万亿美元的交易。

此类应用需要得到强有力的测试。创建测试用例的人必须非常慎重地考虑如何设计测试场景,每个测试场景都要花几个小时来创建。

 

每个测试用例都必须定制化,以适合用户界面。应用程序不断得到重新设计,因此界面也总是在变化。如果平台本身发生了变化(例如更新到更新版本的javaScript时),所有设计元素都会立即发生变化。

“不妨想象一下重写成千上万用例的情景。”

因此TOTVS向人工智能求助。TOTVS使用Functionalize这个测试平台,该平台现在支持测试用例的智能创建。该技术可以像人一样查看屏幕,从而能识别输入字段和按钮的位置,而不是依赖于底层代码。它还可以提供测试场景和样本数据来对应用程序进行压力测试。

“以前,高级质量保证人员需要花一天的时间来完成我们所使用的传统解决方案中的测试用例,现在,他们可以在几分钟内创建相同的测试用例。”

“你可以命令它测试要测试的东西,它会自动为你创建一个测试用例。这为我们指明了新的方向。我们不再需要那么多高级质量确认人员来测试用例。”

即使软件通过了质量确认,它也并不总是按预期发挥效用。“就在今天早上,我们获得了一些已经得到采用的产品数据,而网站尚不能处理这些数据”。

我们花了数百小时来监控Build.com软件的性能,当问题出现时,公司将软件恢复到之前已知的良好状态,并将其发送给开发人员以解决问题。

“我们面临的问题是,我们编写的软件变得非常复杂,流量太大,大到任何人都无法查看现有的所有监控系统,哪怕是一群人也做不到,他们会说,‘一切都很好’或‘一切都很糟糕,该做点事情了’,软件耗费了太多时间并放慢了发布速度。我们无法以足够快的速度为客户创造价值,我们也没有以足够快的速度向开发人员反馈必须得到补救的事情。”

“我们实际上还没有能写代码的代码,但人工智能和机器学习在开发方面大有裨益,这实际上关系到我们是否理解常见模式的好坏利弊。它可以突显这是一个异常现象,我们可以回过头来对其进行修复。”

还希望有更多能利用人工智能的工具相继问世,从而一开始就能帮各大公司编写更好更安全的代码。

“这就是我们真心希望在开发方面使用人工智能和机器学习的领域——加强这些领域,这些领域人手不足,无法解决问题,比方说,你的代码库有数百万行代码。你要用多少人来审计这数百万行代码?我们需要的是可扩展的解决方案。”

“他们正在引入某些系统,这些系统将监控你的代码并向你发出提醒,让你知道我们使用的第三方库中可能存在的漏洞。”

“我们正致力于创建各种模型,这些模型能为常见漏洞和暴露发现(exposures discovery)提供支持。”

Berry说,GitHub刚刚发布了一个工具,这个工具可以帮开发人员发现他们在代码中意外共享令牌的位置。

Miller说,GitHub还致力于开发“帮开发人员以自然方式发现功能的工具”,有了人工智能,开发人员就可以根据自己的意图搜寻各种功能。

Miller说:“由于在GitHub的开源编码平台上使用大量公开代码,机器学习研究团队在实现这一目标方面取得了重大进展。有了语义代码搜索的功能,开发人员就可以增加和简化计算方面解决问题的需求。”

Miller说,这就是说,开发人员将不再受自身认知的限制,“他们可以利用存储在GitHub上的所有代码知识来帮忙解决问题。”人工智能技术也出现在静态和动态软件分析工具中。

“机器学习的功能已经很丰富了,比18个月前更加丰富。神经网络渐渐得到了应用。如今,与其说这是静态分析,不如说是动态分析,但由人工智能驱动的动态分析将在未来几年出现。”

然而,就从头开始编写新代码而言,当前的技术还有待改进。

“现在我们可以使用一些现成的系统,如你的集成开发环境,但这更像内置模板剪切粘贴得来的。”

但情况开始发生变化。最受欢迎的集成开发环境(微软的Visual Studio)在4月发布的最新版本中内置了人工智能代码自动完成功能。微软Visual Studio IntelliCode的高级项目经理Mark Wilson-Thomas表示,该功能基于数千个开源的GitHub存储库提供的机器学习。

以Mendix为例,该公司在长达十年的时间里一直提供积木式的系统,这些系统可以用来创建各种应用程序。开发人员将平台上各种可用的功能集中在一起,当这些功能不够用时,他们就使用外部代码。如今,该公司创建了一个深度学习系统来分析这些模型,考察这些模型在生产中的表现,看看哪些模型是最管用并据此来识别各种模式。

Deloitte Cyber的应用程序安全负责人VikramKunchala说,IT部门依然十分抗拒这些平台,而业务方又缺乏信心。

“此刻,对平台的采用似乎更像是好奇心使然。企业正在一点点进行对这些平台进行试验。又或者是他们不得不尽快落实——我们已经见过这种情况了。但我没有看到哪个客户将其视作我所了解的企业标准。”

但最大的变化是,企业开始使用与传统代码毫无联系的应用程序。

比如说,你想创建一个玩三子棋(TIc-Tac-Toe)的应用程序。你可以编写规则和游戏策略。对手怎么做,你就怎么做。开发人员的工作是选择正确的策略并创建惊艳的用户界面。

如果以击败人类棋手为目的,那么这种策略适用于三子棋、跳棋、甚至是国际象棋。但是对于围棋等更高难度的棋类竞技,创建规则并不容易。这时深度学习和神经网络等人工智能技术就登台亮相了,这些技术彻底改变了软件开发流程。

开发人员不是从制定规则开始,而是从收集数据开始——大量的棋类竞技。谷歌根据人类棋手下的大量棋局来训练系统。由于有了最新的AlphaGo Zero,训练数据来自系统与自身对弈的棋局,始于随机下子。

只要培训数据清晰且充分,而且评估其好坏的标准也十分明确,那么这种方法就有可能彻底改变软件开发。如今,开发人员必须努力管理培训数据和评估标准并让系统来编写代码,而不是弄懂对弈规则并编写对弈规则。

,穿越隧道的车辆缺乏训练数据,特斯拉必须上路实测,获得更多数据,对这些数据进行注释,将其添加到训练数据集并重新运行深度学习算法。

“我们通过这种方法使所有问题看起来都一个样子。”

传统的发展仍有生存空间,目前,这些系统的用户界面是手动创建的,与其他平台的集成也仍然是手动完成的。

但随着越来越多的公司向人工智能求助,用于那些有大量可用数据和其他低代码平台的应用程序,那么软件开发的工作将在不久的将来发生巨大变化。

上一篇:自动驾驶汽车对交通有何影响
下一篇:“机器人+5G” 碰撞新火花 为智慧场景服务创新赋能
深圳市兴凯鼎电子有限公司

地址:深圳市龙华区东环一路天汇大厦B栋1028室

QQ:2775887586           TEL:0755-83422736

技术支持:凯鼎电子   粤ICP备16123236号-1

© 2010-2017 K-DING ELECTRONIC CO.,LTD All rights reserved.