(马鞍山师范高等专科学校软件工程系,安徽 马鞍山 243041)
场景一:智能楼宇内部安装了防灾设备和系统,这些系统都在专门软件运行之下发挥作用。软件的核心功能就是侦测烟雾、温度、湿度等数据,并判断是否发生火灾,如果确定为火灾则在第一时间内开启响应流程,包括自动打开灭火器、开启消防水栓等。消防系统在工作中通常更多地依靠有线网络进行数据传输。但是现实中火灾也会损坏传输线路和防灾设备,另外线路和设备自身也存在老化问题,从而中断防灾系统的工作。此时,需要传感器主动开启无线网络工作状态,系统自动切换到无线工作模式,继续实施自动救灾。
在上述场景中,当火灾发生时,如果线路老化或部分设备出现故障,导致有线传输网络不通、系统无法正常运行,此时只是等待救援人员来维修以恢复系统,将会错失最佳救援时机。智能楼宇火灾救难系统必须具备一定的自适应能力[1],能够感知火灾的发生,当线路或设备失效时能够主动进行重配置,启用新的工作模式,确保能及时开展救灾。
自适应(Self-Adaption),在软件工程领域,是指软件在投入运行的过程中能自我感知环境的变化、需求的变更和自身状态的改变,对感知的信息数据进行收集、分析和处理,对比常态下的数据,在二者不一致或在超过阈值时,对软件本身结构或行为进行调整,或者启动软件新的工作模式,继续保持运行状态,从而满足用户要求的功能和性能,或完成既定的任务。自适应软件(Self-Adaptive Software),是指具有自适应能力的软件系统。在整个软件生命周期中,自适应软件能够通过检测用户需求的调整、周围环境的变化、以及软件自身的缺陷或错误,启动新的工作模式,或调整软件的行为和结构,使得软件保持在运行状态,并适应内部和外部的变化。动态自适应软件在系统运行过程中,能够不依靠外力而仅仅通过自身行为和结构的调整,来适应用户需求变更、运行环境变化,并不断修正自身缺陷以提高系统的可信度[2]。
随着网络的普及,大部分软件都是网构软件(基于Internet(互联网)的软件),朝着并行、异构的和分布式的方向发展。在分布式计算环境下,系统是由一个个结点构成的。结点可以是软件组件,也可以是硬件设备。个体自适应指的是只涉及到单个结点的自适应。也就是说个体自适应仅仅限于单个结点范围。群体自适应指的是涉及到多个结点的自适应。群体自适应由多个结点相互配合完成,这些结点具有相近的结构和工作机理,也可能具有不同的工作目标和管理策略。
Auxo模型是一种软件自适应概念模型,它既涵盖了个体自适应又包含了群体自适应,特殊情况下还允许第三方对软件的自适应能力进行在线调整,以满足环境开放和行为异构[3]。
软件自适应基本周期中,个体层面上的直接映射就是Auxo个体自适应过程,包括由环境和状态感知引起的个体决策以及由参数或结构调整引起的个体决策。在这两个过程中,分别对应环境和状态数据以及行为调整动作。Auxo个体自适应过程如图1所示。
图1 Auxo个体自适应过程
软件自适应基本周期中,在个体自适应过程基础之上,引入群体感知和群体决策等来对个体行为进行改变,获取群体状态和环境信息,实现群体自适应。所以,群体自适应离不开个体自适应,只有发生个体自适应才能实现群体自适应。Auxo群体自适应过程如图2所示。
图2 Auxo群体自适应过程
场景二:当火灾发生时,智能楼宇内部的火灾救难系统提供如下救灾支持:支持一,消防员携带平板电脑、智能手机等移动终端进入火灾楼宇,这些移动终端立即显示出建筑物结构图、建筑设计图、建筑材料强度信息、火源点、安全出口路线等信息,同时设备快速计算并显示当前最安全和最高效的搜索路线;支持二,消防员的移动终端在此时可以作为系统中的结点,发挥无线链路和中继的作用,能够随人员移动而改变显示信息,从而快速收集安防系统无法覆盖的区域信息。
图3 智能楼宇火灾救难系统
图4 参数调整的ThresholdAdjust策略连接子
图5 结构调整的FloorSelection策略连接子
消防员移动终端上的软件自适应就是个体自适应,这种个体自适应能够通过加载某些组件或构件来对自身进行调整。当每个消防员移动终端都加入到智能楼宇系统中时,就构成一个较大的群体,其实现的自适应就是群体自适应。每个个体自适应都是群体自适应有机组成部分。基于Auxo概念模型的实现以上群体自适应过程如下:
(1)当消防员进入智能楼宇时,群体感知环节立即检测到这一行为。
(2)群体自适应设备立即做出群体聚合决策,邀请进入智能楼宇的每个消防员移动终端加入到群体。
(3)进入智能楼宇的消防员移动终端收到群体自适应基础设施所发通知,可以通过个体决策接受加入群体的邀请。
(4)进入智能楼宇的消防员移动终端从群体自适应设备处获取必要的组件或构件,同时通过执行结构适应动作以加载这些组件或构件,最终成为智能楼宇救灾系统中的成员。
在场景一和场景二描绘的情形基础之上,进行智能楼宇火灾救难实验。通过进入楼宇的消防员所携带的PDA(Personal Digital Assistant,又称为掌上电脑)、智能手机和笔记本电脑,以及分布在楼宇各处的基于iMote2高性能无线智能传感器等多种异构设备,装载设备运行软件,搭建了模拟的智能楼宇火灾救难系统。实验从多个角度验证Auxo自适应概念模型对个体自适应和群体自适应的支持。
智能楼宇火灾救难系统模拟场景:当火灾发生时,楼宇各处的烟雾浓度和温度等数据由安装在楼宇多个位置的高性能智能传感器iMote2实时收集。楼宇内每个楼层都安装有火警上下文聚合结点,负责汇总各个智能传感器iMote2收集的数据。楼宇中央服务器根据上下文聚合结点汇总的数据计算出当前火灾发生的概率。如果火灾发生的概率超过阈值,则判断为发生火灾,楼宇中央服务器立即发出警报,开启火警灯。同时,楼宇中央服务器给当前进入楼内的每名人员所携带的智能手机、平板电脑等移动设备发送相应告警信息。当消防员进入楼宇后,通过查看其所携带的PDA,就可以准确知道楼宇火灾发生的具体地点。PDA上还会显示楼内建筑物相关信息,便于有效实施救灾和逃生。智能楼宇火灾救难系统所模拟的场景如图3所示。
智能楼宇火灾救难系统涉及到的软件自适应行为包括群体聚合、环境驱动的参数调整和状态驱动的参数调整,具体如表1所示。
表1 智能楼宇火灾救难系统自适应行为
表1中自适应行为通过如下方式实现:
(1)群体聚合
系统在运行过程中一直在监视是否有消防员或工作人员进入智能楼宇。当消防员或其他工作人员进入智能楼宇时,其所携带的智能手机、平板电脑等移动设备将自动加入到智能楼宇火灾救难系统中,这一过程是通过运行于移动设备之上的Auxo单元实现的,它向智能中央服务器注册所发现服务,邀请其加入到智能楼宇火灾救难系统中。
(2)环境驱动的参数调整
iMote2智能传感器上运行有湿度和温度感知构件,ThresholdAdjust策略连接子将该构件名为与SmartBuildingController的构件绑定在一起,绑定是通过构件的行为调整端口进行,有效实现依据当前湿度和湿度等环境参数值调整火警阈值。实现参数调整的ThresholdAdjust策略连接子如图4所示:
(3)状态驱动的结构调整
Floor1构件是否可用或失效需要定期检查,这一过程是由FloorSelection策略连接子来执行的。如果Floor1构件失效,系统就会建立从FireDetector到Floor2构件的连接。实现结构调整的FloorSelection策略连接子如图5所示:
之前的自适应软件研究大多集中于单个结点上软件如何实现自适应。然而,在分布式计算环境下,既需要了解个体自适应实现方式,又需要掌握群体自适应实现方式。在智能楼宇火灾救难场景中,借助Auxo软件自适应模型,实现系统的自适应性:智能楼宇火灾救难系统通过传感器收集的数据,汇总到各楼层上下文聚合结点,智能楼宇中央服务器判断出是否发生火灾,当感知到火灾发生,如果自身线路和设备失效,系统会自动进行重配置,启动无线传输网络,尽可能保证系统能够正常运行,最终达到自动救灾的目的。