专利名称:基于语义的构件动态替换方法
技术领域:
本发明涉及计算机软件开发中间件领域,特别是涉及一种基于语义的构件 动态替换方法。
背景技术:
一些系统必须无间断长期运行,比如导航系统、金融系统、邮件系统。不 管是对提供商还是客户来说,中断这些服务都将带来巨大损失,甚至灾难。因 此,新技术的发展、客户需求、功能实现或业务流程的改变,都要求软件系统 具备动态演化的能力,即可以在不停止系统运行的情况下,实现软件的功能更新。
此外,自适应、自管理系统也越来越引起人们的关注。随着Internet的出现 与发展,现在的基于构件的系统所面临的环境从静态、封闭逐步走向动态、开 放,应用系统变得越来越难以管理和维护,必须尽可能实现应用系统的自动管理。
从软件体系结构的角度看,所有的软件系统,无论多么复杂,都可视为由 构件根据一定规则连接而成。组成系统的构件,构件的物理分布及构件间的连 接关系等构成了系统的配置。在系统运行期间对系统配置进行更改的技术就是 动态配置。而动态配置主要有构件删除、构件添加、构件替换、构件迁移、连 接建立、连接删除、连接重定向和构件属性等方面,其中最关键的就是构件替 换,亦即动态替换。
虽然某些场景可停止系统运行来替换构件,动态替换仍是较好的选择。因为动态替换期间,系统中仍有部分构件不受影响,可继续为客户服务,这样就 把对系统的影响降到了最低。
目前的做法有形式化方法和非形式化方法两种。动态配置形式化方向的研 究重点在于对系统结构和配置变化的形式化描述以及相关性质的形式化验证, 包括动态配置意图本身的合法性,动态配置操作序列是否保证系统一致性,以 及系统在动态配置后是否具有期望的性质,如是否存在死锁、活锁等。但是目 前利用形式化的系统结构描述语言对系统的描述和分析技术,特别是对系统动 态特性的描述和分析技术还远未成熟。
非形式化方法根据保证系统一致性方法的不同,非形式化的动态配置方法 大致可分为恢复性方法、避免性方法和通用配置框架这三种方法。其中,避免 性方法对应用系统本身没有过高要求、使用范围较广、动态配置性能较好、动 态配置能力也较强,目前很多研究都集中在此类方法卜.,本发明也采用了这种 方法。
但是目前的非形式化方法由于找不到一种强有力的构件描述方法,来描述 构件的运行时信息, 一般只能采用阻塞大量的构件以防止动态替换期间目标构 件处于非稳定状态。
因此急需一种能够尽可能减少构件动态替换期间对系统性能带来影响的可行方
法,以满足动态配置的需求。
发明内容
为解决以上问题,本发明提供能够尽可能减少构件动态替换期间对系统性 能影响的基于语义的构件动态替换方法。
一种基于语义的构件动态替换方法,采用语义技术为构件描述提供更为丰富的信息,然后使用基于构件的软件系统一致性约束的保证方法进行构件替换 的约束条件,所述构件为基于语义技术的构件模型。
进一歩的,所述语义构件模型包括行为模型和交互模型。
进一步的,动态替换过程中的系统一致性约束包括行为一致性、状态一致 性、应用一致性和引用一致性。
更进一步的,所述系统一致性约束的保证方法主要通过端口负责构件的状 态设置。
更进一步的,所述系统一致性约束的保证方法包括
a) 行为一致性的保证方法为,找到启动事务的源构件并阻塞它,从而保证 在动态替换期间没有正在执行的事务;
b) 状态一致性的保证方法为,构件通过指定的一个端口负责状态的收集, 同时指定另一个端口负责状态的初始化,这样就能实现构件状态在新旧构件之 间的正确传递;
c) 应用一致性的保证方法为,构件通过指定一个端口负责构件加入系统时 的相关状态的设置,同时指定另一个端口负责构件离开系统时的相关状态设置;
d) 引用一致性的保证方法为,通过引用注册中心解决引用一致性的问题, 所有新创建的构件的端口都需要在引用注册中心登记,由引用注册中心统一管 理端口之间的引用;
进一步的,所述构件替换的流程为 第一阶段,找出所有可以启动需要目标构件参与的事务的源端口; 第二阶段为钝化阶段; 第三阶段为激活阶段。更进一步的,所述钝化阶段为首先阻塞第一阶段中找到的所有源端口,其 次以等待方式驱动目标构件进入稳定状态,然后保存目标构件的状态并设置系 统中的其他构件状态,最后通过弓I用注册中心删除目标构件。
更进一步的,所述激活阶段,首先通过引用注册中心添加新构件,其次设 置系统中其他构件的状态,然后设置新构件的状态并激活它,最后激活系统中 在第二阶段被阻塞的所有源端口 。
本发明与背景技术相比,具有的有益的效果是它采用较成熟的非形式化 方法,在构件模型中引入语义,能更好地描述构件的运行时信息,为构件的动 态替换提供了必要的信息,同时在替换过程中将粒度从整个构件细化到构件的 端口,提高了査找影响目标构件的构件集合的精度,且在替换期间只阻塞这些 构件的相应事务启动端口 ,从而提高了替换期间系统的性能。
图1是语义构件的概念模型;
图2是接口本体的抽象示意图3是交互本体的抽象示意图
图4是源端口求解示意图
具体实施例方式
1)语义构件模型
语义构件模型包括行为模型和交互模型,在行为模型中, 一个操作序列组
成一个接口,接口通过端口向外发布(见图1);在交互模型中,端口之间通过 连接子进行连接。
若接口中的操作序列为原子性序列(也就是事务),则可标识该接口为事务启动接口 ,而该接口发布的端口也相应地为事务启动端口 。
端口有两种类型服务端口和配置端口。通过服务端口发布的接口提供通 常意义上的一般服务。而配置端口则提供动态替换相关的服务,配置端口包括
Getter、 Setter、 Passivator和Activator四种。其中Getter端口负责构件离 开系统时状态的收集、Setter负责构件加入系统时状态的设置、Passivator负责 构件离开系统时对系统中其他构件状态的设置、Activator负责构件加入系统时 对系统中其他构件状态的设置。接口本体的抽象示意图见图2。
构件通过端口进行交互,而连接子是端口之间的通道,连接子指明了源端 口和目标端口等,交互本体的抽象示意图见图3。
2) 系统一致性约束
动态替换过程中的系统一致性约束可分为以下几种
a) 行为一致性系统在运行时表现为一系列的行为序列,动态替换若保证 了行为序列的正常完成,也就保证了系统处于一致性状态。
b) 状态一致性进行动态替换时,构件状态在新旧构件之间的正确传递称 为状态一致性。
C)应用一致性构件状态的除了与自身行为有关,还受到系统对状态全局
约束的限制,动态替换必须保证不会破坏这种全局状态约束,称为应用一致性。
d)引用^致性构件替换前后,交互中的构件不会持有过时的引用,这就 是引用一致性。
3) 系统-致性约束的保证方法
a)行为一致性的保证方法为,找到启动事务的源构件并阻塞它,从而保证 在动态替换期间没有正在执行的事务。为保证行为一致性,目标构件在动态配置前必须进入稳定状态。 当端口满足如下条件时,称该端口处于懒惰状态
1. 当前没有启动需要目标构件参与的事务
2. 将来不会启动需要目标构件参与的事务
当处于懒惰状态的端口满足以下条件时,称该端口处于稳定状态
1. 当前没有参与其他端口启动的事务
2. 将来不会参与其他端口启动的事务
当目标构件的所有端口处于稳定状态时,称该目标构件处于稳定状态。 如果某个端口可以启动需要目标构件参与事务,并且从该端口到目标构件
之间的调用不需要另外一个事务启动端口参与,我们称该端口称为源端口。也
就是离目标构件最近的事务启动端口 。
我们将目标构件Q的所有源端口结合记为PS(Q)。显然可以证明端口的懒
惰状态是可以达到的。当PS(Q)中的所有端口都进入懒惰状态时,Q即进入稳定 状态。因此,构件的稳定状态也是可以达到的。
当然,动态替换的对象除了可以是单个构件外,还可以是由多个构件组成 的构件集合。对于目标构件集合TS来说,PS(TS)=UieTSPS(i)。只有当PS(TS) 中的所有构件都进入懒惰状态时,TS中各构件才能进入稳定状态。
替换处于稳定状态的构件不会破坏事务的完整性,从而保证了行为一致性。
而且实施动态替换前,驱动TS进入稳定状态,可以使构件此时的状态相对 稳定,为保证构件状态一致性和应用状态--致性的保证提供了适当时机。
其中PS(TS)的计算实例如图4所示,为了替换构件ComA,必须找出构件 ComA所拥有的端口 PortA的源端口。通过连接亍R3、 R2、 Rl回溯寻找其源端口,得到唯一端口 (构件ComC的PortC2),也就是说构件ComA的源端口集合 为PS(TS)= {PortC2},其中TS= {ComA};
b) 状态一致性的保证方法为,通过构件指定的一个Getter端口负责构件离 开系统时构件状态的收集,并通过"个Setter端口负责构件加入系统时构件状态 的初始化。
c) 应用一致性的保证方法为,通过构件指定的一个Activator端口负责构件 加入系统时的相关状态的设置,包括对受其影响的所有构件的状态设置,可通 过给这些构件发送请求来实现这个目的;而通过指定一个Passivator端口负责构 件离开系统时的相关状态设置;
d) 引用一致性的保证方法为,通过引用注册中心解决引用一致性的问题, 所有新创建的构件的端口都需要在引用注册中心登记,由引用注册中心统一管 理端口之间的引用。引用注册中心为每个端口分配唯一的URL标识,并为每一 个与之交互的端口建立连接子,连接两个端口,实现信息交互的正常执行;
4)动态替换的实现
动态替换的基本思路是,首先驱动目标构件的源端口集合进入预期的一致 性状态,也就是懒惰状态;其次,实施动态配置意图;最后,恢复系统的正常 运行。下面给出构件替换执行的具体算法流程,该流程可以分三个阶段进行
第一阶段,找出所有可以启动需要目标构件参与的事务的源端口。首先找 出所有的目标构件,将其拥有的端口放入端口列表PL,其次从PL中逐个取出 端口,并回溯该端口的源端口,由此生成一棵调用树,然后判断树中的叶子节 点是否存在源端口,若有则把这些端口加入源端口集合PS中。如此循环直到列 表PL中的端口全部被检查过为止。第二阶段,钝化阶段。首先阻塞第一阶段中找到的所有源端口,其次以等
待方式驱动目标构件进入稳定状态,然后通过构件的Getter端口保存目标构件 的状态并通过构件的Passivator端口设置系统中的其他构件状态,最后通过引用 注册中心删除目标构件。
第三阶段,激活阶段。首先通过构件注册中心添加新构件,其次通过新构 件的Activator端口设置系统中其他构件的状态,然后通过新构件的Setter端U 初始化新构件的状态并激活它,最后激活系统中在第二阶段被阻塞的其他构件。
至此,动态替换执行结束。
权利要求
1. 一种基于语义的构件动态替换方法,其特征在于采用语义技术为构件描述提供更为丰富的信息,然后使用基于构件的软件系统一致性约束的保证方法进行构件替换的约束条件,所述构件为基于语义技术的构件模型。
2. 根据权利要求1所述的基于语义的构件动态替换方法,其特征在于所述语 义构件模型包括行为模型和交互模型。
3. 根据权利要求1所述的基于语义的构件动态替换方法,其特征在于动态替 换过程中的系统一致性约束包括行为一致性、状态一致性、应用一致性和引用一致性。
4. 根据权利要求3所述的基于语义的构件动态替换方法,其特征在于所述系 统一致性约束的保证方法主要通过端口负责构件的状态设置。
5. 根据权利要求4所述的基于语义的构件动态替换方法,其特征在于所述系 统一致性约束的保证方法包括a) 行为一致性的保证方法为,找到启动事务的源构件并阻塞它,从而保证在动态替换期间没有正在执行的事务;b) 状态一致性的保证方法为,构件通过指定的一个端口负责状态的收集, 同时指定另一个端口负责状态的初始化,这样就能实现构件状态在新旧构件之间的正确传递;c) 应用一致性的保证方法为,构件通过指定一个端口负责构件加入系统时 的相关状态的设置,同时指定另一个端口负责构件离开系统时的相关状态设置;d) 引用一致性的保证方法为,通过引用注册中心解决引用一致性的问题, 所有新创建的构件的端口都需要在引用注册中心登记,由引用注册中心统一管 理端口之间的引用;
6. 根据权利要求1所述的基于语义的构件动态替换方法,其特征在于所述构件替换的流程为第一阶段,找出所有可以启动需要目标构件参与的事务的源端口; 第二阶段为钝化阶段;第三阶段为激活阶段。
7. 根据权利要求6所述的基于语义的构件动态替换方法,其特征在于所述钝 化阶段为首先阻塞第一阶段中找到的所有源端口,其次以等待方式驱动目标 构件进入稳定状态,然后保存目标构件的状态并设置系统中的其他构件状态, 最后通过引用注册中心删除目标构件。
8. 根据权利要求6所述的基于语义的构件动态替换方法,其特征在于所述激 活阶段,首先通过引用注册中心添加新构件,其次设置系统中其他构件的状态, 然后设置新构件的状态并激活它,最后激活系统中在第二阶段被阻塞的所有源 端口。
全文摘要
本发明涉及计算机软件开发中间件领域,特别是涉及一种基于语义的构件动态替换方法。一种基于语义的构件动态替换方法,采用语义技术为构件描述提供更为丰富的信息,然后使用基于构件的软件系统一致性约束的保证方法进行构件替换的约束条件,所述构件为基于语义技术的构件模型。本发明与背景技术相比,具有的有益的效果是它采用较成熟的非形式化方法,在构件模型中引入语义,能更好地描述构件的运行时信息,为构件的动态替换提供了必要的信息,同时在替换过程中将粒度从整个构件细化到构件的端口,提高了查找影响目标构件的构件集合的精度,且在替换期间只阻塞这些构件的相应事务启动端口,从而提高了替换期间系统的性能。
文档编号G06F9/44GK101441565SQ20081016339
公开日2009年5月27日 申请日期2008年12月18日 优先权日2008年12月18日
发明者健 吴, 吴朝晖, 尹建伟, 莹 李, 殷昱煜, 邓水光 申请人:浙江大学