在前面我写过一篇文章,标题是万物互联,再次强调了随着5G,物联网和人工智能的快速发展,万物互联和智能化将成为趋势。但是当时谈到这个概念的时候,更多的还是以物联网云平台和物联网类应用为主来谈的这个概念。
而回归会传统的企业信息化建设,IT应用,智慧化和智能化也将成功趋势。因此今天想谈下对智慧应用和软件智能化方面的理解和构想。
什么是智慧应用这里提出的智慧应用这个概念,绝对不是指原来我们经常谈的类似BI商业智能,大数据分析决策,也不是原来也谈到过的智能的零编码开发应用平台。那么如何给这里的智慧应用下个定义呢?

智慧应用本身应该是具备对人机交互的各种输入,结合数据分析和规则判断,能够做出自我规则调整,自我功能和路径优化的,不需要人工干预的自适应系统。
这个智慧应用和自适应系统本身的发展可能需要经过两个关键的阶段,简单描述如下:
人为的预设规则,系统只需要基于输入+预设规则作出最合适的判断和解决方案。具备自我学习能力,自己通过学习新增加的规则,然后作出最合理的判断和解决方案。我们拿一个最简单的运营商手机套餐的例子来说明,最原始的方式是有客服人员对你的消费学习进行分析和画像,然后给你推荐一个适合你的消费套餐。
在这个基础上,我们看到又有两次大的发展如下:
阶段一:
自动采集你的通话,上网等行为数据。基于预设的规则,给你推荐一个最合理套餐。
阶段二:
没有预设的规则,而是自动分析你的数据,基于自我学习,自动形成相关的规则,然后给你一个最佳套餐,这个套餐完全为你量身定做。
这里面的差异大家可以看到,发展到第二阶段的时候,不一定有明确的预设规则,同时规则库本身不断在调整和自适应变动,没有固定的套餐产品,而且做到完全的定制化推荐,给出个性化最合适的方案。
这个过程完全不需要人为干预,而是由大数据加人工智能自己来完成,同时形成闭环。
那么人工智能的判断是否就一定准确?不一定。
但是人工智能最厉害的就是本身的自我学习和自适应优化调整机制,一开始不准确无所谓,但是机器可以通过后续跟踪的新数据的产生和分析,比如分析新套餐推荐后的营收数据,比如客户流失数据,比如客户行为数据来分析它自己的判断是否有错误,然后做出自适应调整。
在前面谈机器学习和人工智能的时候就谈到过,一开始可能并没有一个精确的模型,一定能够从A就推导出B,但是机器可以学习,告诉你从A到B是最佳的,具体通过哪个模型计算出来的,你不用管。一个数据可能会骗人,但是海量并有关联的数据不会骗人。
智慧应用的场景智慧应用,最容易开始的两个方向,其中一个就是类似电商,营销类应用本身后期的个性化智能推荐引擎,这个已经大范围在使用,基本不需要太多人为干预;另外一个方向就是智能化运维,即对于整个运维化过程完全实现自动化和智能化。
运维的自动化容易,但是运维的智能化难。
自动化是针对资源层面的运维监控和处理,但是智能化则是针对真正客户,针对真实需求的智能化问题分析和解决。当用户在使用系统的时候遇到一个问题,无法继续填单;或者说当用户提交单据的时候发现异常无法提交,这些如何真正做到完全不需要人工介入就能实现智能化处理和解决方式推荐。这个将成为IT类应用系统后续必须关注和重点解决的一个问题点。
其次,既然叫智慧应用,那么应用本身就需要有自我适应,自我调整的能力。这种调整不是说要完全新增加功能,而是对已有的功能如何更好的进行优化组合,更好的为用户使用服务。举个最简单的例子,在你采集和记录了用户的操作和使用信息后,你如何针对该用户给出最佳,最高效的操作路径推荐。当你发现大量用户在某个操作环节需要花费大量的操作时间或等待时间的时候,你如何完成自适应调整和优化。
这些点看似简单,但是真正做到却很难,如果能够做到上面这些点,那么我们的IT应用就有了智能的雏形,即这个IT应用能够自我适应,自我调整并发展,你会看到IT应用自己有了成长的能力,能够通过输入,规则处理,反馈输出进行闭环的自适应优化和迭代。
随着智能制造,人工智能的发展,可以看到传统的工厂很多工人已经下岗,工作完全转为自动的机器人所代替。而对于软件工厂也是同样的道理,随着人工智能的发展,软件开发和程序员一定会出现更加明显的两级分发,大部分只单纯会编码的人一定会被淘汰。
软件系统如何实现智能化?软件智能是我自己提出的一个说法,即指我们开发实现并部署的应用软件本身具备自我适应,自我优化,自我调整能力,即可以称为软件智能。
基础智能是基于输入+预设规则做出的快速决策和判断
在我们谈到云计算PaaS平台的时候,谈的比较多的是软件应用托管,在托管完成后实现软件应用更加业务访问并发量的动态资源扩展和调度能力,这个能力可以作为软件智能的一部分。即软件具备了面向不同的并发场景下自我适应,弹性调度和动态扩展的能力,而这个过程不再需要人工干预。
基于这个场景,我们回来来总结下,实现该智能调度的关键点包括了:
预先定义和配置的资源调度规则和算法实时的健康相关性能数据采集基于采集数据动态计算和规则进行匹配,基于结果触发决策行为具备了以上三点后基本就具备了最基本的动态资源扩展能力,也可以算作为最基本的软件智能能力。而今天我想谈的,或者想展望的是,一个实现完成后的应用软件,是否能够具备在业务功能和需求上面的动态调整,自我适应能力,即在业务场景和业务需求变化下能够完成动态自我调节。
如果要实现这点,基于PaaS资源调度的思路,可以看到我们在实现软件的时候需要考虑
在功能实现的时候,业务规则必须要进行剥离,形成可以灵活配置,包括复合的规则软件实际的行为可以在某种场景和输入下触发的一系列规则的联动和执行对业务输入进行采集和分析,选择最优的规则触发后续行为因此我们看到,要实现软件的智能关键还是业务规则剥离,能够灵活配置。其次就是我们要对各种业务场景下的输入进行分析,建立输入数据和预设规则之间的联动关系,或者说最优联动方式。基于两者我们就可以基于已有的规则引擎或智能算法选择软件的执行路径并返回结果。
这种软件智能有很多具体的体现点,我们可以举例来说明下
基于用户行为习惯的易用性调整
在一个表单录入的时候,我们发现我们原来预设的表单数据项录入顺序并不是客户实际录入顺序,那么我们的软件是否可以动态的基于用户的使用习惯,对表单录入数据项顺序完成动态调整?
当然我们可以根据用户的使用场景和使用习惯,基于不同的用户给出具体的功能编排和快捷进入,并且对不同功能页面间的连接进行重新编排等。我们也可以根据用户经常使用的查询功能和查询条件等进行分析识别,在用户每次进入的时候给出最优的查询组合等。
我们可以提供类似当前互联网,电商应用常用的功能,给出用户在使用功能时候最佳的猜测供用户选择。即基于用于行为习惯做出最佳的易用性和操作调整。
基于业务并发自动进行性能优化
软件应用在后台运行中会发现某种业务场景或业务并发下会导致资源出现性能瓶颈问题,那么应用可以自动的分析出现性能问题的原因,并对软件应用代码进行优化和调整。
类似软件应用功能中最常见的在基础模型确定情况下,单纯的扩展数据项功能,软件能够完全做到灵活可配置的扩展,而不再需要进行代码级别修改和重新部署发布。
场景的业务规则和逻辑的修改,都可以不修改代码,而是修改我们的规则配置,规则可以做到灵活配置,基于规则来触发最终的事件和后台操作。
同时我们可以在软件应用中配置业务场景输入,规则,输出行为三者之间的联动关系,当输入场景变化或规则变化的时候我们只需要对三者进行修改或重新配置即能够满足需求,或者根本都不需要人为进行修改,而是通过软件自适应来完成调整。
理想情况下,一个软件上线完成后基本能够做到不需要运维人员和监控人员,软件出现的问题或故障能够自动的进行分析,在分析后给出自动的解决措施并完成解决,或者给用户最佳的问题处理方式和流程。
即在我们传统软件运维监控的基础上,能够进一步做到出现问题也能够被自动修复和解决,而不需要人工干预。如果出现问题,在采用了类似重启等方式进行解决后,也能够对问题产生的根本原因进行深入分析,以对内部实现逻辑和机制进行优化和调整,从根本上避免问题的再次出现。