论文部分内容阅读
现在很多大型软件系统,需要不间断提供服务,如通讯、金融、航空航天系统,它们对系统的可用性要求很高。随着用户需求、可用资源、硬件设备以及开发技术的不断发展,软件供应商需要对系统不断进行更新,而且因为技术开发人员的流动性,必须保证不同人员开发的新旧模块更新的正确性,因此在系统运行期何实现准确的动态更新,具有十分重要的作用和意义。OSGi提供了一个面向服务的软件开发规范,具有模块化、标准化、动态性等特点,OSGI已经被很多商业领域(例如IBM P5服务器系列、Websphere V6.1、Lotus Sametime、Adobe CS2等)和知名开源软件领域(例如Apache等)采用,很好地支持服务的动态更新,但OSGi对分布式的应用支持一直不理想。随着分布式应用的研究, R-OSGi应运而生,它是OSGi的一个中间件平台,与OSGi无缝集成,使OSGi可以广泛应用于分布式环境。R-OSGi除了继承了OSGi的所有优点外,同时也继承了一个缺点:服务查找基于严格的句法匹配,用户只有掌握了足够的接口信息,才能调用相应服务,而且在普适环境中,大量的服务之间可能会存在“同义异形”(两个服务名字不同但它们的功能相同)和“同形异义”(两个服务名字相同但它们实现的功能不同)的问题。由于存在这些问题,在OSGi平台上进行服务动态更新时,有可能把该保留的Bundle卸载掉或把该卸载的Bundle保留下来。在普适环境下实现软件服务的动态更新,前提是首先要准确找到应当被更新的软件服务,然后才能根据实际要求进行相应更新操作。本文提出了语义服务(包含语义信息的服务),利用OWL(Ontology Web Language)对R-OSGi中的Bundle进行语义描述,根据Bundle的语义描述信息,通过语义推理来找到应当被更新的Bundle,然后进行更新操作,从而完成Bundle的动态更新。本文最后以智能家居为背景,通过实例验证了基于R-OSGi平台的语义服务的动态更新方法,证明了本文所提出的理论的可行性和有效性。