文档库 最新最全的文档下载
当前位置:文档库 › 5-需求驱动的软件自适应方法

5-需求驱动的软件自适应方法

彭 鑫 陈碧欢 赵文耘

复旦大学

需求驱动的软件自适应方法

关键词:软件需求自适应

考结构(如图1所示)在自适应软件研究和实践中得到了广泛应用。按照这一参考结构,每一个具备自适应能力的软件实体都具有一个称为MAPE-K 的控制环路。其中,监控(monitor)环节负责侦测上下文环境及系统自身的事件,发现可能导致自适应调

整的变化,分析(analyze)环节负责分析变化对于需求及相关约束的影响,规划(plan)环节负责规划能够适应变化的自适应调整方案,执行(execute)环节负责执行规划的调整方案,知识(know-ledge)则表示完成以上各项任务所需的知识。

自适应软件与自治计算

目前,以网构软件为代表的新形态网络化软件系统逐渐成为主流。同时,普适计算和社会计算的兴起促使软件与物理世界和社会环境进一步融合。这些都使得软件系统越来越多地运行在复杂、开放并且动态变化的网络环境、物理环境和社会环境之中,导致软件的运行时行为经常偏离系统的需求规约或处于非优化的运行状态。因此,自适应逐渐成为许多软件系统必备的能力。具备自适应能力的软件系统能够在运行时根据上下文环境和需求的变化动态地调整自身的结构和行为。通过运行时的自适应调整,软件系统可以实现一系列重要的运行时特性,包括保障可靠性和鲁棒性、提高能源利用效率、实现失效的自动恢复、动态配置和定制以及动态自优化等[1]。

软件系统的自适应是一种典型的自治管理能力(包括自配置、自优化、自治愈和自保护四个方面[2])。IBM

提出的自治元素参

图1 IBM 提出的自治元素参考结构[2]

需求反射与运行时需求模型

传统的软件系统(即非自适应系统)的规格说明建立在对于需求和系统上下文环境充分理解的基础上。例如,一个救护车系统的需求规格说明及体系结构设计往往建立在一系列涉众需求和上下文环境的假设基础上,例如涉众的质量偏好、系统的峰值和平均请求量、可用的救护车资源、网络通信状况等。在这些因素相对稳定且能够被充分理解的情况下,软件开发者可以在开发阶段通过权衡决策确定软件规格说明,并开发相应的软件解决方案。

然而,网络化软件系统面临的运行时环境往往具有很大的不确定性并处于持续变化中。这就使得开发者关于系统需求和设计的静态决策无法适应动态变化且不确定的运行时环境。而另一方面,系统需求中往往包含一些在任何情况下都应当满足的关键性目标,同时包含一些可以适当放宽的非关键性目标,从而为系统提供了运行时动态调整所需的灵活性[1]。例如,按照传统的开发过程,救护车系统的需求规格说明需要对上下文环境做出假设(如每分钟呼救请求在10个以内,救护车与调度中心的网络通信一直保持畅通等),同时明确相关的质量要求(如调度中心对于救护车导航请求的响应时间在5秒之内,导航精度在10米范围内等)。然而,在实际运行过程中,某些突发事件可能会造成短时间

内救护车的请求数量激增,从而

导致调度系统无法及时响应调度

和导航请求。此时,适当放宽导

航精度要求(如50米范围内)

从而确保更加关键的响应时间需

求(如改为采用精度较低但效率

更高的导航方式)是一种合理的

选择。

因此,需求感知应成为自适

应软件系统的一种基本特性,即

系统能够在运行时感知自身的

需求并根据需要进行调整。自

适应系统的实现一般都依赖于

不同层次上的反射(reflection)能

力,即系统在运行时观察并感知

自身结构和行为的能力。基于体

系结构的软件自适应方法(例如

Rainbow[3])以及基于体系结构的

反射式中间件[4]提供了体系结构

级的反射能力,使得系统可以动

态监控系统的运行时体系结构及

行为,并在必要时进行调整。与

之相似,需求感知系统需要具备

需求层面上的反射能力,即系统

维护需求模型的运行时表示,并

使其与运行中的系统保持双向的

因果关联。这种运行时需求模型

应当支持需求的自省(introspec-

tion),即运行时需求实体能够提

供自身的信息,从而允许系统对

运行时需求进行推理[5]。

需求目标模型与目

标推理

为了实现需求的动态评价和

推理,运行时需求模型应当支持

一系列丰富的运行时分析能力,

包括涉众目标、软件的功能和非

功能性需求、候选方案、领域假

设、场景、风险和冲突等[5]。鉴

于需求目标模型的表达能力和推

理能力,一些研究工作已将该

模型应用于运行时需求模型的表

