您的位置:首页 > 其它

TinyOS论文02:Finding Symbolic Bug Patterns in Sensor Networks

2015-11-21 17:15 435 查看

Abstract

论文提出了一种用于归纳和总结传感网bug的错误诊断算法。多个不同的事件模式由于具有相同的事件属性可能有相同的错误表现,例如:某些系统中,发送方和接收方如果超出2个范围的跳数的话就会出错。

特征模式提取技术用于识别和描述传感网的异常行为,用于归纳传感网节点或者信息交换的特征模式

一、Introduce

bug特征模式:传感器网络中那些可能导致bug的实际可观测的消息交互以及结点、角色和信息类型的潜在关系称之为bug特征模式。

现有的一些传感网bug调试技术。。。,例如Dustminer使用频繁的序列挖掘技术用于识别交互的bug,论文表明,对基于绝对时间属性值的事件序列分析用户识别交互bug是不充分的。

论文采用特征模式的方法,通过不同事件属性间的关系来捕获导致bug的事件序列,即找出与bug高度相关、包含bug特征模式的关键的代码序列。

二、特征模式模型

特征模式的相关概念介绍:

1、logged事件:在运行时执行的任何操作(例如:消息的传输、消息接收和写入写入闪存)

2、logged事件的属性:例如消息传输事件的属性:senderId,senderType、destinationId、msgType

3、logged事件在论文中的定义为:

< EventType,attribute 1 ,attribute 2 ,...attribute n >


例如:单一的事件序列(有3个事件的单一序列):

< msgSent,senderId = 1,msgType = 0,destinationId = 3 >
< msgReceived,receiverId = 1,msgType = 1,senderId = 3 >
< flashWriteInitiated,nodeId = 1,dataSize = 100 >


高频序列挖掘算法用于提取事件的 高频子序列。(事件的子序列可以不用重复)

不同的模式的定义:有不同“支持”的事件子序列。“支持”指的是发生的次数。

相同特征模式举例:

1、S1和S2的logged序列:

S1 =< msgSent,senderId = 1,msgType = 0 >
< msgReceived,receiverId = 2,msgType = 0 >
S2 =< msgSent,senderId = 3,msgType = 0 >
< msgReceived,receiverId = 5,msgType = 0 >


2、特征模式:

S2 =< msgSent,senderId = X,msgType = 0 >
< msgReceived,receiverId = neighbor(X),msgType = 0 >


特征模式提取的任务是:识别满足特关系的高频模式,这个特定关系由用户指定或者从有共同关系的库中选取,并且这些特定关系定义了相同或者不同类型的事件属性,例如邻接关系、识别关系和类型关系。

特征模式提取的步骤

1、使用先验算法生成高频模式;

2、归纳高频模式;

3、最后提出了模式等级方案

三、Related Work

现有的工具对检测分布在多个结点间的bug不是很适用

现有的技术都不能自动找出特征模式。

SNMS提供了一种更传统的传感网管理服务,它的做法是通过手机和总结不同类型的测试例如数据包丢失、无线通信能源消耗。但它不会像开发人员提示错误信息;也不会提示为什么出错。

使用机器学习技术去诊断错误也不是最新最好的方法。

四、Overview

1、调试采用特征模式的原因

具有普遍性而不是仅针对某些特定场合。

2、特征模式提取算法

特征模式提取的两个步骤:

1、多属性事件转换成但属性事件,一次来减少计算的复杂度。使用序列挖掘算法生成单一属性的事件高频模式,将这种高频模式集合成为基本的高频集合。

2、生成候选特征模式(候选特征模式生成的步骤)

例如:

//基本的高频模式
Seq a = (< E x ,attr 2 = v i >,< E y ,attr 2 = v j >,< E z ,attr 3 = v k >)


//候选特征模式
(< E x ,attr 1 = ∗ >,< E x ,attr 2 = v i >,< E x ,attr 3 = ∗ >)
(< E y ,attr 1 = ∗ >,< E y ,attr 2 = v j >)
(< E z ,attr 1 = ∗ >,< E z ,attr 2 = ∗ >,< E z ,attr 3 = v k >)


3、Challenges

识别有意义的条件

找出有意义的特征模式关键: 用哪一个“*”属性的子集来替代特征 + 要测试的关系是什么

1、避免无用的检测;

2、提升自动化程度,为了减少人为干预,论文给出了专门适用于无线传感网络应用程序的与定义条件。

3、列举出需要检测的基本条件

4、在头文件中指定属性的类型;

5、任意复杂度条件的组合能够自动生成。

特征模式提取的伪代码:

Input: Set of Good Logs (GL), Set of Bad Logs(BL),similarity measure (δ)
Output: Set of discriminative symbolic pattern
1. PatternSetA=GenerateFrequentPatterns(GL)
2. SymbolicPatternSetA=ExtractSymbolicPattern(PatternSetA,GL,δ)
3. PatternSetB=GenerateFrequentPatterns(BL)
4. SymbolicPatternSetB=ExtractSymbolicPattern(PatternSetB,BL,δ)
5. DiscriminativePatternSet=DiffMine(SymbolicPatternSetA,SymbolicPatternSetB)
6. output DiscriminativePatternSet
Function: ExtractSymbolicPattern
Input: Set of Frequent Pattern(FP),Set of Logs(L),similarity measure (δ)
Output: Set of symbolic pattern(SP)
1. SP=Null;/ ∗ setofSymbolicpattern∗ /
2. for each pattern p in FP
2.1 for each checkcondition c
2.1.1 CSP=GenerateCandidateSymbolicPattern(p,c)
2.1.2 if(support(CSP)/support(p)> δ then SP=SP U CSP
2. return SP
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: