人为驱动的软件开发时代意味着编写基于规则的代码,使用逻辑解决确定性问题。机器学习的时代就在这里,用于软件开发的人工智能将永远改变编程。它不再是关于定义if-then-else循环,而是更多地选择正确的数据来训练神经网络,这将解决给定的问题而无需人为干预。
这是解决问题的方式,使用的工具,思维模式甚至是程序员所做的定义的革命。我们将研究人工智能可以增强软件开发的一些方法,一些陷阱以及最终为什么这种方法很有价值。
人工智能如何促进软件开发?
即使围绕人工智能进行软件开发有明显的炒作,该技术仍处于起步阶段,并且它将持续数年才能在更大规模上使用。此外,有些方面甚至可以通过传统软件更好地管理。以下是人工智能和机器学习可以发挥作用的一些部分。
快速创建MVP
传统的编程需要数月的规划和准备来启动项目。将其提升到原型水平以获得更多资金是另一个需要必要资源的艰巨步骤。现在,通过机器学习,这个循环可以缩短为几行代码或只是拖放。一个很好的例子是通过使用预定义的自然语言库或使用用户友好的无代码平台来创建聊天机器人。想象一下像C ++这样的标准语言需要多长时间。
管理项目
经验丰富的项目经理从过去的情况中了解交货时间,可能的延误,最常见的陷阱以及其他有助于保持时间和金钱预算的细节。如果存储了所有这些数据,则可以使用它来训练自动化系统以产生准确的估计。由于这些实际上是模式检测工作,因此使用深度学习是最佳选择。您所需要的只是过去项目的详细日志,包括错误,估计和实际值,甚至是用户故事和评论。
这是估算交货时间表并确保履行初始合同中规定的义务的好方法。由于该计划花费更多时间来研究团队的表现和障碍,因此它可以了解个人习惯,并可以创建个性化的工作时间表,其中包括每个成员的工作模式,以实现最高效率。
自动调试
模式检测可以更深入地识别和分类错误类型。深度学习算法可以标记已知错误并加快调试过程。它可以影响程序员甚至学习如何修复它们。经过充分的培训后,该机器可以自动纠正各种错误,就像在智能手机上自动更正一样。这种方法的唯一问题是纠正不需要改变的东西的类似烦人的效果。
聪明的助手
大多数现代编程环境都有一些嵌入式帮助,如建议的自动完成或其他类型的交互式文档。拥有一名智能助手可以加快开发过程,并帮助新手比通过反复试验更快地了解环境。
人工智能可以充当培训师,提出建议,提供代码示例或防止简单的编码错误,例如关闭括号。为Python开发的这种助手的一个很好的例子是Kite。
自动生成代码
不仅仅是建议代码完成,一旦它了解了必要的模式,人工智能系统就可以通过组合一些预定义的模块(如LEGO件)来生成代码。在未来的某个时候,人工智能软件开发将取代一些初级程序员的工作,这也是自编程机器的第一步。
自动化测试
在开发周期中,测试是高质量软件产品的重要组成部分。软件测试的挑战之一是创建一个包含最可能情况的综合列表,以及可能对程序性能产生重大影响的一些极端情况。人工智能可以通过查看过去的日志并自动生成测试用例列表来运行系统来完成此操作。
它甚至可以在不进行实际测试的情况下预测测试结果,只关注可能存在问题的测试结果,从而在过程已经很晚的情况下节省时间。
战略
在创建软件产品时,通常会讨论要包含哪些功能以及稍后要保留哪些功能。人工智能可以生成模拟并输出最佳功能的层次结构,以便根据类似产品的使用率或通过分析从产品评论和社交媒体中检索到的客户的声音来获得产品的成功。
黑匣子效果
虽然许多基于人工智能的算法提供了很好的预测和自动化,但它们都有一定的缺点。算法学习的方式对外部观察者来说完全不透明。修补算法的唯一方法是为其提供新的数据集并查看输出。这种方式在微调方面效率很低。这不是微不足道的,因为它可能导致非常偏见和危险的结果,就像一个无人监督的孩子一个人只是通过浏览互联网来了解世界。
程序员会消失吗?
上面列出的应用程序可以接受这样的想法:在几年内,软件开发人员将慢慢变得过时,自编程机器将取而代之。由于人工智能系统刚刚开始变得更加可靠,因此在可预见的未来不会发生这种情况。但是,可以安全地假设人工智能的重要性会增加,并为开发人员提供明确的支持角色。新工具将缩短新产品开发周期,将作为培训和支持,总体上将有助于生产更好,更实惠的软件。
文章由深圳逻辑思维软件发布,转载请注明出处。
原文地址:https://blog.51cto.com/14048984/2409890