示、推理和自适应方案规划。

目标模型

目标模型描述了涉众的需求

及其精化和依赖关系,同时捕捉

了满足系统高层目标的多种候选

方案以及相应的质量关注。目前

比较常用的目标建模主要包括基

于与/或(AND/OR)分解[6]、基

于i*框架[7]和基于KAOS框架[8]

等方法。这些方法有不同的关注

点和侧重点:基于AND/OR分

解的目标建模主要关注于目标精

化,面向主体的建模框架i*主要

关注于社会性系统的分析建模,

KAOS框架主要关注于目标的冲

突建模、操作化以及责任分配。

在目标模型中,功能性需求

用硬目标来建模,它的满足性是

确定的,即满足或不满足;而非

功能性需求用软目标来建摸,它

的满足程度并没有一个明确的标

准,即软件系统在一定程度上满

足或者不满足需求。图2是一个

基于i*框架的救护车系统的目标

模型。其中,“救护车调度”是

一个硬目标,“导航精度”是一

个软目标。目标可以通过AND

分解和OR分解持续精化,直至

得到软件、硬件或者人可直接完

成的任务。其中,OR分解刻画

了满足系统目标的多种候选方

案。例如,图2中的“目的地导航”可以被OR 分解为“GSM 导航”和“GPS 导航”,意味着目的地

导航可以通过GSM 或GPS 实现。除了分解关系,目标之间还存在相互影响的关系,例如一个目标的不同候选方案(如OR 分解子目标或任务)往往对相关软目标有着不同的影响,从而支持不同的质量偏好。目标之间的影响可以通过贡献度链接Make(++), Help(+), Hurt(-)和

Break(--)来表示,其含义是一个目标的满足对于另一个目标的满足程度起到正面或负面的影响。Make/Help 表示一个目标的满足

图2 救护车系统目标模型将使另一个目标完全满足/部分

满足;Break/Hurt 表示一个目标的满足将使另一个目标完全不满足/部分不满足。此外,还可以通过在Help 和Hurt 链接上附

加一个(0, 1)区间的值来定量地表示部分满足和部分不满足的程度。一般而言,OR 分解的子目标对同一个软目标往往有不同的

贡献度链接。例如,“GPS 导航”相对于“GSM 导航”而言导航精度更高,因此“GPS 导航”的满足使得“导航精度”部分满足

(Help 链接或者+0.8链接),而“GSM 导航”的满足使得“导航精度”部分不满足(Hurt 链接或者-0.7链接)。

目标推理

目标推理是根据AND/OR 分

解和贡献度链接的语义以及期望的一组目标的满足程度,通过标签传递算法得到各个目标的满足程度[9,10]。目标推理根据贡献度链接的定性或者定量表示方法,分为定性推理和定量推理;根据标签传递的方向,分为自顶向下推理和自底向上推理。例如,给定“安排合适的救护车”、“GSM 导航”和“自动更新”的满足程度都为1.0(完全满足),那么通过自底向上推理得到“目的地导航”、“救护车位置更新”和“救护车调度”的满足程度都为1.0(完全满足);给定“紧急电话接听”的满足程度为1.0(完全满足),那么通过自顶向下推理得到“记录紧急事故信息”、“判断紧急电话是否重复”和“报告新事故”的满足程度都为1.0(完全满足)。

由于目标模型建模了满足系统高层目标的多种候选实现方案,而不同的实现方案往往对不同的非功能需求有不同的质量关注,因此,不同的候选方案对多个非功能性需求的综合贡献度的

度量值(即多个非功能性需求的满足程度的权重和)成为运行时目标推理的衡量标准。例如,在救护车请求数量激增的情况下,

“响应时间”和“位置精度”比“导

航精度”和“开销”有更高的偏好值。由于“GSM 导航”和“人工更新”分别对“响应时间”和

“位置精度”有Help贡献度链接,因此选取它们分别作为实现“目的地导航”和“救护车位置更新”的方案。

自适应需求分析方法

上下文环境的不确定性和系统需求本身的动态性使得自适应系统的需求往往包含一定程度的不确定性或者不完整性[1]。自适应需求的分析和规约方法应当能够处理这种上下文环境的不确定性以及由此导致的系统行为的不完整性,而且可以支持需求的运行时动态演化。

运行时的需求自适应要求所使用的需求模型和描述语言支持动态调整,例如需求和约束能够在运行时动态放宽或加强。为此,文献[11]提出了一种需求语言RELAX来帮助分析和识别自适应系统中的不变(invariant)需求和可变(non-invariant)需求。其中,不变需求表示必须严格满足的关键性需求,而可变需求则表示可以在运行时有所放宽的需求。为了支持需求的动态调整,RELAX定义了一组用于需求规约的RELAX操作,例如SHALL (表示必须被满足)、AFTER(表示必须在某个事件发生之后被满足)、AS EARLY AS POSSIBLE (表示需要尽早满足某个条件)、AS CLOSE AS POSSIBLE TO(表示需要尽可能达到或接近某个数量或频率)等;RELAX定义了4个属性并关联到每个可变需

