黄树成,罗 志,陈 建
(江苏科技大学计算机科学与工程学院,江苏镇江212003)
近年来,随着Internet向社会各角落的渗透式扩张,普适计算、网格计算、云计算等新型应用模式的不断涌现,使得软件系统运行环境从传统的静态、封闭的桌面系统转向了动态多变、开放的分布式系统,从而使得软件的规模和复杂性不断增加,并成为软件面临的主要困难.为了应对多变、动态的环境和频繁变更的用户需求等挑战,软件系统必须能够在动态运行过程中感知环境和需求的各种变化信息,并根据预先设定好或经过学习积累的策略,在必要时对自身进行自动调整,从而更好地为用户提供服务,而这就是所谓的自适应性[1-2].
关于软件自适应关键技术的各种研究逐渐走进人们的视野,其中,如何构造合适的自适应软件个体成为研究热点[3-4].目前,对于构建自适应软件个体研究还停留在传统的封闭环境下,所依赖的各种计算资源虽然是分布的,但可以被管理人员精确控制,变化并不频繁.然而,随着Internet的迅速普及和其上应用的不断发展,绝大多数软件的部署、运行环境正不断从静态封闭走向动态开放,其中,“动态”是指变化频繁,“开放”则是指运行环境及其变化可能会超出开发阶段的预期.它与传统的计算环境不同主要表现在[5]:无统一控制的“真”分布性,节点的高度自治性,人、软件和设备的多重异构性,运行环境的不确定性,实体行为的不可预测性,使用方式的灵活性以及网络环境的多样性等.这些特性都可能使得软件涉及的计算资源、数据资源以及应用资源等随时发生变化,并且往往没有明显的界限.因此,构造环境开放、行为主动、成员异构的分布式自适应软件近年来逐渐成为软件工程领域的研究热点,其中,开放环境下的自适应软件构造方法尤其受到重视.
开放环境是指软件的上下文环境及其变化可能会超出预期阶段,这就要求软件基础框架设施不仅能够支持环境感知,而且不能绑定到具体场景,例如,在Windows环境下开发的软件在Linux环境下同样能够正常运行.另外,软件的自适应性能也不能是始终不变的,在必要时,应当能够对其进行在线调整[6],然而,现有的软件结构框架仅仅能够支持环境的感知,而对处理哪些环境信息却总是固定不变的,并且软件的自适应能力一般在其开发阶段必须确定,即使允许扩展也仅限于策略升级等简单行为,缺乏对感知、分析、执行等自适应其他环节灵活在线调整的支持.
针对上述挑战,文中以环境开放、成员异构、行为主动的分布式计算软件为研究背景,围绕“如何构造开放环境下的自适应软件个体”这一问题,在软件工程层面上展开探索.首先,在文章第1部分,给出了典型的软件自适应概念模型.然后,在第2部分,提出了新的软件自适应概念模型ASCM(adaptive software conceptual model),该模型融合了个体和群体两个层面上的适应性,并且允许第三方在必要时,对软件自适应能力进行在线调整.接着,在第3部分,围绕上述模型,对自适应软件个体构造方法展开研究,即以系统工程科学中的控制理论为基础,提出了综合前馈控制和反馈控制、显示维护体系结构和环境模型的软件个体复合控制过程,进而以此为指导,提出了面向开放环境的自适应软件构造方法,具有环境和体系结构敏感且支持开放环境的效果.
概念模型是研究和实现软件自适应的前提,它从思想层面上指导如何实现自适应,但通常与软件基础设施、编程语言等具体实现技术无关.本节将对典型的自适应软件概念模型做简单介绍.
图1 Dobson,Denazis等模型Fig.1 Dobson,Denazismodels
Dobson,Denazis等提出了如图1所示的自适应软件通用过程模型[7],它由收集(Collect)、分析(Analyze)、抉择(Decide)以及行动(Act)组成.收集,即自适应软件获取自身状态和环境变化的过程,从而为后续自适应分析提供依据;分析,是指自适应软件在获得环境和状态数据后,分析收集的数据,从而判断出现的问题或者去发现系统障碍;抉择,则是自适应软件根据环境、自身状态、分析等数据,做出调整自身结构或者参数的决定;行动,则是指实施行为调整的过程.可以看出,其基本工作流程是:收集→分析→抉择→行动.
图2 基于MAPE-K模型的自主元素Fig.2 Autonom ic elements based on M APE-K model
另外,IBM提出的自主计算[8]概念则是强调自配置、自保护、自修复、自优化在内的信息系统自管理,它的核心是基于MAPE-K模型的自主元素,如图2所示.MAPE-K模型包括以下部分:监视(Monitor),即从被管理元素中获取必要的信息,如状态、资源、属性等;分析(Analyze),即确定系统是否存在例外事件以及事件原因;计划(Plan),即生成解决例外事件的对策;执行(Execution),即实施计划,实行自管理行为;知识(Knowledge),为上述行为提供必要支持,例如由开发者制定策略等.
可以看出,以上两种模型的共同特征是“感知-分析-决策-执行”,是软件自适应基本周期的具体化,但它们均是面向软件个体或者是集中控制方式,且并没有涉及如何应对环境的开放性、动态性,很难满足环境开放、成员异构、行为主动的分布式软件的构造需求.
针对现有研究的局限性,并在上一节基础之上,给出指导全文工作新的软件自适应概念模型ASCM(adaptive software conceptualmodel),如图3所示,该模型融合了个体和群体两个层面上的适应性,并且允许第三方(如维护人员)在必要时,对软件自适应能力进行在线调整,以应对开放、动态环境的挑战.
图3 ASCM软件自适应概念模型整体结构Fig.3 ASCM overall structure view
复杂适应系统理论指出,在现实生活中,许多群体是由具备自治性的行为个体聚合而成,并且这些个体按照一定的模式进行非线性相互作用,从而在群体层面上表现出自适应性[9].因此,ASCM中的群体自适应性借鉴了上述思想,即自适应软件个体在一些因素的驱动下,动态聚合形成软件群体,并且软件个体的自主性被尊重,从而群体自适应行为通过对个体行为的适当干涉来实现.也就是说,ASCM群体自适应是以个体自适应过程为前提和基础的.以下我们就软件自适应基本周期在群体层面上的实现方式,对图3中各个环节作出进一步解释.
1 )感知
“群体感知”环节主要负责获取群体层面上的环境和状态信息,例如用户需求的最终变化,跨越多个软件个体的软件故障等.群体感知信息可以由全部个体所感知的信息汇聚而成,也可以由专门的基础设施负责.
2 )分析
“群体分析”环节是建立在群体感知的基础之上,即系统在获得群体的环境和状态数据后,分析收集的数据,从而判断出现的问题或者去发现系统障碍.
3 )决策
“群体聚合决策”环节则是依据目标、内部状态、环境、分析等信息,以软件个体为粒度进行自适应;“群体协作决策”环节则是依据群体层面上的环境和状态数据信息和分析来指导或者约束软件个体行为,实现成员个体间的有效配合.
上述群体决策过程既可以以集中方式由专门部件实现,也可以是以非集中方式分散到各个软件个体中.前者可以通过合适的协议设计来满足尊重个体的自主性,后者则可直接表现为各个软件个体独立的决策,并且通过一定的行为准则来保证群体层面上的自适应.
4 )执行
由于群体是由个体组合而成的,因此,ASCM并没有专门的设立群体执行环节,而是通过一组软件个体的动作(包含了各个体、个体之间、个体和群体之间)来执行群体自适应动作.
5 )在线调整
在ASCM中,软件的自适应能力并不是一成不变的.软件维护人员等第三方可以查看个体或者群体层面上各种环境和状态信息,并据此对软件自适应的感知、分析、决策、执行等环节进行必要的调整,例如增加新的感知手段、调整新的分析方法、设置新的自适应策略等.
本节主要是围绕如何构造面向开放环境的ASCM单元这一问题展开.其中,ASCM单元由ASCM构件和连接子组合而成,是运行于单个节点上,具备自适应能力的软件个体,并且可以被第三方进行有效的在线调整.首先,就自动控制理论提出软件个体复合控制过程,然后以此为基础,详细描述构件模型、结构框架、在线调整等自适应软件构造方法.
在控制论中,由于反馈控制只测量受控变量,但具有抗干扰性好、可应对非预期环境变化等特点,而前馈控制则可以直接测量可能影响软件行为且非受控的环境变化,并且根据综合系统当前的状态做出判断,对软件行为实施有效的、甚至是前瞻性的控制.因此,基于前馈控制和反馈控制相结合的思想,本文提出如图4所示的复合控制工程.通过控制策略的定制,可以形成包括前馈和反馈在内的3条控制路径:
1 )内部环境控制回路:如图4中“①—②—⑥—①”所示,负责监控软件内部环境状态信息,并且实施控制;
2 )行为反馈控制回路:如图4中“①—②—③—④—⑤—①”所示,负责监控软件行为对环境的作用,并且实施控制;
3 )环境变化前馈控制回路:如图4中“⑦—③—④—⑤—①—②”所示,负责监控可能影响软件行为且非受控的环境变化,并据此实施控制.
图4 软件个体复合控制过程Fig.4 A compound control process for the self-adaptive software individuals
除了综合上述前馈控制和反馈控制外,软件个体复合控制过程还具备模型维护、策略分离、结构控制、支持第三方在线调整等特点.这些特点一方面体现了软件与机器系统的差异,另一方面使得软件能够应对开放、动态环境的挑战.
要将上述软件个体复合控制过程付诸于实施,并且以此为基础构造出面向开放、动态环境的自适应软件个体,需要提供以下构造方法:①开发方法,ASCM构件模型;②基础设施,ASCM单元结构框架;③维护手段,在线调整方法.
ASCM构件模型,是用来支持软件个体复合控制过程中被控系统、传感器和控制策略的开发,它定义了基于构件开发技术的编程模型.ASCM构件模型的设计主要基于如下两个原则:
1 )异步反射,即元层部分可以与基层业务代码并行或者异步的执行,从而灵活实现收集数据、决策和控制行为等.
2 )关注点分离,ASCM构件模型将控制策略封装为策略连接子,将传感器封装为感知构件,并通过行为构件来支持构造被控系统,从而为软件自适应过程中的感知、分析、决策、执行环节提供不同的表达方法,进一步实现开发时的“分而治之”和运行时刻的各部分的独立动态调整.
文献[10]中指出,构件模型主要由构件语义、构件语法、构件组装3部分组成.其中,构件语义说明构件到底是什么;构建语法指出构件是如何被定义、构造并且表示的;构件组装则说明了构件是如何被组装的.下面沿着这一主线,介绍一下ASCM构件模型.
3.2.1 构件语义
ASCM构件是运行于ASCM单元框架之上并具有严格定义端口的软件实体,并且根据端口类型的不同,主要分为两类构件,即感知构件和行为构件.
定义1 感知构件:可以定义为〈id,SCPp,SCPr,Body〉.其中,id是其唯一标识符;Body是其实现体;SCPp={CP1,…,CPn}是其上下文环境提供端口的集合,n≥1;SCPr={CP1,…,CPm}是其上下文环境依赖端口的集合,m≥0.它是对环境感知等行为进行封装的可重用、可组装软件单元.
定义2 行为构件:可以定义为〈id,SSPp,SSPr, SCPrAP,Body〉.其中,id是其唯一标识符;AP则是对它进行参数控制的行为调整端口;Body是其实现体;SSPp={SP1,…,SPn}是它的服务提供端口集合,n≥0;SSPr={SP1,…,SPm}是它的服务依赖端口集合,m≥0;SCPr={CP1,…,CPt}是它的上下文依赖端口集合,t≥0.它是对具体功能进行封装的可组装重用的软件单元.
3.2.2 构件语法
构件语法主要关心的是ASCM构件如何被定义和开发.
1 )构件定义,在进行构件开发之前,需要先定义构件外部特征,包括上述的 id,SCPp,SCPr,SSPp,SSPr,Body等.现有两类构件定义方法,即直接使用编程语言或者使用专门的构件定义语言.
2 )构件开发,由于ASCM模型本身不会绑定到具体的编程语言,因此,构件内部结构可能会根据编程语言的不同而有所不同,且相应的开发方法也会有差异.
3.2.3 构件组装
ASCM构件模型主要从软件体系结构的角度去实施构件组装,强调连接子的一阶实体地位.即选择一组构件实例,然后通过合适的连接子,将它们连接在一起,从而得到一个ASCM单元.另外,在此阶段,还可以指定体系结构约束,限制ASCM单元软件体系结构的变化.
ASCM单元结构框架是由模型层和运行层组成,前者主要负责维护软件系统环境和自身的状态信息,从而支持软件自适应的决策和执行环节,而后者则是为ASCM构件以及连接子的正确运行提供支撑.
ASCM单元结构框架是ASCM单元运行时的基础设施,从软件个体复合控制过程而言,ASCM单元结构框架主要负责维护运行时的体系结构模型以及环境模型,提供可受策略连接子(即控制策略)指导的控制器;另外,从基于反射角度而言,ASCM单元结构框架除了支撑运行外,还可以在策略连接子的指导下,通过控制构件运行以及相互间的交互关系来实现自适应.软件自适应的实现过程如图5.
图5 软件自适应实现过程Fig.5 Imp lementation process of software adaptation
在ASCM构件组装阶段,选择何种感知构件、行为构件和策略连接子则决定了该单元具备何种自适应能力.但是,在开放动态的环境下,软件运行时的环境及其变化可能会超出开放阶段的预设,那么此时,需要对ASCM单元自适应功能进行适当的调整,从而达到新的需求.下面,在已有的自适应能力在线调整研究的基础之上,介绍一种新的调整方法,即基于软件体系结构的动态演化.
1 )从人工智能视角出发,自适应软件可以通过基因编程、强化学习等相关技术来扩充自适应决策逻辑.但是由于人工智能技术的研究尚未完善,因此该方法尚且缺乏广泛性.
2 )从软件工程视角出发,则可假设第三方知道调整哪些内容,因此研究重点是怎样低代价且高效的实现自适应能力在线调整,常见方法有策略在线升级等.
3 )软件体系结构的动态演化则是指,在软件发布运行后,对软件体系结构进行渐进性修改.由于ASCM构件模型和ASCM单元结构框架的支持,通过体系结构动态演化实现自适应在线调整则显得十分自然.也就是说,由于将软件感知、分析、决策以及执行能力已封装为不同的体系结构元素,可以通过ASCM单元结构框架来实现体系结构元素的在线增删替换,因此,第三方只需适当的并且有选择的在线修改运行时刻的体系结构模型即可,从而实现在线调整软件的自适应功能.
在日新月异的技术发展下,分布式软件的运行环境、内部结构以及应用模式都在发生着显著的变化,如何构造开放环境下具备个体和群体自适应性的软件已经成为软件工程领域的重要挑战.文中在典型的自适应软件概念模型基础上,针对现有研究的局限性,提出新的软件自适应概念模型,即ASCM.该模型融合了个体和群体两个层面上的适应性,并且允许第三方,如维护人员,在必要时对软件自适应能力进行在线调整,以应对开放动态环境的挑战.然后,在此基础上,详细描述了如何构造开放环境下具备个体和群体自适应性的软件,即在基于软件个体复合控制过程上,给出了ASCM构件模型、ASCM单元结构框架、在线调整等软件构造方法,具有环境和体系结构敏感且支持开放环境的效果.
文中主要是针对环境开放、成员异构以及行为主动的分布式计算软件构造所展开的初步探索,虽然提出一些新的想法,但是仍然缺乏一些验证性工作,在后续工作中,将在ASCM模型下,继续完善和深入.
References)
[1] 王千祥,申峻嵘,梅宏.自适应软件初探[J].计算机科学,2004(10):168-171,178.
[2] 梅宏,黄罡,兰灵,等.基于体系结构的网构软件自适应方法[J].中国科学E辑:信息科学,2008(6): 901-920.
[3] Cheng B H C,Rogerio de Lemos,Holger G,et al.Software engineering for self-adaptive systems:a research road map[M].Berlin:Springer,2009.
[4] Rogerio de Lemos,Holger G,Hausi A,et al.Software engineering for self-adaptive systems:a second research roadMap[J].Software Engineering for Self-Adaptive Systems II,2013,7475:1-32.
[5] 杨芙清,梅宏.网构软件:未来的新型软件形态[J].中国教育网络,2005,7(1):21-26.
[6] 余萍,马晓星,吕建,等.一种面向动态软件体系结构的在线演化方法[J].软件学报,2006,17(6): 1360-1371.
Yu Ping,Ma Xiaoxing,LüJian,et al.A dynamic software architecture oriented approach to online evolution[J].Journal of Software,2006,17(6):1360-1371.(in Chinese)
[7] S.Dobson,S.Denazis,A.Fernandez,et al.A survey of autonomic communications[J].ACM Transactions on Autonomous and Adaptive Systems,2006,1(2):223-259.
[8] Kephart JO,Chess D M.The vision of autonomic computing[J].IEEE Computer,2003,36(1):41-50.
[9] Holland JH.Hidden order:how adaptation builds complexity[M].Cambridge MA:Perseus Books,1995.
[10] Lau K K,Wang Z.Software component models[J].IEEE Transactions on Software Engineering,2007,33 (10):709-724.