软件智能化构想(6.29)

在我博客上有些文章也会谈到大数据,BI商业智能,机器学习和AI人工智能的话题,而今天想谈下软件智能。软件智能是我自己提出的一个说法,即指我们开发实现并部署的应用软件本身具备自我适应,自我优化,自我调整能力,即可以称为软件智能。

基础智能是基于输入+预设规则最出的快速决策和判断

在我们谈到云计算PaaS平台的时候,谈的比较多的是软件应用托管,在托管完成后实现软件应用更加业务访问并发量的动态资源扩展和调度能力,这个能力可以做为软件智能的一部分。即软件具备了面向不同的并发场景下自我适应,弹性调度和动态扩展的能力,而这个过程不再需要人工干预。

基于这个场景,我们回来来总结下,实现该智能调度的关键点包括了:

1. 预先定义和配置的资源调度规则和算法

2. 实时的健康相关性能数据采集

3. 基于采集数据动态计算和规则进行匹配,基于结果触发决策行为

具备了以上三点后基本就具备了最基本的动态资源扩展能力,也可以算做为最基本的软件智能能力。而今天我想谈的,或者想展望的是,一个实现完成后的应用软件,是否能够具备在业务功能和需求上面的动态调整,自我适应能力,即在业务场景和业务需求变化下能够完成动态自我调节。

如果要实现这点,基于PaaS资源调度的思路,可以看到我们在实现软件的时候需要考虑

1. 在功能实现的时候,业务规则必须要进行剥离,形成可以灵活定义和配置,包括复合的规则集合

2. 软件实际的行为可以在某种场景和输入下触发的一系列规则的联动和执行

3. 对业务输入进行采集和分析,选择最优的规则触发后续行为

因此我们看到,要实现软件的智能关键还是业务规则剥离,能够灵活配置。其次就是我们要对各种业务场景下的输入进行分析,建立输入数据和预设规则之间的联动关系,或者说最优联动方式。基于两者我们就可以基于已有的规则引擎或智能算法选择软件的执行路径并返回结果。

这种软件智能有很多具体的体现点,我们可以举例来说明下

在一个表单录入的时候,我们发现我们原来预设的表单数据项录入顺序并不是客户实际录入顺序,那么我们的软件是否可以动态的基于用户的使用习惯,对表单录入数据项顺序完成动态调整?

当然我们可以根据用户的使用场景和使用习惯,基于不同的用户给出具体的功能编排和快捷进入,并且对不同功能页面间的连接进行重新编排等。我们也可以根据用户经常使用的查询功能和查询条件等进行分析识别,在用户每次进入的时候给出最优的查询组合等。

我们可以提供类似当前互联网,电商应用常用的功能,给出用户在使用功能时候最佳的猜测供用户选择。

软件应用在后台运行中会发现某种业务场景或业务并发下会导致资源出现性能瓶颈问题,那么应用可以自动的分析出现性能问题的原因,并对软件应用代码进行优化和调整。

类似软件应用功能中最常见的在基础模型确定情况下,单纯的扩展数据项功能,软件能够完全做到灵活可配置的扩展,而不在需要进行代码级别修改和重新部署发布。

场景的业务规则和逻辑的修改,都可以不修改代码,而是修改我们的规则配置,规则可以做到灵活配置,基于规则来触发最终的事件和后台操作。同时我们可以在软件应用中配置业务场景输入,规则,输出行为三者之间的联动关系,当输入场景变化或规则变化的时候我们只需要对三者进行修改或重新配置即能够满足需求,或者根本都不需要人为进行修改,而是通过软件自适应来完成调整。

理想情况下,一个软件上线完成后基本能够做到不需要运维人员和监控人员,软件出现的问题或故障能够自动的进行分析,在分析后给出自动的解决措施并完成解决,或者给用户最佳的问题处理方式和流程。即在我们传统软件运维监控的基础上,能够进一步做到出现问题也能够给自动修复和解决,而不需要人工干预。如果出现问题,在采用了类似重启等方式进行解决后,也能够对问题产生的根本原因进行深入分析,以对内部实现逻辑和机制进行优化和调整,从根本上避免问题的再次出现。