求来描述环境的不确定性:ENV

(定义了环境中的上下文特性)、

MON(定义了环境中可观察到的

信息)、REL(定义了如何通过

MON属性来推导出ENV属性)

和DEP(定义了可变需求被放松

之后对其他需求的影响程度);

RELAX利用了模糊分支时序逻

辑来进行形式化规约。以智能办

公室为例[11],爱丽丝(Alice)的

手机、平板电脑和台式电脑等设

备会在爱丽丝走进办公室之后开

始进行客户联系方式同步,此后

每隔30分钟进行一次同步。这

个需求按照传统的需求分析方法

可规约为R1。由于网络延迟或

者设备故障等环境的不确定性,

R1并不能严格地被满足,同时

需求分析师也难以枚举所有可能

的系统自适应行为。而这个需求

按照RELAX可规约为R1’,其

中描述了与该项需求相关的上下

文环境特性,即爱丽丝的位置和

同步间隔;定义了如何通过监控

获得这些特性,即通过运动传感

器得到爱丽丝的位置和通过网络

传感器得到同步间隔。因此,只

要满足需求中声明的灵活性,任

何可能的自适应行为都是允许的。

为了提高运行时自适应所需

的灵活性,自适应需求应当明确

业务需求、领域假设、质量约束

等可以被放松和调整的限度。例

如,一些关键性需求应当一直满

足或具有比较高的满足概率,而

其他非关键性需求的满足概率可

以较低。为此,文献[12]提出

了感知需求(awareness require-

ments)的概念,并提供了典型的

类型和模式,以便于进行形式化

规约。感知需求刻画了业务需求、

感知需求本身、领域假设或者质

量约束在运行时的满足状况。以

救护车系统为例[12],当接线员收

到一个紧急电话后,首先要记录

紧急事故的信息,然后判断紧急

电话是否重复,如果不重复则报

告一个新事故,最后调度救护车

到达事故现场。该系统假设通信

网络是正常工作的,两个质量约

束是救护车在10分钟内到达或

救护车在15分钟内到达。该系

统相应的感知需求包括:“成功

记录紧急事故的信息”这一需求

从不失败(AR1),“通信网络正

常工作”领域假设满足的概率超

过90%(AR2)。每天当中“救护

车在10分钟内到达”的满足概

需求“同步客户联系方式”

R1: Business contacts synchronization process SHALL be initiated when Alice enters the room and at 30 minute intervals thereafter.

使用RELAX描述的需求“同步客户联系方式”

R1’: Business contacts synchronization process SHALL be initiated AS EARLY AS POSSIBLE AFTER Alice enters the room and AS CLOSE AS POSSIBLE TO

30 minute intervals thereafter.

ENV: location of Alice; synchronization interval

MON: motion sensors; network sensors

REL: motion sensors provide location of Alice; network sensors provide synchronization interval

率超过60%,且“救护车在15分钟内到达”的满足概率超过80%(AR3),AR2永远满足(AR4)。其中,AR1, AR2, AR3和AR4分别是对业务需求、领域假设、质量约束和感知需求本身的运行时满足状况(如满足的概率)的要求。

对于需求驱动的自适应系统而言,确定运行时哪些上下文事件或条件需要被监控,以及哪些特定事件或条件被激发后需要调整和切换,是自适应需求分析应该面对的问题。对此,文献[13]在问题框架方法基础上提出了上下文感知(context-aware)应用的监控需求和切换需求的分析和规约方法。其中,监控需求定义了如何检测导致违反需求的上下文环境变化,而切换需求则定义了如何通过自适应调整使被违反的需求重新得到满足。例如,基于可信假设“在照片传输过程中没有窃听者”,从照相机向手机传输照片无须加密就能获得好的保密性和性能。但是,这一可信假设并不总是成立的。因此,针对问题的监控需求是通过监控用户所处的位置来判断是否安全,即周围没有窃听者;与之相应的切换需求是指当用户进入一个不安全的位置时,将传输方式切换为加密传输。

需求驱动的软件自适应技术

需求模型(如目标模型)刻画了系统应当满足的高层目标以

及实现这些目标的候选方案。在

此基础上,自适应软件系统将实

现高层目标的方案选择推迟到运

行时阶段,根据上下文环境的动

态变化,通过推理对运行时需求

