CN102135940A - 一种基于有限自动机的行为自动建模方法 - Google Patents
一种基于有限自动机的行为自动建模方法 Download PDFInfo
- Publication number
- CN102135940A CN102135940A CN2011101026128A CN201110102612A CN102135940A CN 102135940 A CN102135940 A CN 102135940A CN 2011101026128 A CN2011101026128 A CN 2011101026128A CN 201110102612 A CN201110102612 A CN 201110102612A CN 102135940 A CN102135940 A CN 102135940A
- Authority
- CN
- China
- Prior art keywords
- track
- mutual
- finte
- state machine
- equal value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明属于软件行为领域,涉及一种基于有限自动机的行为自动建模方法。第一步:获取交互轨迹:获取样例执行情况的交互轨迹使得交互轨迹执行顺序唯一;第二步:合并输入一等价轨迹:将生成的样例交互轨迹按输入等价的原则进行合并;第三步:获得谓词;第四步:通过第三步得到行为模型的扩展有限自动机EFA,增加一个公共的初始状态得到初始的EFA,再根据等价原则合并获得最终的EFA。本发明的目的就是为了获得更多更精确的信息,生成更好的软件行为模型。
Description
技术领域
本发明属于软件行为领域,涉及一种基于有限自动机的行为自动建模方法。
背景技术
软件行为的动态模型用来动态的检测反常行为,静态和动态的检查软件组件、验证协议、生成测试案例、获取异常事件序列和验证程序属性之间的兼容性。有限状态自动机(Finite State Automata)是一种用于研究系统状态的数学模型,也是有限计算的基本模型,是许多形式化规格、验证方法的基础模型,它常用于行为建模中。功能行为建模的主要技术或者生成限制数据的模型,通常是以布尔表达式的形式;或者组件之间的互动模式,通常是以有限状态机的形式。数据和交互建模都对分析和验证系统执行的特殊方面有用:Daikon描述检测变量的重要属性,有限状态推理机捕捉和推广交互模式。然而,这些模型中没有一个能捕捉数据值和组件交互之间的复杂的相互作用,所以最近的分析和测试技术会错失重要的信息。数据值和交互序列间复杂的相互作用,或者更多的事件序列可能依赖数据值,可以通过扩展有限状态机有效的建模,它标示在不同状态下捕捉约束数据值的调用特征。从执行样例中自动生成EFSMs是一个具有挑战的问题,Berg et al.曾在一定程度上做过描述。他提出的方法由于强制的要求限制了其应用,如执行成员的可能性,等价查询和仅支持布尔参数。
一种软件行为自动建模算法——GK-tail,关注数据值和组件交互之间关系的模型生成,这是一种从交互轨迹自动生成扩展的有限状态机(EFSMs)的技术。GK-tail处理交互轨迹集合,产生一个处理过所有交互轨迹的EFSM。它分为四个步骤:(1)合并输入-等价轨迹。这一部分是对记录轨迹的初步处理,合并仅仅是不同数据值的调用序列。也就是说,一个输入-等价轨迹集合表示一个行为样式。(2)生成相关轨迹的谓词。这一步同样是对记录轨迹的处理,主要是指从多重数据值集合中产生相关转换谓词。(3)产生一个初始的扩展有限自动机模型。在这一步,增加一个公共初始状态,从标注谓词的交互轨迹生成一个初始的EFSM模型。(4)合并等价状态,得到最终的扩展有限自动机模型。最后一步也是比较重要的,合并的规则是kTail算法主要规则的扩展,当不同的EFSM状态生成等价的行为集合,则有一个唯一的逻辑状态的多重表达,同时可以安全的合并。
现有的动态模型无法捕捉完整的信息,限制了分析和验证相关技术的精准性。
关于行为建模的动态分析技术主要有以下三类,数据值的相互关系,生成交互样式的模型,或者生成同时捕获数据和交互的模型。
(1)检测数据值的相互关系。在特殊的程序点给变量赋值可以提供重要的信息来理解和分析系统执行情况。一些动态分析技术已经在不同应用领域进行了实验,来自动的提取关于数据相互关系的信息。
(2)交互式样的生成模型。存在一些技术从轨迹集合中自动生成有限状态机(FSM)。其中有些推理引擎仅从确定样例集合中生成模型。大多数依赖确定样例运行的技术是k-tail算法的扩展和变种。
(3)生成整合模型。EFSMs已经广泛的应用到状态行为的规格说明中,但是目前为止,从程序行为自动生成EFSMs的方法很少的被研究学习。Berg et al.提出了一种技术来生成EFSMs。这项技术仅支持布尔参数的谓词,同时在严格条件下运行:要求查询成员的概率,就是来一个未知序列是否是模型的一部分,并要求查询等价,就是来决定一个局部推理模型和被推理的模型之间的等价。
这些技术都无法捕捉完整的信息,特别是数据属性值和组件交互轨迹之间的作用的信息。本发明的目的就是为了获得更多更精确的信息,生成更好的软件行为模型。
发明内容
本发明的目的在于针对现有技术的不足,提出一种基于有限自动机的行为自动建模方法,目的就是为了获得更多更精确的信息,生成更好的软件行为模型。
该种基于有限自动机的行为自动建模方法,包括以下步骤:
第一步:获取交互轨迹:获取样例执行情况的交互轨迹使得交互轨迹执行顺序唯一;
第二步:合并输入-等价轨迹:将生成的样例交互轨迹按输入等价的原则进行合并;
第三步:获得谓词;
第四步:通过第三步得到行为模型的扩展有限自动机EFA,增加一个公共的初始状态得到初始的EFA,再根据等价原则合并获得最终的EFA。
上述的交互轨迹在程序执行时用监控和记录平台自动提取;交互轨迹的定义为:给定一个方法X的有限集合,一个为空的输入参数集合R和相应的域DRx,一个为空的变量集合V和相应的域DV,一个参数轨迹是一个三元组(x,px,v),其中x∈X,px∈DRx,v∈DV;一个交互轨迹是一个参数轨迹的序列,it=(x1,px1,v1)...(xn,pxn,vn),其中xi∈X,px∈DRxi,vi∈Dv。
上述的合并输入-等价轨迹在交互轨迹中定义三平等标准;给定it1=(x1,px1,v1)...(xn,pxn,vn),it2=(z1,pz1,w1)...(zm,pzm,wm),其中:
it1=inputs it2(it1输入等价it2)当n=m且xi=zi。
it1=params it2(it1参数等价it2)当n=m且xi=zi,pxi=pzi。
it1=it2(it1等价it2)当n=m且xi=zi,pxi=pzi,vi=wi。通过第一步得到的交互轨迹按定义的标准来进行输入-等价合并,得到简化的数据集合;一个数据集被定义为一个序列(x1,dpx1,dv1)...(xn,dpxn,dvn),其中xi∈X是一个方法,是一个输入参数评估集合,是一个变量评估集合;给定一个输入等价的交互轨迹集合it1=(x1,p1 x1,v1 1)...(xn,p1 xn,v1 n),...,itm=(x1,pm x1,vm 1)...(xn,pm xn,vm n),方法就其合并到数据集ds=(x1,p1 x1∪...∪pm x1,v1 1∪...∪vm 1)...(xn,p1 xn∪...∪pm xn,v1 n∪...∪vm n)。
上述的获得谓词通过第二步得到的交互轨迹,使用Daikon和ESC/Java工具的组合对合其进行处理,从数据集中生成谓词;首先,Daikon对目标程序做处理,使它运行时能记录下我们感兴趣的变量的值;其次,程序运行过程中感兴趣的值被记录;最后Daikon从记录的数据中推导出不变量。
上述的得到行为模型的扩展有限自动机通过增加一个公共的初始状态从标注谓词的交互轨迹生成一个初始的扩展有限自动机,然后合并等价状态,得到最终的扩展有限自动机:给定一个标注谓词的交互轨迹集合{seq1,...seqm},其中seqi=(xi 1,Pi 1)...(xi ni,Pi ni),对初始的EFA(S,T,s0,sF)定义如下:S={s0,s1 1,...s1 n1,s2 1,...s2 n2,...,sm 1,...sm nm};对在输入序列集合中的每个元素(xi j,Pi j),其中j>1,存在一个转换t=(si j-1,xi j,Pi j,si j)∈T;对输入序列集合中的每一个元素(xi 1,Pi 1),存在一个转移t=(s0,xi 1,Pi 1,si 1)∈T;sF={si nii=1,...m};s0是初始状态;然后,通过合并等价状态精简初始的EFA得到所观察到的行为的紧凑的模型。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,本实施例在以本发明的技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
第一步:获取交互轨迹
调用轨迹描述方法调用的序列,标注参数和变量的值。数据是关于调用方法的参数,变量或其他信息,它们有各自的值。交互轨迹可以在程序执行时用各种监控和记录平台自动的提取,例如Aspectwerkz,TPTP,Apache Log4j。在本方法中使用Aspectwerkz监控平台自动提取交互轨迹,为后续工作做准备。在交互轨迹的结构上并没有强加特殊要求,如最大长度,缺少周期和决定。唯一的要求是每个交互轨迹是有序的。
现在定义交互轨迹(interaction traces)。给定一个方法X的有限集合,一个可能为空的输入参数集合R和相应的域DRx,一个可能为空的变量集合V和相应的域DV,一个参数轨迹是一个三元组(x,px,v),其中x∈X,px∈DRx,v∈DV。一个交互轨迹是一个参数轨迹的序列,it=(x1,px1,v1)...(xn,pxn,vn),其中xi∈X,px∈DRxi,vi∈DV。图1是调用序列的几个样例,标签下的标注指示了参数值(在线上面)和上下文变量(在线下面)。上下文变量存在时才做标注。
第二步:合并输入-等价轨迹
在交互轨迹中定义三平等标准。给定it1=(x1,px1,v1)...(xn,pxn,vn),it2=(z1,pz1,w1)...(zm,pzm,wm),其中:
vi=wi。正如所定义的,输入-等价轨迹仅仅是不同数据值的调用序列。直观的,一个输入-等价轨迹集合表示了一个行为样式,也就是不同的输入引起的相同的方法调用序列。
该步骤是通过使用步骤1得到的交互轨迹按定义的标准来进行输入-等价合并,得到简化的数据集合。一个数据集被定义为一个序列(x1,dpx1,dv1)...(xn,dpxn,dvn),其中xi∈X是一个方法,是一个输入参数评估集合,是一个变量评估集合。给定一个输入等价的交互轨迹集合it1=(x1,p1 x1,v1 1)...(xn,p1 xn,v1 n),...,itm=(x1,pm x1,vm 1)...(xn,pm xn,vm n),方法就其合并到数据集ds=(x1,p1 x1∪...∪pm x1,v1 1∪...∪vm 1)...(xn,p1 xn∪...∪pm xn,v1 n∪...∪vm n)。
第三步:获得谓词通过上一步得到的交互轨迹,使用Daikon和ESC/Java工具的组合对合其进行处理,从数据集中生成谓词。这是本专利的一个创新点,主要是针对Daikon工具本身的不足,而是使用Daikon和ESC/Java工具的组合,提高信息的准确度,为生成更好的软件行为模型做准备。Daikon工具可以动态的发现程序中的不变量。不变量是程序中某一点或多点上具有的属性。Daikon从程序执行中发现程序不变量,步骤如下:首先,Daikon对目标程序做处理,使它运行时能记录下我们感兴趣的变量的值;其次,我们运行处理过的程序;程序运行过程中,我们感兴趣的值会被记录下来;最后,Daikon从记录的数据中推导出不变量。但是,Daikon是不完整的,也是不可靠的。也就是说,Daikon不能发现所有的不变量;同时,在Daikon发现的不变量中,也可能会有错误的不变量。ESC/Java可以验证Java代码与JML描述之间的一致性。ESC/Java工具是Compaq研究院开发的,在编译时做扩展的静态检查,但是比类型检查要强大。ESC/Java使用自动定理证明器推理程序的语义,ESC/Java能够静态的找出许多运行时出现的错误,如空引用,数组越界错误以及类型转换错误;ESC/Java也能发现并发程序中的同步错误,如竞争条件、死锁等。
综合这两种技术,可以取各自的优秀,弥补彼此的缺点。动态技术可以发现程序的不变量,这些不变量可以被看作程序的注释,这些不变量也可以作为静态验证的目的,静态验证器可以验证通过动态技术发现的不变量。
第四步:通过步骤3得到行为模型的扩展有限自动机(EFA)
在这一步,通过增加一个公共的初始状态从标注谓词的交互轨迹生成一个初始的扩展有限自动机,然后合并等价状态,得到最终的扩展有限自动机。
给定一个标注谓词的交互轨迹集合{seq1,...seqm},其中seqi=(xi 1,Pi 1)...(xi ni,Pi ni),对初始的EFA(S,T,s0,sF)定义如下:
·S={s0,s1 1,...s1 n1,s2 1,...S2 n2,...,Sm 1,...sm nm};
·对在输入序列集合中的每个元素(x1 j,P1 j),其中j>1,存在一个转换t=(s1 j-1,x1 j,P1 j,s1 j)∈T;
·对输入序列集合中的每一个元素(xi 1,Pi 1),存在一个转移t=(s0,xi 1,Pi 1,si 1)∈T;
·sF={si ni|i=1,...m};
·s0是初始状态。
然后,通过合并等价状态精简初始的EFA,来得到所观察到的行为的紧凑的模型。
EFA的合并是kTail算法的主要规则的扩展,由Bierman和Feldmann提出,他们认为当状态经过相同的路径,则这些状态是等价的。当不同的EFA状态生成等价的行为集合,则是一个唯一的逻辑状态的多重表达,并且可以安全的合并。
总的来说,路径集合存在的状态可能是无限的,所以对比状态可能会开销非常大。我们限制序列的长度与k进行比较,和Bierman、Feldmann提出的相似。给定一个状态s∈S,定义序列集合{seq1,...seqr}的k-future(s),其中seqi={(x1,P1)...(xk,Pk)},存在一个转移序列(s,x1,P1,s1)(s1,x2,P2,s2)...(sk-1,xk,Pk,sk)。通过比较k-futures的状态对来识别状态并进行合并。我们根据是三个标准识别状态进行合并,产生了不同的模型:等价,弱包容和强包容。
为了更好的记录不完全的轨迹,我们可以使用弱包容或强包容。状态s1弱包容状态s2,当在k-future的方法序列中的s1和s2完全匹配,但是在s1的k-future的谓词比相当的s2的k-future的谓词更一般。状态s1强包容状态s2,当s1的k-future包含s2的k-future,就是在s1的k-future的方法序列包含s2的k-future的方法序列,在s1的k-future的谓词比相当的s2的k-future的谓词更一般。
一般,给定两个长度为k的序列,seq1=(x11,P11)...(x1k,P1k)和seq2=(x21,P21)...(x2k,P2k),其中,
给定两个k-futures,f1={seq11,...seq1n1},同时seq1i=(x11,P11)...(x1k,P1k),f2={seq21,...seq2n2},同时seq2i=(x21,P21)...(x2k,P2k),其中,
Claims (5)
1.基于有限自动机的行为自动建模方法,其特征在于:包括以下步骤:
第一步:获取交互轨迹:获取样例执行情况的交互轨迹使得交互轨迹执行顺序唯一;
第二步:合并输入-等价轨迹:将生成的样例交互轨迹按输入等价的原则进行合并;
第三步:获得谓词;
第四步:通过第三步得到行为模型的扩展有限自动机EFA,增加一个公共的初始状态得到初始的EFA,再根据等价原则合并获得最终的EFA。
2.如权利要求1所述的基于有限自动机的行为自动建模方法,其特征在于:上述的交互轨迹在程序执行时用监控和记录平台自动提取;交互轨迹的定义为:给定一个方法X的有限集合,一个为空的输入参数集合R和相应的域DRx,一个为空的变量集合V和相应的域DV,一个参数轨迹是一个三元组(x,px,v),其中x∈X,px∈DRx,v∈DV;一个交互轨迹是一个参数轨迹的序列,it=(x1,px1,v1)...(xn,pxn,vn),其中xi∈X,px∈DRxi,vi∈DV。
3.如权利要求1所述的基于有限自动机的行为自动建模方法,其特征在于:上述的合并输入-等价轨迹在交互轨迹中定义三平等标准;给定it1=(x1,px1,v1)...(xn,pxn,vn),it2=(z1,pz1,w1)...(zm,pzm,wm),其中:
it1=it2(it1等价it2)当n=m且xi=zi,pxi=pzi,vi=wi。通过第一步得到的交互轨迹按定义的标准来进行输入-等价合并,得到简化的数据集合;一个数据集被定义为一个序列(x1,dpx1,dv1)...(xn,dpxn,dvn),其中xi∈X是一个方法,是一个输入参数评估集合,是一个变量评估集合;给定一个输入等价的交互轨迹集合it1=(x1,p1 x1,v1 1)...(xn,p1 xn,v1 n),...,itm=(x1,pm x1,vm 1)...(xn,pm xn,vm n),方法就其合并到数据集ds=(x1,p1 x1∪...∪pm x1,v1 1∪...∪vm 1)...(xn,p1 xn∪...∪pm xn,v1 n∪...∪vm n)。
4.如权利要求1或2或3所述的基于有限自动机的行为自动建模方法,其特征在于:上述的获得谓词通过第二步得到的交互轨迹,使用Daikon和ESC/Java工具的组合对合其进行处理,从数据集中生成谓词;首先,Daikon对目标程序做处理,使它运行时能记录下我们感兴趣的变量的值;其次,程序运行过程中感兴趣的值被记录;最后Daikon从记录的数据中推导出不变量。
5.如权利要求1或2或3所述的基于有限自动机的行为自动建模方法,其特征在于:上述的得到行为模型的扩展有限自动机通过增加一个公共的初始状态从标注谓词的交互轨迹生成一个初始的扩展有限自动机,然后合并等价状态,得到最终的扩展有限自动机:给定一个标注谓词的交互轨迹集合{seq1,...seqm},其中seqi=(xi 1,Pi 1)...(xi ni,Pi ni),对初始的EFA(S,T,s0,sF)定义如下:S={s0,s1 1,...s1 n1,s2 1,...s2 n2,...,sm 1,...sm nm};对在输入序列集合中的每个元素(xi j,Pi j),其中j>1,存在一个转换t=(si j-1,xi j,Pi j,si j)∈T;对输入序列集合中的每一个元素(xi 1,Pi 1),存在一个转移t=(s0,xi 1,Pi 1,si 1)∈T;sF={si ni|i=1,...m};s0是初始状态;然后,通过合并等价状态精简初始的EFA得到所观察到的行为的紧凑的模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101026128A CN102135940A (zh) | 2011-04-22 | 2011-04-22 | 一种基于有限自动机的行为自动建模方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011101026128A CN102135940A (zh) | 2011-04-22 | 2011-04-22 | 一种基于有限自动机的行为自动建模方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102135940A true CN102135940A (zh) | 2011-07-27 |
Family
ID=44295728
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011101026128A Pending CN102135940A (zh) | 2011-04-22 | 2011-04-22 | 一种基于有限自动机的行为自动建模方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102135940A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103336694A (zh) * | 2013-07-08 | 2013-10-02 | 北京航空航天大学 | 一种实体行为建模的组装方法和系统 |
EP3109763A1 (en) * | 2015-06-24 | 2016-12-28 | Tata Consultancy Services Limited | Method and system for generating functional test cases for software systems |
CN110688368A (zh) * | 2019-09-28 | 2020-01-14 | 武汉工程大学 | 一种构件行为模型挖掘方法与装置 |
CN112989136A (zh) * | 2021-04-19 | 2021-06-18 | 河南科技大学 | 一种有限状态自动机器的精简方法及系统 |
-
2011
- 2011-04-22 CN CN2011101026128A patent/CN102135940A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103336694A (zh) * | 2013-07-08 | 2013-10-02 | 北京航空航天大学 | 一种实体行为建模的组装方法和系统 |
CN103336694B (zh) * | 2013-07-08 | 2016-06-22 | 北京航空航天大学 | 一种实体行为建模的组装方法和系统 |
EP3109763A1 (en) * | 2015-06-24 | 2016-12-28 | Tata Consultancy Services Limited | Method and system for generating functional test cases for software systems |
CN110688368A (zh) * | 2019-09-28 | 2020-01-14 | 武汉工程大学 | 一种构件行为模型挖掘方法与装置 |
CN112989136A (zh) * | 2021-04-19 | 2021-06-18 | 河南科技大学 | 一种有限状态自动机器的精简方法及系统 |
CN112989136B (zh) * | 2021-04-19 | 2022-10-04 | 河南科技大学 | 一种有限状态自动机器的精简方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190138731A1 (en) | Method for determining defects and vulnerabilities in software code | |
Gyimóthy et al. | Empirical validation of object-oriented metrics on open source software for fault prediction | |
Song et al. | Efficient alignment between event logs and process models | |
De Lucia et al. | Improving behavioral design pattern detection through model checking | |
CN105868116A (zh) | 基于语义变异算子的测试用例生成和优化方法 | |
Mariani et al. | Gk-tail+ an efficient approach to learn software models | |
Reger et al. | A pattern-based approach to parametric specification mining | |
Walkinshaw et al. | Automated comparison of state-based software models in terms of their language and structure | |
Walkinshaw et al. | Inferring computational state machine models from program executions | |
Oh et al. | Transition coverage testing for simulink/stateflow models using messy genetic algorithms | |
He et al. | Enhancing spectrum-based fault localization using fault influence propagation | |
CN113326187A (zh) | 数据驱动的内存泄漏智能化检测方法及系统 | |
Lahami et al. | A Comprehensive Review of Testing Blockchain Oriented Software. | |
Antony et al. | An approach to clone detection in behavioural models | |
CN102135940A (zh) | 一种基于有限自动机的行为自动建模方法 | |
Wang et al. | Can higher-order mutants improve the performance of mutation-based fault localization? | |
Sadri‐Moshkenani et al. | Survey on test case generation, selection and prioritization for cyber‐physical systems | |
Abdurazik et al. | Coupling-based class integration and test order | |
Nishiura et al. | Improving faulty interaction localization using logistic regression | |
Wolny et al. | Model-driven runtime state identification | |
Westhofen et al. | Benchmarking software model checkers on automotive code | |
CN110554952B (zh) | 一种基于搜索的分层回归测试数据生成方法 | |
Pastore et al. | TkT: Automatic inference of timed and extended pushdown automata | |
Zhu et al. | A systematic literature review of how mutation testing supports test activities | |
Meng et al. | Detecting buffer boundary violations based on SVM |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110727 |