一种情境驱动的网构软件体系架构与支撑环境*黄晙吴刚马天笑(上海交通大学,软件学院,上海200240)sbdwhj@gmail.comwugang@cs.sjtu.edu.cntianxiaoma@163.com摘要:本文从网构软件Internet环境下涉及的各类事物和事件情境、及情境的整个生命周期出发,以情境驱动为核心,对网构软件的体系结构与支撑环境展开研究,以支持服务实体的自适应、自演化行为。首先,本文研究了Internet环境下服务实体交互与协同关系中的各种情境构成,给出了一个适合网构软件的情境本体定义。在此基础上,给出了一种基于情境感知的网构软件体系架构,并描述了在这一架构下网构软件按需聚合和动态演化的模型与机制。围绕该应用场景,结合服务实体实际运行时的特点及要素,本文给出了该体系架构下网构软件的支撑环境软件设计。最后,本文给出了一种基于OSGi服务平台的支撑环境参考实现。关键词:网构软件;情境感知;体系架构;服务实体;OSGi文献标识码:A中图分类号:TP311稿件编号:290166AContext-DrivenArchitectureandSupportingSystemforInternetwareHUANGJun,WUGang,MATian-xiao(SchoolofSoftware,ShanghaiJiaotongUniversity,Shanghai200240,China)Abstract:BasedonobjectandeventcontextinvolvedwithInternetware,andthewholelifecycleofthem,thispaperstudiesthearchitectureandsupportingsystemofInternetwareinacontext-drivenwaytosupportself-adaptationandself-evolutionforserviceentities.WhilethedetailofcontextofserviceentitieshavinginteractionandcollaborationrelationshiponInternetisanalyzed,contextontologyfortheInternetwareisproposedfirstly.ThenthearchitectureofInternetwarebasedoncontextawarenessisgiven,andthemechanismfortheInternetwaretoaggregateondemandandevolvedynamicallyunderthisarchitectureisdescribed.Combinedwithruntimefeaturesandelementsofserviceentities,thedesignofthesupportingenvironmentintheaboveapplicationscenesisalsogiveninthispaper.Finally,animplementationbasedonOSGiserviceplatformisgiven.Keywords:Internetware;Contextawareness;Architecture;Serviceentity;OSGi1、背景为了应对Internet平台下开放、动态、难控等特点对应用的开发、部署、运行、维护带来的挑战,网构软件(Internetware)的概念应运而生[1],它是一种柔性可演化、连续反应式、多目标适应的新的软件体系形态,主体化的软件实体之间通过按需协同的机制,形成一种与当前的信息Web相类似的软件Web。网构软件的一个重要特征就是[2]:它应能感知内/外部环境的动态变化,并随着这种变化按照功能指标、性能指标或可靠性指标等进行静态的调整和动态的演化,以使系统具有尽可能高的用户满意度。也就是说网构软件不是按照明确的需求自顶向下开发而成的,它会随着环境的变化,不断发基金项目:本文受国家863项目资助(基于本体的网构软件环境感知体系与相关技术研究,2009AA01Z123)作者简介:黄晙(1985-),男,福建福州人,硕士研究生,主要研究方向:上下文感知计算、分布式架构等;吴刚(1973-),男,博士,副教授,主要研究方向:情境感知计算、分布计算、普适计算等。展不断演化。为了使网构软件在宏观上表现出自适应、自演化的行为,必须从软件系统的情境描述、环境感知、内部决策和协同演化等几个方面展开研究。目前的研究多是从已感知到环境的变化出发,研究软件实体如何动态调整自身的行为,而对于Internet情境应如何表达、情境变化应如何感知没有系统的研究和实用化的成果。本文所定义的Internet情境是网构软件实体所处环境的一种抽象,不仅包括静态的信息还包括动态的运行时信息以及其他的一些非功能性需求,不仅包括实体外部环境的信息还包括实体内部的信息。Internet情境信息的描述与获取是网构软件自演化的前提和基础,而显然在开放环境下为了使不同的软件实体对感知到的情境都有合理的认知,一个显式的、语义化的Internet情境描述是必须的。本文以情境感知为核心,给出了一种基于本体的网构软件情境感知体系架构,并描述了在这一架构下网构软件的按需聚合和动态演化的模型与机制。具体包括,如何描述Internet情境?如何根据应用的需求和当前的情境,确定参与协同的多个自主运行实体,形成一个虚拟的运行环境以完成这一应用?如何记录和传播情境的变化?如何根据情境的变化动态调整虚拟运行环境的结构以及某个自主运行实体的行为?本文第2节给出了基于情境感知的网构软件体系架构,并描述了在该环境支撑下网构软件按需聚合和动态演化的应用场景;第3节描述了情境本体的具体定义;第4节给出了一个基于该架构的支撑环境参考模型;最后讨论相关工作并总结。2、网构软件情境感知体系架构网构软件的运行在于交互与协同,本文采用服务模型来描述自主软件间的交互关系,而不涉及服务的具体细节如通信协议等。典型的服务模型包括服务提供者、服务请求者和服务注册处。软件实体(本文称之为服务实体)在服务注册处的帮助下自主完成所需服务的定位,建立起软件实体间的供需关系和虚拟的运行环境。定义(服务实体):服务实体是网构软件中的计算实体,具有一定的服务需求和服务能力,既需要别的服务实体所提供的服务,同时也能够为其它服务实体提供服务。也就是说,它既可以是服务使用者,也可以是服务提供者。图1是本文给出了网构软件情境感知体系架构。图1网构软件情境感知体系架构一个基本的运行流程如图1所示:(1)服务实体B通过轻量级的目录服务完成服务的注册;(2)服务实体A通过目录服务获得候选服务实体的描述地址;(3)实体A根据地址获取候选服务的情境描述,包含所需的静态与动态情境描述;(4)实体A根据获得的情境与应用的需求自主确定所需的服务实体及其聚合关系,形成虚拟的执行环境;(5)同时,实体A将订阅虚拟执行环境中各服务实体的情境变化;(6)按照应用的需求展开服务的调用。在执行过程中,被订阅的情境所发生的变化将被传递到实体A,而实体A将根据相应的规则进行自适应调整或启动新的聚合过程,以实现动态的演化。2.1轻量级目录服务本文的轻量级目录服务,指目录服务器上存储的并不是服务实体的整个描述,而只是服务实体的情境描述地址。影响服务实体聚合的情境信息包括静态的能力描述、接口描述,也包括动态的状态描述、环境描述等,即使是静态的信息也可能发生变化。如果这些信息都通过目录服务器来维护,将产生不可估量的带宽信息和相应负载。因此,本文只在目录服务器上存储相对稳定的情境描述地址。请注意不是服务实体的调用地址,而是服务实体的情境描述地址。这样,即使是协议的变化或接口的变化都不会引起目录服务的信息变更。集中式的目录服务也是不可取的,对于面向Internet的网构软件而言,会造成整个体系的性能瓶颈。本文采用P2P的技术构造分布式目录服务器,将服务名称作为散列信息,各目录服务器作为P2P节点,利用chord算法[3]将服务实体的描述地址储存到相应的分布式服务器上。2.2基于情境的按需聚合在网构软件环境下,一个应用的执行需要多个服务实体共同完成。本文称启动这个应用的服务实体为主服务实体,它负责按照应用的需求,包括功能性和非功能性需求,通过匹配候选服务实体的情境描述来发现并聚合相应的服务实体,构成虚拟的执行环境。这将是一个嵌套的过程,也就是说主服务实体确定要调用服务实体A,而服务实体A可能又需要聚合服务实体B来完成相应的功能。本文的重点放在如何完成基于情境的按需聚合上,因此提出了以下假设:(1)本文关心需求是通过哪些情境来描述和匹配的,但不关心情境或需求的具体取值。即假设需求中各元素的具体取值在网构软件实体间有语义上一致的认知。如主服务实体的功能需求是“订购”,候选服务实体情境中的功能描述是“采购”,这两者在语义上是否一致,是通过应用环境中共享的相关本体库来回答的,本文不予考虑。(2)假设服务接口的定义在调用者和被调用者之间也有语义上的共识。即调用者从情境中得到接口的描述后,能够知道每个参数的语义、返回结果的语义等,从而构造并实施相应的调用。2.3基于情境感知的动态演化网构软件的环境是动态多变的,随时都可能产生情境元素的变化。本文采用一种基于主题订阅/发布的方法来支持情境感知。一旦确立了聚合关系,主服务实体将向被选服务实体订阅其关心的情境。当服务提供者的相应情境变化被发布时,主服务实体就在第一时间感知到这一变化,并进行自适应调整或启动新的聚合过程,从而实现动态的演化。对于上层用户而言,情境感知和动态演化的过程是透明的。3、网构软件情境本体在开放环境下需要一个显式的、语义化的Internet情境描述,作为网构软件自演化的前提和基础。本文基于本体的思想研究Internet情境的语义化描述方法,采用RDF/OWL技术对情境进行建模,给出了一个适合网构软件环境的Internet情境本体,并发布在。Internet环境下的情境分为两类对象:事物和事件。事物是指网构软件运行环境下的各种实体,包括自主化的服务实体、服务实体所在的环境和所运行的平台,及他们的运行状态、属性等。事件是指网构软件中的一些特殊事件,如服务实体的进入和退出等。本文将事物情境分为3个子类:环境、平台和服务实体。环境(Environment):指服务实体所依赖的网络环境。每个服务实体有且仅有一个对于环境的情境描述,包括网络IP、网络带宽、网络延迟和丢包率等。平台(Platform):指服务实体所运行的平台。每个服务实体有且仅有一个对于平台的情境描述,包括硬件指标、操作系统、运行环境、开发环境等。服务实体(ServiceEntity):包括名称和供应商两个属性,以及需求和能力两个子类。需求(Requirement):指服务实体正确运行所需要的其它服务实体所提供的服务集合,一个服务实体可能拥有0个或多个服务需求。需求包含功能需求和非功能需求,所以每个需求描述都包含功能性(function)描述和非功能性(non-function)描述。能力(Capability):指服务实体能够为其它服务实体提供的服务集合,一个服务实体可能提供0个或多个服务能力。能力包括功能能力和非功能能力,所以每个能力描述都包含功能性(function)描述和非功能性(non-function)描述,分别与需求的描述相对应。需求和能力的功能性(function)部分,主要包括服务的功能描述、协议和调用接口等。每个需求和能力的功能性都有一个状态属性,需求的状态用来表征该需求是否已被满足,而能力的状态用来表征该能力的运行情况,包括运行、中止、不可用(需求未被满足),当该属性为不可用时,在服务选择时该能力将不做考虑。需求和能力的非功能性(non-function)部分,主要侧重服务的QoS,包