进行演化和调整[5,14]。需求驱动

的软件自适应技术的基础是需求

监控,并且按照自适应的目的可

以将相关技术分为自优化和自修

复。此外,针对开放环境下社会

技术系统(socio-technical system)

的自适应还考虑了多种社会化主

体之间的交互。

需求监控

需求监控是指通过收集运行

时系统以及环境事件和状态的相

关信息,判断运行时系统是否满

足其需求及相关约束。简而言之,

对于运行时系统,我们希望所期

望的目标都能满足,而且不允许

出现的情形不会出现。例如,对

于救护车系统,希望能够实现“调

度救护车到现场”的目标,同时

满足相关的质量要求(如响应时

间要求);另一方面,违反时序

规约(如“救护车接到病人后必

须最终将其送到一个定点医院”)

或任务前后置条件(如救护车出

动的前置条件是“人员设备准备

就绪”、后置条件是“到达呼救

现场或任务取消”)的情形不会

出现。

需求监控的基本思想是定义

运行时需求属性(如上下文假设、

时序规约、前后置条件等),将

其中所涉及的监控变量映射为运

行时可监控的事件和状态信息,

然后通过运行时验证的方式发现

对于需求的违反。例如,需求监

控框架ReqMon[15]提供了一套针

对时间属性的需求及监控定义语

言和相应的运行时监控机制。该

框架支持的时间性需求包括指定

时间范围(如两个给定事件之间)

内的时序模式属性(如事件发生

的顺序关系)和聚集函数属性(如

某个事件或某个时序模式累计发

生的次数)。

需求监控的主要困难在于如

何将所要监控的需求属性与可监

控的环境和系统现象联系起来。

例如,某个系统基于现有实现方

案满足保密性需求的上下文假设

是能够进入系统运行所处房间的

人都是可靠的。这一环境条件非

常重要,如果违反(即不可靠的

人进入房间),那么系统必须采

取相应的自适应调整来保证其保

密性。然而,一个人是否可靠基

本上是无法直接监控的。此时实

现需求监控的一个常见策略是引

入一些新的假设,从而将无法监

控的需求属性转化为可监控的现

象或状态。例如,可以假设可靠

的人携带经认证的非接触式IC

卡,从而将对“不可靠的人进入

房间”这一事件的监控转换为对

“有人未经IC卡认证进入房间”

的监控。

自优化

自优化是指系统通过自适

应调整获得更加优化的运行时质

量。因此,自适应系统需要在运

行时需求模型的基础上,根据对于上下文环境及自身质量属性的监控进行动态的权衡决策,从而通过需求推理实现对于系统实现方案的优化调整。

一方面,我们可以使用目标模型刻画业务目标以及目标精化关系,分析并探索实现高层目标的解决方案可变性;另一方面,使用质量属性作为候选解决方案的选取准则,并通过质量偏好的动态调整驱动运行时解决方案的动态自优化。文献[16]提出了一种需求驱动的业务过程配置和定制方法。该方法允许用户对于相关质量属性的偏好进行手工调整,然后根据调整后的偏好,通过目标推理得到优化的目标模型配置。目标模型的重配置将根据目标与业务过程之间的追踪关系映射为业务过程的重配置。

为了进一步实现运行时自优化,我们提出了一种基于反馈控制和动态质量权衡的软件自优化方法[17]。该方法通过定义特定应用的运行时挣值(earned value)来度量所获得的关于系统总体运行状况的反馈,并通过一个反馈控制器对质量属性(软目标)的优先级进行动态调节。在此基础上,该方法使用了一个需求偏好驱动的目标推理算法,以产生优化的目标重配置方案。该算法将目标模型元素编码为合取范式命题公式,再使用命题可满足性(SAT)问题求解器,通过一个迭代过程生成优化的目标配置。其推理过程如下:先试图找到一个满足所

有质量属性期望值的配置方案,

如果找不到就逐渐从命题公式中

移除最低优先级的质量属性,直

至产生满足要求的目标配置方

案;最后,目标模型的重配置被

映射为体系结构级的重配置,从

而实现对运行时系统结构和行为

的调整。

除了针对质量偏好的动态调

节,还可以通过目标自身的模糊

化来实现运行时的优化调整,例

如文献[18]提出的需求驱动的

自适应框架(fuzzy live adaptive

goals for self-adaptive systems,

FLAGS)。在FLAGS中,需求

目标分为硬性(crisp)目标和模糊

(fuzzy)目标。其中,模糊目标的

满足程度是一个0到1之间的模

糊值。该框架采用了一种模糊时

序语言来对模糊目标进行形式化

规约,通过隶属度函数的隶属值

来量化模糊目标的满足程度。例

如,目标“救护车要在出发后10

