全国统一邮箱为:youclunwen@163.com
全国统一咨询电话为:0757-63959708 ;15899573055
注册地址为:注册地址为:广东省佛山市禅城区同济西路12号永丰大厦A座1211号
2.本网站承诺确保稿件质量,真诚为您服务,杜绝质量差的文章,为客户创造更高的价值。与您携手,创造更美好的明天。
构造具备自适应能力的软件
发布日期:2022-10-15 11:15:00摘要:
随着应用场景的变迁和自身复杂性的增长.软件需要具备主动适应环境变化的能力.能够依据环境变化动态调整其行为.软件自适应的实现技术跨越了软件监控、上下文敏感计算、决策和控制理论、软件演化和维护等多个学科分支.如何系统化地构造此类软件.是软件工程领域所面临的巨大挑战.从自适应软件构造与实现这一角度出发.以‘·感知一决策一执行‘’软件自适应基本周期为主线.对已有的研究和实践进行综述.给出软件自适应的概念内涵.概述软件自适应活动在感知、决策、执行各环节上的特征分类.阐述面向自适应软件构造、关注程度较高的一系列使能技术.进而在分析典型研究项目现状的基础上.给出自适应软件构造领域的未来主要研究趋势.
关键词:软件自适应;上下文感知冲间件;软件体系结构;群体适应Constructing Software with Self-AdaptabilityDING Bo, WANG Huai-Min,
SHI Dian-Xi(National Key Laboratory for Parallel and Distributed Processing, College of Computer, National University
of Defense Technology,Changsha 410073, China)Corresponding author: DING Bo, E-mail: dingbo@nudt.edu.cnAbstract: Along with the transition of application scenario and the increase
of its own complexity, software needs the capability ofactively adapting itself to the changes in its
environment, which means that it needs to adjust its behavior in response to those changes.The realization
of software
self-adaptation is closely related to many academic fields such as software monitoring, context-awarecomputing, decision and control theory, software evolution and maintenance, and etc. It is a great
challenge to construct this kind ofsoftware systematically in software engineering practice. From the
perspective of the construction and implementation of self-adaptivesoftware, this paper reviews the existing research and practices based on the “sensing-decision-execution” basic self-adaptation cycle.This study presents the concept of software self-adaptation and a taxonomy of the characteristics of sensing, decision and executionactivities, summary
those most focused enabling techniques for constructing adaptive software, analyze a set of typical
research projects,and then describe the future research trend in the field of constructing adaptive software.
Key words: software self-adaptation; context-aware; middleware; software architecture; collective adaptation
在生物学领域.当环境(外部客观条件)改变时.机体的细胞、组织或器官通过自身代谢实现功能和结构的相应改变.这个过程被称为适应.20世纪90年代初.研究者将‘·适应‘,词引入软件工程领域.提出了软件自适应的概念,代表了人们对软件能力的种理想期望一一软件应当能够主动应对各种变化,在动态环境下持续提供符介用户预期的服务.
软件自适应的概念提出以来.H.是学术界和工业界关注的热点.例如:美国国防部高级研究计划署(DARPA)在20世纪90年代资助了系列与‘·自适应软件‘’[1]相关的项目:2006年.卜内基梅隆大学软件工程研究所在美国军方资助下发表了题为《超大规模系统:软件末来的挑战》的报告.指出持续的适应是军事领域大规模软件系统夺取制信息权的关键[2]欧盟 FP7框架所资助的PerAda项x(2008-2011)在uJ演化和自适应的普适系统、自适应的安全和可靠性等方而开展了系列研究
软件自适应之所以成为研究热点.主要山如下两个囚索所H.接驱动:方而.软件与现实世界的结介越来越紧密.例如:美军F-22飞机上有80%的设备山软件控制[f}l二近3年内.基于手机等新刑终端的移动云计算市场预计将年均增长88%.2014年全球移动云计算市场将达到95亿美元【5】.应用场景的变化使得软件小丙局限于封闭静态的企业和桌而环境.动态、开放的现实世界己成为其运行环境的H.接组成部分.软件只有具备了适应能力.刁-有叫能持续提供符介用户预期的服务.另方而.口前许多大刑分布式应用的代码行数己经达到了千力甚至更高量级[f}l软件自身变得越来越复杂.并呈现去中心化、故障常态化等特点.为软件管理、维护和叫,ii.::运行等带来了新挑战.软件迫切需要具备自适应能力,能够及早发现问题的诱囚,并在出现问题时进行自动修复.软件工程研究者已经在自适应领域开展了大量工作.例如:早期计算反射(computing reflection)研究的关注点即为如何在运行时感知软件状态及调整其行为[7,8];IBM 所提出的自主计算概念强调软件的自配置、自优化、自修复和自保护等;Rainbow[9]、K-Component[10]、MADAM[11]、网构软件技术体系[12]等强调基于体系结构技术实现软件自适应;Hadas[13],Accord[14],PCOM[15],ACEEL[16],CompAA[17]等从构件模型角度研究如何构造自适应软件;OpenCom/OpenORB[18],Gaia[19],CASA[20]及早期的 Quo[21],DynamicTAO[22]等则从中间件/软件框架角度支持或实现动态适应.此外,具备自管理能力的体系结构描述语言和框架[23]、软件自愈[24,25]、分布环境下负载均衡和容错等研究均可划归软件适应的范畴.然而.软件自适应是个外延}分广泛的概念.其实现技术涉及到软件工程、人工智能、复杂系统等多个学科.无论对于研究者还是实践者都是巨大的挑战.具体到软件工程领域.这种挑战主要表现为缺乏系统化的理论、方法、工具和运行支撑设施.人们距离系统化构造自适应软件这口标尚有较远距离.本文以‘·感知一决策-执行‘,软件自适应基本周期为主线.对自适应软件构造的己有研究和实践进行综述.在分析现状基础上.指出末来研究趋势.本文第1节给出软件自适应的概念内涵.第2节对软件自适应活动在感知、决策、执行等环节所表现出的特征进行分类.第3节概述上述各个环节的关键使能技术.第4节对若十具有代表性、以构造自适应软件为口标的典刑项口进行分析.第5节给出本领域的末来研究趋势.第6节对全文进行 总结.1概念内涵考虑如下些典刑场景:
场景1(多链路通信中间件).在服务器上配备了匀_为备份的多块网傲多个物理链路).当止在使用的链路发生故障时.服务器上的中间件叫以自动切换链路.使得上层网络应用能够以7x24小时提供小间断服务.
场景2(自适应服务器池).某个云服务后端采用大量虚拟机组成服务器池来处理用户请求.为了使得运行费用最小化系统能够依据负载来动态调整服务器池中的虚拟机数目.
场景3(任务的动态Offloading}ZS}).在移动云计算环境下.移动终端(如智能手机)通过无线网络连接到云计算基础设施.计算服务山云计算基础设施和终端协同提供.在完成咚}像识别等复杂任务时.任务执行模块叫以依据当前网络带宽、终端剩余电量等环境状态.在移动终端和云端之间迁移.从而最大限度地降低开销、提高用户体验.
观上.我们称上述场景中的软件具备自适应能力.进步分析则叫以发现.这些场景的共同点在于:当外部运行环境发生变化时.软件能够通过内部的主动调整来应对变化.囚此.综介‘·适应‘’词的本意和实际需求.本文将软件自适应定义如下:
定义1(软件自适应).软件自适应是指为了保证持续、高质量地提供服务.软件在运行时检测环境变化和自身状态.据此对自身行为进行主动调整的活动.
能够实施自适应活动的软件被称为自适应软件.传统软件与自适应软件的Ix_别在于:前者仅仅具有明确定义的输入和输出.而后者还叫以根据输入之外的环境变化和自身状态信息来调整其行为(如图1所示).
从定义1叫以看出.软件自适应包含如下3个阶段:
(1)感知.即软件感知到环境变化和自身状态二
(2)决策.即软件依据所感知到的内容做出行为调整决策二
(3)执行.即软件实施在线调整动作.
例如.在场景1中:软件首先需要感知到外部通信链路叫用性的变化二然后.根据环境和当前自身状态进行决策.决定是否切换以及切换到哪条通信链路二最后.执行链路切换动作.这样的‘·感知一决策一执行‘,过程在本文中被称为软件自适应基本周期,它将是贯穿本文后续内容的主线.
2 特征分类
综介本领域己有研究和工程实践.本节将对软件自适应活动在感知、决策、执行各个环节所表现出的基本特征进行分类(如图2所示)
.
2.1感知环节的特征分类
在感知环节.叫以从感知对象、感知手段、数据层次等角度对软件自适应活动进行分类.
在感知对象方而.早期软件被假定在封闭、预设的环境中运行.囚此并小强调对环境的H.接感知.环境的变化主要通过作用于软件内部状态的方式间接表现出来.例如.DARPA于1997年将自适应软件定义为叫以评估其自身行为.并在评估结果指明其无法完成指定任务.或有叫能实现更佳功能或性能时.改变自身的行为[1].这个定义中并末出现任}i与环境相关的内容.然而.随着Cyber-Physical系统【27】软件密集刑系统[28}网构软件[12】等新刑计算范刑的出现,软件运行环境叫能发生频繁的动态变化,囚此,近期研究更多强调环境信息的显式化,实现对外部环境的白接感知并驱动适应动作[29】但是.软件对自身状态的感知仍是必须的.囚为对自身状态的理解是实现行为调整的前提和基础(见第3.1节计算反射).在场景1中.即表现为软件需要知道自身止在使用的通信链路.
在感知手段方而.软件叫以通过如下些手段来感知环境变化和自身状态:
(1) 直接访问物理传感器
(2)监视计算空间状态的非侵入式代码.例如.通过硬件、操作系统、虚拟机、中间件或应用API获取数
据【30】
(3)通过硬编码、而向方而编程等各种形式植入到软件中.探测软件内部状态的程序插装[31]代码.
例如.在场景1中.叫使用第2种手段来感知底层通信链路的叫用性.使用第3种手段来确定中间件当前使用的通信链路.
在数据层次方而.感知环节得到的数据叫能是原始的传感器或探针信息.也叫能是经过去伪存真、去粗取精、从大量原始信息中汇聚得到的高层态势信息.后者们们才是后续决策环节真止需要的数据.从原始信息获得高层信息的过程,们们涉及到规则推理、机器学习、数据挖掘等技术.
2.2决策环节的特征分类
在决策环节.叫以从自主程度、决策模块叫扩展性、决策能力独立性、模刑维护、组织方式等角度对软件自适应活动进行分类.
在自主程度方而.需要回答的问题是软件适应过程具有T中程度的自主性.文献[32]提出了软件自主能力成熟度的5个分级.并}}_认为完全自主才是理想的.但在当前的技术条件下.这目标显然小现实.只有在人或多或少十预软件适应过程的前提下.才能构造出具有实用价值的自适应软件[[33.34].本文依据人参与的程度.将软件决策能力山低到高分为:(1)山人做出决策.此类软件通常被称为uJ适应软件(adaptable software)而非自适应软件(adaptive software) 【35】(2)人预先指定动作策略.即明确的、形如‘何时干什么‘’的策略.软件在运行时根据策略进行决策.最常见I均策略形式是If-Then和ECA(event-condition-action) 【36]形式;(3)人预先指定效用(utility)策略.即指定各种场景下的收益.软件据此进行实时规划.进行决策二}4)人在某个层而上指定目标(goal)策略.如币」达到这目标.山软件基于其知识和内建的学习、规划等算法来决定.第(2)种和第(3)种是当前软件自适应研究和实践中采用较多的方法.(1)由人做出决策.此类软件通常被称为uJ适应软件(adaptable software)而非自适应软件(adaptive software) 【35】(2)人预先指定动作策略.即明确的、形如‘何时干什么‘’的策略.软件在运行时根据策略进行决策.最常见I均策略形式是If-Then和ECA(event-condition-action) 【36]形式;(3)人预先指定效用(utility)策略.即指定各种场景下的收益.软件据此进行实时规划.进行决策二}4)人在某个层而上指定目标(goal)策略.如何达到这目标.山软件基于其知识和内建的学习、规划等算法来决定.第(2)种和第(3)种是当前软件自适应研究和实践中采用较多的方法.(1)由人做出决策.此类软件通常被称为uJ适应软件(adaptable software)而非自适应软件(adaptive software) 【35】(2)人预先指定动作策略.即明确的、形如‘何时干什么‘’的策略.软件在运行时根据策略进行决策.最常见I均策略形式是If-Then和ECA(event-condition-action) 【36]形式;(3)人预先指定效用(utility)策略.即指定各种场景下的收益.软件据此进行实时规划.进行决策二}4)人在某个层而上指定目标(goal)策略.如何达到这目标.山软件基于其知识和内建的学习、规划等算法来决定.第(2)种和第(3)种是当前软件自适应研究和实践中采用较多的方法.
在决策能力的可扩展性方而.文献[37]中提出了开放/封闭适应性的概念:前者是指软件在运行时可以引入新的自适应动作.从而应对开发阶段末预期的变化二后者是指软件的自适应能力在开发阶段即己确定.在开放适应性中.自适应能力(可细分为感知、决策、执行等能力)既可以山第二方来动态扩展.也可以是软件通过某些学习算法动态获得的[f}gl.例如.场景1仅仅预期了链路故障的情况.而实际运行时.若能通过动态加载新的策略来考虑线路带宽差异.则自适应通信中间件的自适应决策能力是叫扩展的.
在决策模块独立性方而.根据决策模块与软件功能模块分离的程度.文献[39]将自适应分为内部机制和外部机制:前者是指决策逻辑和软件业务逻辑混杂在起.通常使用条件语句、异常等程序语言层而的机制来实现决策过程二后者是指将决策模块与软件功能模块分离.决策模块控制软件业务模块的行为.驱动适应动作.外部机制的优点包括:(1) 可以实现关注点分离.从而有利于软件维护、决策能力的扩展等二(2)决策模块可以被重用.从而降低自适应软件的开发难度二(3)有叫能在决策模块掌握环境和软件状态的全局信息.从而改善决策的质量.
在模刑维护方而.决策过程uJ能是Ad Hoc的.也可能基于所显式维护的模刑.模刑是软件对环境和(或)自身状态的理解.它的存在有助于使相关的知识显式化.从而提iu自适应决策的质量.典刑的模刑包括实现自优化的队列模刑、对软件进行i}!层抽象的体系结构模型l领域相关模型l等.
在组织方式方而.除了常见的集中决策方式外.分布式系统的许多场景下叫能需要引入非集中式方式.通过软件实体之间的对等协商来实现群体自适应决策.典刑适用场景包括:山于物理条件的限制.集中式协同无法实现(例如在某些无线传感器网络中)二成员属于小同的管理域.无法集中控制二需要非集中决策的其他优点.如避免单点失效、提高性能等.
2.3执行环节的特征分类
在执行环节.叫以从动作类刑、动作层次、效果预期等角度对软件自适应活动进行分类.
在动作类刑方而.要对软件行为进行调整.所执行的自适应动作叫以是参数适应或是结构适应【42】前者是指小对软件实现进行修改的情况下改变软件行为.例如重新设定某些变量、修改软件的某些叫配置属性等二后者则是指通过修改软件的实现来改变软件行为.如替换算法和模块等.参数适应最简单的例子是TCP协议中的拥来控制[43]一一通过调整窗u大小来改变协议栈行为.从而适应网络流量的变化.结构适应叫以通过动态aoP(aspect-oriented programming)、构件和服务动态组介等方式来实现.它Ti-.Ti能够带来更大的灵活性.但也会带来更大的风险,例如叫能破坏软件体系结构的完整性和致性等.
在动作层次方而.自适应动作叫以发生在操作系统、中间件、应用本身等各个层次上.其中.内建于操作系统和中间件层的适应动作般是共性的.甚至对上层应用是透明的.场景1的中间件链路切换就是典刑实例.适应动作也叫跨越多个层次.仍以场景1为例.若上层是对数据实时性要求较高的应用(如基于流媒体的视频).则在链路切换过程叫能无法达到完全的透明.需要上层应用也进行适当处理(如折停播放或降低视频质量).
在效果预期方而.对软件适应效果的预期uJ以是尽力服务(best-effort).也uJ以是小允许失败(mission-critical)的:前者是指软件在环境发生变化时尽量提供满足用户需求的服务二后者则是指软件自适应必须达到某个口标.通常会伴随着对动作结果止确性、有效性和开销等的评估和校验机制[38】.在场景1中.如果中间件上层支撑的是关键应用,则要求其适应动作小允许失败,即使山于客观原囚无法保证链路叫用性也应当及时报警.
3.使能技术
本节将以感知一决策一执行基本周期为主线.对自适应软件构造与实现过程中当前关注度较高的些使能技术进行概述(如图3所示).
3.1基础使能技术
基础使能技术是指跨越了感知一决策一执行各个阶段.为自适应软件构造与实现奠定基础的技术.包括反射、中间件和应用程序框架、运行时软件体系结构、自适应软件设计模式等.
(1)计算反射
计算反射最早山S mith在1982年作为种程序设计范刑提出【7】.他指出:既然软件叫建立外部世界的机器描述.并借助这描述来操纵外部世界.那么它也叫建立对自身的描述.并借助这描述来操纵自身.Maes在此基础上系统地阐述了反射系统和反射的概念[fgl:反射系统是指内建了自描述数据结构的系统.这数据结构与其描述对象囚果关联(causally connected)二反射是指反射系统基于这自描述所实施的访问、推理和修改自身的行为.反射在软件自适应的使能技术中具有基础性地位.文献[44」指出:‘·自适应软件本质上是个通过对自身进行反射来改变其行为的系统‘’.
(2)中间件和应用程序框架
中间件是位于平台(硬件和操作系统)和应用之间的叫重用软件服务.其基本思想是:抽取软件构造中的共}h}问题(如通信、异构、并发、事务等).封装其解决机制.对外提供简单统的接日.从而减少开发人员在解决这些共性问题时的难度和工作量.虽然许多场介我们并小严格IX_分中间件和应用程序框架.但相对于中间件所提供的公共服务而言.应用程序框架与应用结介更紧密.它是应用的部分实现.提供了大量实现通用功能的公共代码.这些代码叫以被有选择性地使用、复写或是通过用户代码来扩展.从而支持开发者来构造而向特定领域的应用程序[45].具备自适应能力的软件比传统软件更为复杂.而现有操作系统和语言尚末为此类软件的构造提供有效支撑.囚此.Rainbow【9,39】K-Component【38】MADAM【11】等大多数软件自适应项目都提供了相应I均中f}J件或应用程序框架一一通过将感知一决策一执行各环节叫重用部件沉淀到中间件或框架中.叫以简化上层自适应软件的开发难度.
(3)运行时软件体系结构
IEEE将体系结构(architecture)定义为‘·个系统的基本组织方式.包括其构件、构件间联系、构件与环境的联系以及指导其设计和演化的原则.简单地说.软件体系结构将系统抽象为山并发构件(计算实体)和连接子(计算实体间的交互)组成的网络.从而为架构师提供个系统级、小涉及软件代码细节的高层抽象.这抽象叫以刻u软件的基本架构.支持系统性质的评估、分析和验证.
早期的软件体系结构仅仅是开发阶段的静态实体47】.其主要研究内容包括体系结构描述语言[:}s}、体系结构风格[f}}l等.随着应用模式的变更.软件的需求、环境等都叫能在运行时发生变化.体系结构层而上的动态变化小叫避免.运行时软件体系结构的概念被引入[23].它至少叫以在感知和执行两个阶段为软件自适应提供支持:在感知阶段获取体系结构信息:在执行阶段使得体系结构uJ动态调整.文献[49]认为.基于体系结构实现软件自管理具有如下些优点:通用性、适当的抽象层次、潜在的叫扩展性、叫以利用体系结构领域己存在大量工作、有叫能产生集大成的方法等.
(4)自适应软件设计模式
设计模式是对软件设计过程中普遍存在的问题所提出的解决方案【50}.是重用软件设计思想的种有效途径.针对N适应软件的构造与实现:Ramirez等人总结f包括传感器工厂(sensor factory),基于用例的推理(case-based reasoning)、服务器重配置(server reconfiguration)等在内I均12种软件设计模式[s}}:Schmidt等人总结出系列叫用于自适应中间件的设计模式.并在中间件TAO和ZEN等中得到应用[}sr:S hackleton针对普适计算环境.给出了包括本地规则、止反馈和负反馈等自主计算的6种设计启发式.并认为有必要将之形式化为设计模式[ass]二Gomma等人提出了运行时对软件进行重配置I}I`J Master/Slave, Client/Server, 1r集中控制等模式[54}
3.2感知使能技术
如第2.1节所述.感知环节的目标是获得环境信息和软件自身状态信息.上下文感知计算(context-awarecomputing)【55}中的环境上下文处理技术对前者己经有了较为系统的研究.后者则是软件监测(softwaremonitoring)技术I均关注点.
(1)环境上下文处理
上下文(context)又被译为情境.是与软件输入/输出相对的个概念.研究者从小同角度对其作了涂释:S chilit等人早期将上下文定义为位置、周围人和物的标识集介、这些物体的变化情况等【55】:Brown等人将上下文定义为计算机所了解的用户环境中的元索【56]二徐光裕等人将上下文信息的内涵定义为计算的上下文、用户的上下文、物理的上下文和上下文的历史[57]二等等.般而言.在软件自适应领域.上下文主要指叫能影}}向应用行为、需要应用进行适应的外部环境和场景集介.目前.上下文处理技术的研究主要围绕如下些方而展开:
上下文建模.即如}I」表达上下文信息及其逻辑关系.例如键值对模刑、标记模刑图形模刑、对象模刑
基于逻辑的模刑、基于本体的模刑等[58]二
上下文获取.即如}i」在运行时获取环境上下文以供应用访问.种较为常见的机制是:将传感器以插件
等形式包装为具有统接u的软件实体[[59-GI].从而使上层软件在设计时无需与具体硬件绑定.应用访
问上下文的方式则叫以分为传统API l从格、数据库)从格、回调/事件)从格、文件接m从格等o_]二
上下文聚介.即对原始的、末经处理的底层上下文信息进行汇集、筛选.判断和推导出应用所需要的高
层上下文信息.在现有实践中.基于规则和内置知识库的聚介方法具备叫定制、行为叫预期性好等优
点‘被许多与上下文处理相关项口采用‘例如CoBrA,SOCAM}61},Gaia}【19}等.
(2)软件监测
软件监测技术的研究始于ao世纪}o年代.早期主要用于程序调试.支持程序员实时查看程序的内部状态[6364].目前.软件监测技术己经广泛应用于软件调优、质量评估、实时容错、软件维护等领域[[651.分布式软件系统是当前软件监测领域关注的重点.其所具备的缺乏集中控制、规模增长、传输延迟、异构性等特点.为软件监测技术带来了系列挑战[66,67].具体而言.相关研究表现出如下些趋势:
监测粒度从代码级扩展到构件、服务和体系结构层次.例如:REQMON通过需求分析和运行时监测技
术结介实现对Web服务行为的监控.保证电子商务的uJ用性:Garlan等人使用探针(probe)和量规
(gau ge)实现对软件体系结构的监测.进而实现软件的N适应[69]二
监测范围从单层次向多个层次扩展.通过对多个层次数据进行监测和综介.全而刻U复杂分布式系
统的运行状态.典刑实例是德国奥尔敬堡大学的Tru S oft项目.其监测系统的设计跨越了硬件、操作系
统、Java虚拟机、中间件和应用多个层次[po]二
监测实现从单进程向多进程乃至多处理机形式过渡.例如.佐治亚理工大学提出的软件断层
(software tomography)技术[071】监测任务分解.把子任务分配给同监测目标的多个实例.从而减少监
测过程给单个实例所带来的性能损失.
3.3决策使能技术
软件叫以依据预先指定的策略实现决策.也叫以结介人工智能技术、交叉学科相关技术等应对各种复杂情况.减少人的十预.
(1)基于策略的管理
策略是指导软件行为的元层信息no.对策略((policy)的研究是山软件日益复杂的趋势所推动的一一大规模软件系统需要种灵活、系统化、叫指导的方式进行动态行为管理和控制.人们开始将管理逻辑以策略的形式从软件功能中独立出来.这种独立性叫以实现自适应决策与软件业务功能的关注点分离.从而有利于软件自适应过程中知识和基础设施的重用.实现软件自适应这维度上相对独立的开发和演化活动.
对策略的研究主要围绕以下几个方而展开:
策略语言.为策略的表达提供手段.为便于理解和修改.它们大多比高级语言简单.I I_以动态解释执行为
主.例如.PDL(policy description language)使用ECA(event-condition-actioon)形式I均声明性语言来定义
策略[}'3};Ponde:语言使用域、事件和约束等系列抽象来定义安全管理策略【74】;IBM的PMAC 自主计
算平台使用基于XML的 ACPL(automatic computing policy language)来表达策略[75]二等等二
策略冲突.多条策略的同时执行.叫能会导致小叫预期的后果.策略冲突研究包括两个方而:冲突检测和
冲突消解.后者是指当检测到冲突时.选择哪条(些)策略继续执行.例如:文献[72]研究了Ponder策略
的模态冲突(modality conflict)问题.将安全管理背景下的策略模态冲突划分为义务冲突、非授权的义
务冲突、授权冲突等:Rainbow使用预定义的效用来区分策略优先级[f}l二等等二
策略求精(refinement)关注如币」从所给定的高层需求和目标中生成具体的、机器叫理解的动作策略.其
实现们们与人工智能方法密切相关.包括基于用例的推理方法、基于强化学习的方法、基于基囚编程
的方法等nil软件自适应研究的重要分支之是采用Agent技术[f}sl.包括借鉴Agent的内部组织方式[f}}l、应用Agent的理想一信念一意图}BDn模 3FQ fso}、使用而向Agent的软件工程方法[fg}l等.文献[82]指出.IB M在自主计算中所提出的自配置、自优化、自修复和自保护等概念即是受Agent特性的启发二类似的问题们们有类似的解法.基于用例的推理(case-based reasoning.简称CBR)即基于这假设.基于用例的推理uJ以从过去的成功决策中获取经验.在软件自适应领域己经有些初步的探索.文献[83]将基于用例的推理列为自适应系统重要使能技术二强化学习(reinforcement learning.简称RL)从行为学、自适应控制等理论发展而来.它把学习看作试探和评价的过程.通过小断试错(trial and error),与环境交4_获得知识.改进策略.文献[84」指出.强化学习叫以较好地应用于自主计算软件系统的动作选择之中.满足此类系统中动作规划过程对多目标决策、兼顾反应式决策和慎思决策、动态性(小确定性)、高效性等的要求.典刑实例是K-Component项目中I均介作强化学习(collaborative reinforcement learning)算法.它对传统强化学习算法中反馈模耳」进行了分布式扩展,以实现软件自适应动作其他些叫以辅助实现自适应决策的人工智能技术和方法包括基囚编程、规划、模糊逻辑等[30.37](3)交叉学科相关技术与软件自适应决策环节密切相关的交叉学科包括控制理论、决策论、仿生学、社会和经济理论等.控制理论是软件自适应的系统科学基础之.许多研究者尝试H.接应用控制理论的己有成果:Abdelwahed将模所」预测控制(model predicative control)应用到分布式系统中.实现性能自优化[ss},Karsai基于监督控制(supervisory control)理论.将自适应软件系统划分为Supervisory层和Ground层.前者负责优化、健壮性和灵活性.后者负责基本功能和性能【86】:Kokar基于控制理论提出了4种软件自控制模【87】二软件控制论(software cybernetic)试图将控制论映射到软件领域【88】等等决策(decision theory)主要研究在环境uJ能无法被完全预知的情况下.决策者如}i决策以及如}i」达到最优决策.效用理论(utility theory)和概率理论(probabilistic theory)是决策论I均两个重要基}(; }s}}:前者uJ以形式化定义用户偏好.后者则叫以用来表达环境和其他囚索的小确定性.二者在软件自适应中都得到了较为广泛的应用:Walsh等人将效用函数用于自主计算.实现动态和异构环境下自主元索对计算资
源使用的持续优化[}}o}:MADAM使用效用来支持基于软件体系结构的自适应.决定币帅寸执行币呀中体系结构维护动作[11】二基于概率理论的马尔叫夫过程和贝叶斯网络被应用于软件的自诊断、自恢复和容错中[3】;等等:生物体是典刑的自适应系统.对生物个体和群体行为的模仿.是实现软件自适应的有效途径之.文献[91 ]于平板扩散、复制、趋化(chemotaxies), Stigmergy等生物学现象.提出了若十适用于分布式系统的设计模式二文献f921指出.生物学所发现的某些规律uJ以应用到软件自组织算法中:Bionet中间件上应用的架构是对蜜蜂、蚂蚁等社会化昆虫组织方式的模仿[[93]二文献[94]通过对生物进化过程的模仿来实现自适应决策引擎的自动构造和优胜劣汰二等等二社会和经济领域的其他些研究成果也叫以被软件自适应所借鉴.例如.使用微观经济学中的博弈论、机制设计等实现非集中环境下的群体协同,在多Agent领域己经存在许多对此类工作的讨论[}}s}
3.4执行使能技术
对软件进行在线修改的研究山来以久.在早期的ED VAC(离散变量自动电子计算机)中.程序指令被放置在uJ以修改的存储器中.程序员即uJ使用所谓的自修改代码(self-modifying code)来达到程序动态优化、减少内存占一用等目的[96].除了较为简单的参数动态配置外.在当前工程实践中.动态AOP,基于构件的动态配置、服务动杰y1 I介、代码动杰汗稗等枯犬u1以存小同维度}少持软件的存线修改.
(1)动态AOP
动态AOP通过运行时的方而(aspect)编织技术实现软件的在线修改.常见的实现手段包括使用预定义的截获点、使用代理(proxy)设计模式、二进制代码动态植入等.文献[97]}R出.山于自主系统中许多与适应有关的内容都是横切关注点(如缓存控制、安全、持久性支持等).囚此.动态AOP能够满足自主系统中适应能力的动态性、易修改、uJ封装、支持细粒度改动等特性.软件自适应领域些典刑的实践包括:文献f9sl给出了策略和方而动态织入相结介实现软件自适应I`}J实例二在CASA(contract-based adaptive software architecture)}}0]中.lJ而I`}J动态织入和撤消((unweavin}是实现软件自适应的主要途径之二文献f991使用而向方而的组装(aspect-orientedcompostion)技术实现软件适应二文献[100]而向构件化系统服务质量保证的需要.提出了个基于规划和动态AOP的自适应中间件;等等.
(2)基于构件的动态配置
相对于而向过程、而向对象等软件开发技术.构件技术至少有如下两个优点:
叫以支持大粒度、二进制级别的重用:
山于构件和容器间接日的标准化.使得构件叫被动态组装、配置和管理.
后者是软件自适应的重要使能技术:为了适应小断变化的环境和需求.构件化系统叫以通过构件粒度的动态配置进行在线演化.如构件升级、新功能构件的加入、过时构件的淘汰、必要时的构件迁移等.例如:SOFA构件模刑及其扩展DCUP(dynamic component upgrade)通过定义系列止交、uJ缩放的抽象来支持构件在线升级[ioi]二文献[102]给出了反射式构件动态配置模刑RDRM和相应参考实现StarDRP:Accord而向自主计算领域.通过构件系统的动态组装来实现软件自适应[‘“]等.
(3)动态服务组合
所谓服务.是指对资源进行封装的自治、'I'-台独立的实体.它们叫以被描述、发布、发现和松散绑定.而向服务的计算(service-oriented computing)使用服务来支持快速、廉价、uJ 4.操作、uJ演化和大规模的分布式应用的开发[103].在而向服务的计算中.应用叫以动态定位和使用服务.服务间组合关系叫以被动态调整.从而为软件在线修改提供系统化的支持[I 01.105]
(4)代码动态迁移
代码动态迁移是指在分布计算环境的小同结点之间动态迁移程序实例、代码或对象.这种迁移叫以分为强迁移和弱迁移[io}}.前者是指代码、数据和执行状态起迁移二后者是指仅仅迁移代码(和数据).执行状态并小迁移.在迁移之后程序叫能要重新开始运行.
代码动态迁移是山分布环境下多个结点配介实现软件自适应的重要手段.典刑实例是本文第1节场景3中的任务动态Offloading机制一一在山‘云‘’和‘端‘’共同组成的移动云计算环境中.叫以允许部分任务从移动端动态迁移到云端执行.从而适应能耗状态、网络带宽等环境变化.例如:C1oneCloud项目能够利用虚拟机迁移技术.无缝地将移动设备的应用程序执行块(execution block)迁移至云端执行[io}l.在文献[ 108]中.单个移动云计算应用被划分成多个称作Weblet的构件.允许根据实际运行时环境执行配置策略.从而动态地决定Weblet是在移动设备端执行还是在云端执行;等等.
4典型实践
本节选取了若十具有典刑性、以系统化地构造具备自适应能力软件为目标的软件工程研究项目.对这些项目的概况及其感知、决策、执行各个环节的实现技术进行分析.
4.1典型项目概况
(1) Rainbow Rainbow}9.39.io9}是卜内基梅隆大学软件工程研究所的自适应软件项目.其目标是构建个高叫重用、基于软件体系结构技术的自适应软件框架.Rainbow的总体架构山系统层、翻译设施和体系结构层组成.其中:系统层山目标系统、获取监控信息的探针、对目标系统进行在线调整的效用器等组成二体系结构层负责在运行时根据探针所收集的信息维护运行时体系结构模刑.进而基于该模刑状态和预定义策略触发自适应动作二翻译层负责将体系结构层所做出的动作决策映射到各种类刑的目标系统上.通过效用器对目标系统进行在线调整.上述每层又包括若十叫定制实体(如策略和映射规则等).从而提高了软件框架的重用性.
(2) K-Component在K-Components【10 38]项目中.运行时体系结构模刑小仅叫以为软件自适应决策提供依据.也叫以作为软件体系结构在线调整的入u.通过操纵该模刑来对目标系统进行在线修改.在K-Component中:构件是基层实体.负责完成计算任务二容器是元层实体.负责依据策略触发自适应动作.自适应动作叫以是构件所提供的(特定形式)方法.也uJ以是对软件体系结构模刑的修改.后者将会通过体系结构反射(architectural reflection)机制作用到实际运行系统上.K-Component的另特点是构件的每个自适应动作均会返回个回馈(reward)值.代表fN适应的效果.K-Component uJ以基于该值来实现强化学习、确定当前环境下的最优动作.并进步通过对强化学习算法的分布式扩展来实现多个结点之间的协同.
(3) MADAM&MUSIC MADAM(mobility- and adaptation-enableingmiddleware)是支持移动环境下自适应软件运行I均中f}J件.在MADAM的设计中.同构件叫以有多个适介小同环境的实现体.自适应主要体现为实现体的动态切换.例如当应用迁移到小同设备上时自动加载小同界而.MADAM为此维护了两类运行时体系结构模刑:框架体系结构模耳」指明了需要哪些构件二实例体系结构模刑则指明了对应于这些构件,加载了哪些实现体.
MADAM中间件叫以依据当前环境状态和效用函数进行规划.将框架体系结构模刑实时映射到实例体系结构模刑.并据此进行实现体切换动作.MUSIC【111]将上述自适应机制进步扩展到而向服务的体系结构中.其实例体系结构模刑中的成员既叫以是构件实现体,也叫以是动态发现的服务.
(4) Auxo Auxo【112]是以体系结构为中心、支持自适应软件开发和运行的应用程序框架.其特点在于小仅能够实现自适应.也叫以支持第二方(如运维人员)对‘·感知一决策一执行‘’软件自适应基本周期的灵活在线调整.从而在线扩展其自适应能力.Auxo框架山两部分组成:Auxo体系结构风格和Auxo运行基础设施.前者定义系列用于支持Auxo软件开发的体系结构元索.包括感知构件、行为构件、策略连接子、约束等.其特点在于小仅叫以封装业务逻辑.也能够将自适应周期各个环节封装为体系结构元索二后者维护了个与实际系统囚果关联的运行时体系结构模刑.方而叫以基于该模刑实现自适应.另方而.山于基本周期各环节均己被封装为体系结构元索.囚此第二方叫以在必要时通过在线修改体系结构来扩展软件的自适应能力.
(5) 3PC&PCOM3PC(peer-to-peer pervasive computing) 【11 3]是以普适计算为背景、uJ以在多个层次上为软件适应提供支持I均软件基础设施.3PC山如
以上内容由论文代写网-优创网整理发布,详情请浏览http://www.youclunwen.com