论文部分内容阅读
软件开发的一个基本问题是如何及时演化以适应需求的持续变化。为了便于演化,不少系统采用了基于扩展的演化机制,尽管该机制有助于提高开发的效率,但是它也容易导致特征交互问题,即当不同的特征或服务集成到基系统时,可能发生相互干扰。特征交互问题广泛见于电信、Email、VolP等系统。事实上,它已成为软件开发的基础问题。
对特征交互的检测主要分为离线检测和在线检测两类方法。离线检测作用于系统设计阶段,它的特点是需要建立系统的形式化模型,然后利用模型检测等技术对系统模型进行验证。在线检测作用于系统运行阶段,它的特点是无需用形式化语言建立系统模型,而是通过在线监视和分析特征的行为来检测特征交互。然而,上述两类方法均还存在着一些不足。例如,离线检测面临特征组合和非单调扩展等问题;在线检测则面临额外的时间开销等问题。
本文旨在分析网络系统中与信号或消息交换相关的、由非单调扩展或不兼容消息处理引发的特征交互,对前一种交互提出了基于约束的检测方法,对后一种交互提出了基于模式的检测方法。
非单调扩展引发的交互的原因是,特征任意发送或接收基系统或其它特征的信号可能会违反某些潜在条件。因此,本文提出使用约束来限制特征发送或接收信号的行为。本文提出了两种获取约束的方法。第一种方法是从已有的特征交互入手定义约束;第二种方法是从基系统的逻辑规约入手定义约束。根据所获取的约束,可以容易地构造出系统需要满足的属性,这些属性将被置于由基模型和一个特征模型组成的复合模型中,以检测该特征模型是否包含可能导致冲突的行为。本文将此方法应用于电信系统,列举了所获取的约束,说明了约束的表示,最后给出了实验结果。该方法属于离线检测,但与已有的离线检测方法相比,它的特点是不受特征组合的影响,因此伸缩性更好;有利于保证扩展的单调性等等。
对于不兼容消息处理引发的交互,关键在于识别哪些特征行为的组合可能是不兼容的,这些不兼容的特征行为可以表示为冲突模式。从已知的特征交互提取的冲突模式可以用于检测其它未知的特征交互。该方法需要建立系统的Java模型,在模型运行时将收集和分析所有特征的行为,一旦发现特征行为满足某个冲突模式,即意味着可能发现了一个特征交互。本文将该方法应用于一个email系统,演示了如何建立系统模型,如何进行模式分析,最后给出了实验结果。该方法不会给系统运行带来额外时间开销;它的伸缩性较好;它能遍历所有可能的运行场景;它所分析的对象不仅包含特征的外部行为,还包含特征的内部行为和数据关系,这使得它能检测出更为丰富的交互。