分钟内到达事故现场”可以模糊

化为,如果在10分钟内到达,

其满足程度为1.0;否则,如果

在12分钟和14分钟内到达,其

满足程度分别为0.5和0。此外,

该框架将自适应策略,即自适应

目标,关联到每个模糊目标,并

且指定该策略被触发的条件和需

要执行的操作。例如,模糊目标

“救护车要在出发后10分钟内到

达事故现场”关联到一个自适应

目标,其中触发条件为“模糊目

标的满足程度高于0.9”,执行操

作为“通过调整隶属度函数提高

该模糊目标的满足要求”(若在9

分钟内到达,其满足程度为1.0;

若在11分钟和13分钟内到达,

其满足程度分别为0.5和0)。这

一自适应目标的原理是,该模糊

目标持续满足的状况较好,表明

该目标有持续优化的可能性,从

而进一步提高满足的要求。

自修复

自修复是指系统能够发现潜

在的失效并进行自适应修复。这

些失效可能是由内部缺陷、外部

环境中的软硬件部件失效,或人

的不确定行为造成的。在需求监

控及运行时需求模型的基础上,

自适应系统可以采取一系列自修

复策略,包括重试(retry)、补偿

(compensation)、目标替换(goal

substitution)和主体替换(agent

substitution)等[19]。其中,目标

替换是指在一个目标的OR分解

子目标之间进行切换,从而改

变该目标的实现方式。例如,如

图3所示的目标模型中,如果无

法实现“卡车运送”,那么可以

改选“摩托车运送”的方式来实

现“货物配送”的目标。主体替

换是指当某个被委托主体无法实

现所委托的任务时,重新委托另

一个具有相似能力的主体实现同

一任务。例如,在图3中,如果

某个区域配送中心(如RDC-1)

由于某种原因无法完成配送任

务,那么商品订购系统可以改

为向另一个区域配送中心(如

RDC-2)委托该任务。

基于运行时目标模型以及以

上各种自修复策略,系统可以实

现层次化自修复过程(如图3所示)。当某个目标或任务发现潜在的失效后,系统首先尝试使用重试、补偿等本地修复策略。如果修复不成功,那么目标失效将沿着目标分解结构向上传播。当传播到一个具有多个OR分解的子目标时,系统可以在该目标上尝试目标替换的自修复策略。如果不存在OR分解子目标或尝试均已失败,那么失效将进一步向上传播,直至使当前目标模型的根目标失效。此时,如果该根目标是另一个主体所委托的,那么该委托方可以尝试采用主体替换的自修复策略。

在层次化自修复过程中,伴随着失效传播的修复方案规划正是利用了需求反射实现的。其中,失效传播实现的是基于需求监控和需求推理的运行时需求模型状态的更新,而修复方案规划则实现了基于运行时需求模型的自适应决策。

对于一些复杂系统而言,需

求监控可能带来很大的额外开

销,从而影响系统的整体性能。

因此,系统很多时候只能选择

部分需求(目标)进行监控。而

且,为了精确定位需求失效的根

源,系统需要具备自诊断的能力。

文献[20]针对此问题提出了一种

基于目标推理和命题可满足性问

题的需求诊断方法。该方法将目

标的满足状况、目标的前后置条

件、目标满足状况与可监控的外

部事件或条件之间的关系、目标

间的标签传递关系等表达为一系

列公理。在此基础上,该方法将

需求诊断转化为一个命题满足性

问题,并使用问题求解器进行求

解,从而得到一组或多组目标满

足状况判断作为诊断结果。在此

基础上,文献[21]进一步提出了

一种基于重配置的需求自修复方

法。该方法首先动态确定优化的

需求监控粒度(即不同层次上的

目标),然后通过需求诊断确定

失效位置,并通过目标推理选取

一组全局最优或局部最优的目标

配置作为重配置方案,从而实现

自修复。

为了支持对更多不同类型的

失效诊断和修复,文献[22]在目

标模型基础上进一步扩展了目标

触发事件、目标分解的上下文条

件等,同时使用带时间限制的活

动图(timed activity diagram)对目

标模型中的任务进行更加细粒度

和精确的建模。该方法也定义了

一系列关于所期望的(excepted)

以及被允许的(allowed)目标和

任务的一阶逻辑规则。在此基础

上,该方法从目标模型的根目标

开始,通过递归探查整个目标模

型来实现缺陷诊断。任务级别上

的失效诊断则是在带时间限制的

活动图基础上,根据分析监控到

的事件、时间分析以及活动图中

的流程关系等实现的。

开放系统的自适应

与封闭系统相比,开放系统

涉及多主体(包括软硬件部件、

人、社会组织等)以及主体间的

社会化交互,因此所面临的不确

定性更高。在开放系统中,每个

主体都有自己的目标,同时具有

独立完成某些任务的能力。为了

实现自身的目标,一方面相关主

体利用自身能力完成一些任务,

另一方面通过主体间交互进行社

会化的协作。因此,开放系统的

自适应必须支持多主体特性以及

商品配送货物配送

卡车运送摩托车运送OR

OR

配送商品配送

1

2

3

4

5

7

8本地修复本地修复

传播传播

传播

传播

主体替换

目标替换

6

图3 层次化的系统自修复过程[19]

主体间的社会化交互。

现有的支持多主体的目标建模语言(如i*)是通过主体间的依赖关系来表示主体交互关系的。但是这种表示方法无法支持主体间的通信,且使得主体间高度耦合[23]。为了更好地支持开放系统的自适应,文献[23]提出使用承诺(commitment)来刻画主体间的交互协议。一个承诺C是一个具有社会性的抽象,可以表示为四元组(debtor, creditor, antece-dent, consequent),其含义是:承诺方(debtor)向被承诺方(creditor)承诺,如果前提(antecedent)得到满足,那么结果(consequent)就会满足。例如,承诺C(customer, travel agency, tickets delivered, paid)表示顾客向旅行社承诺,只要收到机(车)票就会完成支付。承诺可以对主体间关系进行解耦,这意味着为了实现自己的目标,主体并不在意到底是谁为其提供所需的承诺。

在这种社会化的承诺关系表达及其形式化语义基础上,文献[23]给出了基于目标、规划和承诺的社会化主体目标实现策略的形式化表达,并提出了一个开放系统自适应的概念框架。当一个主体发现当前的目标实现方案发生失效、存在失败的风险或者有进一步优化和改进的机会时,可以触发一次自适应过程来实现自修复或自优化,策略包括目标替换、主体替换和委托转包等。对于一些关键性目标,还可以通过目标冗余(同时激活多种目标实现方案)、承诺冗余(同

时与多个主体建立委托关系)来

保证目标的实现。为了实现自适

应优化方案的选取,各个主体应

当综合考虑候选方案的开销、重

配置前后的稳定性、相关质量(软

目标)的实现情况以及质量偏好

等因素。

从运行时实现技术的角度

看,开放系统的自适应机制应当

以分散、对等的方式实现需求监

控和自适应决策。为此,我们在

文献[19]中提出了一种基于状

态化目标的需求监控和自修复

方法。在该方法中,每个主体通

过扩展的需求目标状态机,管理

自身目标的运行时生存周期;通

过目标状态机之间基于消息的交

互,实现目标之间以及不同主体

之间的标签传播和修复策略规

划。由于基于目标状态机的需求

监控和修复机制可以以对等的方

式分布在每个主体上,该方法也

支持开放系统的多主体特性。

趋势与挑战

实现自适应软件的传统方

法是在运行时执行预定义的重配

置规则,例如事件—条件—动作

(event condition action, ECA)规

则。然而,开放、动态环境下的

自适应软件面临的一个主要挑战

是我们无法预知所有的自适应调

整,即无法预测关于所有可能发

生的环境变化以及相应的调整方

案的自适应需求[1]。此外,自适

应软件的运行时管理涉及业务需

求、体系结构、运行时基础设施

(如中间件、虚拟机)等多个不

同层次,因此需求驱动的软件自

适应方法需要建立多层次的软件

自适应管理体系。总的来看,需

求驱动的软件自适应研究反映了

以下几个方面的发展趋势,同时

也面临着相应的挑战。

支持动态重配置的需求与

运行时体系结构映射 为了形

成自适应软件系统的控制闭环,

必须将需求层的自适应决策(如

目标模型的重配置)映射为对运

行时软件结构和行为的重配置操

作。基于构件的反射式体系结构、

面向方面(aspect)的技术、面向

服务的体系结构等技术提供了体

系结构层面上的运行时重配置手

段。现有的软件自适应方法一般

都假设运行时需求模型元素(如

目标)与运行时体系结构元素(如

构件、方面、服务)之间存在简

单的对应关系,忽略了体系结构

自身的设计复杂性。因此,如何

将风格、模式、设计决策等体系

结构设计知识引入到运行时自适

应决策中,辅助实现需求的动态

重配置与运行时体系结构之间的

精确映射,是一个待解决的关键

问题。

支持不确定性的需求建

模与运行时自演化方法 在开

放、动态的环境中运行的自适应

系统其所处的环境具有高度的不

确定性和变化性。因此,自适应

软件系统需要处理上下文环境和

系统自身行为信息的不完整,同

时支持需求的运行时演化。现有

的方法虽然允许需求层面的重配置,但要求重配置是在已知的需求模型范围内(如高层目标、实现目标的各种候选方案)实现的。然而,开放环境下的系统需求还可能发生无法预期的动态变化。例如,随着环境的变化,一个主体可能会拥有原来并不具备的能力,同时也会产生新的期望和目标。这就要求运行时需求模型及相应的需求反射机制进一步支持不确定性和需求的自演化。但另一方面,对于不确定性,如果不加控制也会对系统的可靠性带来危害。因此,开发自适应系统时应当在权衡灵活性和保障性两个方面的基础上,确定所允许的不确定性程度,从而保证一些关键的高层目标总是可以得到满足[1]。

运行时自适应中的多目标权衡与决策 软件系统的多种不同质量属性之间往往是冲突的。此外,软件自适应决策过程中还需要考虑各种自适应方案开销、系统重配置过程中的稳定性等因素。因此,运行时自适应决策是一个多目标决策过程,需要在多种相互冲突的优化目标之间进行权衡。软件工程中的多目标决策问题一般都依赖于效用函数(即不同目标的加权和),但不同目标的权重分配往往很难确定,而且不同目标满足度的简单聚合实际上隐藏了背后的冲突[5]。对此,文献[5]认为,应该通过一种交互式的方式将用户纳入到运行决策中,通过收集用户的反应动态地发现并调整不同目标的权

重。另一种观点是以运行时的业

务挣值度量作为反馈,通过反馈

控制器对相关质量目标的优先级

进行动态调节[17]。

需求驱动的多层次反馈

控制环路 需求层面的软件自

适应反映了特定应用的战略以

及业务级的动态调整。在体系

结构层面上,基于构件、面向

方面和面向服务的软件体系结

构及中间件也从技术方案的角

度为运行时自适应提供了支持。

此外,随着云计算技术的快速

发展,虚拟机、网络等基础设

施层的自适应管理能力也越来

越强。这些不同层次上的自适

应管理的关注点以及所依赖的

知识各不相同,但其最终目标

都可以归结为更好地实现相关

涉众的业务目标以及在可靠性、

成本、性能等服务质量方面的

期望。因此,需求驱动的软件自

适应技术应当与体系结构、中间

件、虚拟机、网络等各个层面上

的自适应机制进行集成,形成

多层次的反馈控制环路。例如,

当系统的业务负载快速上升时,

虽然基础设施层可以通过分配

更多的虚拟机资源来保证服务

质量,但成本可能很高。此时,

若通过需求层面的自适应暂停

某些非关键性服务或降低某些

服务质量要求,则可能也能够

满足快速上升的业务负载且无

须增加虚拟机资源,这对于相

关涉众(如应用运营方)来说,

也许是一个更好的选择。■

致谢:本项研究得到国家自然

科学基金(项目编号:612111115)

的资助。

参考文献

[1] B. H. Cheng, R. Lemos, H.

Giese, and et al., Software

engineering for self-adaptive

systems: A research roadmap,

in Software Engineering for

Self-Adaptive Systems. Berlin,

Heidelberg: Springer-Verlag,

2009, 1~26

[2] J. O. K e p h a r t a n d D. M.

Chess,The vision of autonomic

computing,IEEE Computer, vol.

36, no. 1, 2003, 41~50

[3] D. G a r l a n, S.-W. C h e n g,

A.-C. H u a n g,

B. S c h m e r l,

and P. Steenkiste,Rainbow:

A r c h i t e c t u r e-b a s e d s e l f-

a d a p t a t i o n w i t h r e u s a

b l e

infrastructure,IEEE Computer,

vol. 37, no. 10, 2004, 46~54

[4] 黄罡, 王千祥, 梅宏, 杨芙清,

彭 鑫

CCF高级会员。复旦大

学副教授。主要研究方

向为软件维护、需求工

程、自适应软件。

pengxin@https://www.wendangku.net/doc/819366134.html,

陈碧欢

复旦大学博士生。主

要研究方向为自适应

软件。

bhchen@https://www.wendangku.net/doc/819366134.html,

赵文耘

CCF高级会员。复旦

大学教授。主要研究

方向为软件工程。

wyzhao@https://www.wendangku.net/doc/819366134.html,

于软件体系结构的反射式中间

件研究, 软件学报, vol.14, no.11,

2003

[5] P. S a w y e r, N. B e n c o m o, J.

W h i t t l e, E. L e t i e r, a n d A.

Finkelstein, Requirements-aware

systems: A research agenda for

RE for self-adaptive systems, in

Proceedings of the 18th IEEE

International Requirements

Engineering Conference, 2010,

95~103

[6] J. Mylopoulos, L. Chung, and B.

Nixon, Representing and using

nonfunctional requirements:

A process-oriented approach,

IEEE Transactions on Software

Engineering, vol. 18, no. 6 , 1992,

483~497

[7] E.S.K. Yu, Modelling strategic

r e l a t i o n s h i p s f o r p r o c e s s

reengineering, Ph.D. Thesis, Dept.

of Computer Science, University

of Toronto, 1995

[8] A. Dardenne, A. van Lamsweerde,

and S. Fickas, Goal-directed

requirements acquisition, Science

of Computer Programming, vol.

20, no. 1~2, 1993, 3~50

[9] P. Giorgini, J. Mylopoulos, E.

Nicchiarelli, and R. Sebastiani,

Reasoning with goal models,

i n P r o c e e d i n g s o f t h e 21s t

International Conference on

Conceptual Modeling, 2002,

167~181

[10] R. Sebastiani, P. Giorgini,

and J. Mylopoulos, Simple and

minimum-cost satisfiability for

goal models, in Proceedings of

the 16th International Conference

in Advanced Information Systems

Engineering, 2004, 20~35 [11] J. W h i t t l e, P. S a w y e r, N.

Bencomo, B. H. C. Cheng, and J.-

M. Bruel, Relax: Incorporating

uncertainty into the specification

of self-adaptive systems, in

Proceedings of the 17th IEEE

International Requirements

Engineering Conference, 2009,

79~88

[12] V.E.S. Souza, A. Lapouchnian,

W.N.R o b i n s o n,a n d J.

M y l o p o u l o s,A w a r e n e s s

requirements for adaptive systems,

i n P r o c e e d i n g s o f t h e 2011

ICSE Workshop on Software

Engineering for Adaptive and

Self-Managing Systems, 2011,

60~69

[13] M. S a l i f u, Y. Y u, a n d B.

Nuseibeh, Specifying monitoring

a n d s w i t c h i n g p r o

b l e m s i n

context, in Proceedings of the 15th

IEEE International Requirements

Engineering Conference, 2007,

211~220

[14] S. Fic kas an d M. Fea the r,

Requirements monitoring in

d y n a m i c

e n v i r o n m e n t s, i n

Proceedings of the 2nd IEEE

International Symposium on

Requirements Engineering, 1995,

140~147

[15] W. Robinson, A requirements

m o n i t o r i n g f r a m e w o r k f o r

enterprise systems, Requirements

Engineering,vol. 11, no. 1, 2006,

17~24

[16] A. Lapouchnian, Y. Yu, and

J. Mylopoulos, Requirements-

driven design and configuration

m a n a g e m e n t o f b u s i n e s s

processes, inProceedings of the

5th International Conference on

Business Process Management,

2007, 246~261

[17] X. Peng, B. Chen, Y. Yu, and

W. Zhao, Self-tuning of software

systems through dynamic quality

tradeoff and value-based feedback

control loop, Journal of Systems

and Software, vol. 85, no. 12,

2012, 2707~2719

[18] L. Baresi, L. Pasquale, and

P. Spoletini, Fuzzy goals for

requirements-driven adaptation,

in Proceedings of the 18th IEEE

R e q u i r e m e n t s E n g i n e e r i n g

Conference, 2010, 125~134

[19] L. F u, X. P e n g, Y. Y u, J.

M y l o p o u l o s, a n d W. Z h a o,

Stateful requirements monitoring

for self-repairing socio-technical

s y s t e m s, i n P r o c e e d i n g s o f

the 20th IEEE International

R e q u i r e m e n t s E n g i n e e r i n g

Conference,2012, 121~130

[20] Y. Wang, S. A. McIlraith, Y.

Y u, a n d J. M y l o p o u l o s, A n

automated approach to monitoring

and diagnosing requirements, in

Proceedings of the 22nd IEEE/

ACM International Conference on

Automated Software Engineering,

2007, 293~302

[21] Y. Wang and J. Mylopoulos,

S e l f-r e p a i r t h r o u g h

reconfiguration: A requirements

e n g i n e e r i n g a p p r o a c h, i n

Proceedings of the 2009 IEEE/

ACM International Conference on

Automated Software Engineering,

2009, 257~268

[22] F. Dalpiaz, P. Giorgini, and J.

Mylopoulos, An architecture

for requirements-driven self-

recon?guration, in Proceedings of

the 21st International Conference

on Advanced Information Systems

Engineering, 2009, 246~260

[23] F. Dalpiaz, A. K. Chopra, P.

Giorgini, and J. Mylopoulos,

Adaptation in open systems:

Giving interaction its rightful

place, in Proceedings of the

29th International Conference

on Conceptual Modeling, 2010,

31~45

相关文档
相关文档 最新文档