一种组件协议挖掘方法、装置及系统制造方法及图纸

技术编号:12091456 阅读:105 留言:0更新日期:2015-09-23 09:47
本发明专利技术公开了一种组件协议挖掘方法、装置及系统,该方法包括:发送开始插桩指令至所述N个客户端,所述开始插桩指令中携带有需要挖掘的类的M个函数的函数标识,M为大于1的整数;接收所述N个客户端发送的所述M个函数的函数调用信息;所述函数调用信息是所述N个客户端基于所述开始插桩指令收集的信息;根据所述函数调用信息更新所述服务器中存储的所述类的组件协议。本发明专利技术提供的方法、装置及系统用以解决现有技术中的组件协议挖掘方法存在的人力耗费大和挖掘效率低的技术问题。实现了降低数据获取人力成本,提高组件协议挖掘效率的技术效果。

【技术实现步骤摘要】

本专利技术涉及程序挖掘
,尤其涉及一种组件协议挖掘方法、装置及系统
技术介绍
软件组件的接口函数之间通常存在着时序约束。使用软件组件时需要遵守的时序 约束构成了该组件的一个协议,即组件协议。这种协议规定了接口函数之间调用的先后顺 序。如下所示,分别展示了类java.util.Stack和java.util.Iteration的一个时序约束: (1)调用Stack类的peekO函数查看栈顶元素之前,应该先调用pushO函数向栈 中插入一个元素; (2)调用Iteration类的next()函数获取下一个元素之前应该先调用hasNext() 函数查看下一个元素是否存在。 这种约束信息可以用于程序说明、程序测试和程序验证等领域。例如:程序违 反上述时序约束(1)时,会导致EmptyStackException异常;违反时序约束(2)会导致 NoSuchElementException异常。 程序约束挖掘是自动的获得组件协议的有效方法。其通常包括静态挖掘方法和动 态挖掘方法。其中,动态挖掘方法不需要以程序源代码作为输入且可以避免静态挖掘方法 中存在的不可达路径、复杂数据结构和指针别名等问题,适用范围更加广泛。当前,动态挖 掘方法主要有两阶段步骤:第一阶段采用插粧技术对目标应用程序进行插粧,然后通过运 行目标应用程序收集表征程序执行轨迹的函数调用信息,并将函数调用信息存储在轨迹文 件中;第二阶段将轨迹文件作为输入,采用序列化数据挖掘方法提取组件协议。 然而采用上述动态挖掘方法,在与一个组件相关的函数调用信息数量过少时,易 导致过拟合问题,即获得的组件协议缺乏准确性和完备性,而要获得足够的函数调用信息, 需要耗费大量的人力来运行程序和收集函数调用信息;且采用中间文件作为函数调用信息 的存储方式,需要导出文件后,再统一进行组件挖掘,限制了组件协议的挖掘效率。 可见,现有的组件协议挖掘方法存在人力耗费大和挖掘效率低的技术问题。
技术实现思路
本专利技术提供一种组件协议挖掘方法、装置及系统,用以解决现有技术中的组件协 议挖掘方法存在的人力耗费大和挖掘效率低的技术问题。 第一方面,提供一种组件协议挖掘方法,所述方法应用于服务器中,所述服务器与 N个客户端连接,N为大于1的整数,所述方法包括: 发送开始插粧指令至所述N个客户端,所述开始插粧指令中携带有需要挖掘的类 的M个函数的函数标识,M为大于1的整数; 接收所述N个客户端发送的所述M个函数的函数调用信息;所述函数调用信息是 所述N个客户端基于所述开始插粧指令收集的信息; 根据所述函数调用信息更新所述服务器中存储的所述类的组件协议。 可选的,所述根据所述函数调用信息更新所述服务器中存储的所述类的组件协议 之后,还包括: 当符合预设条件时,发送停止插粧指令至所述N个客户端,所述停止插粧指令中 携带有所述函数标识,以使所述N个客户端基于所述停止插粧指令停止收集所述M个函数 的函数调用信息。 可选的,所述预设条件具体为: 所述组件协议中包括的函数数量大于等于第一阈值;所述第一阈值大于等于所述 类的公有函数的数量,和/或 连续发生第一事件的次数大于等于第二阈值;所述第一事件为更新所述组件协 议,且所述组件协议没有变化。 第二方面,提供一种组件协议挖掘方法,所述方法应用于客户端中,所述客户端与 服务器连接,所述方法包括: 接收所述服务器发送的开始插粧指令,所述开始插粧指令中携带有需要挖掘的类 的M个函数的函数标识,M为大于1的整数; 从所述M个函数中确定出L个函数;M彡L彡1 ; 在所述客户端上运行目标应用程序时,对所述目标应用程序的所述L个函数进行 插粧,以收集所述L个函数的函数调用信息; 发送所述函数调用信息至所述服务器,以使所述服务器根据所述函数调用信息更 新所述服务器中存储的所述类的组件协议。 可选的,所述从所述M个函数中确定出L个函数,具体为: 获取所述目标应用程序的实时性要求参数;所述实时性要求参数的数值与所述目 标应用程序要求的响应速度呈正比; 根据所述实时性要求参数从所述M个函数中确定出L个函数,以使L与所述实时 性要求参数的数值呈反比。 可选的,所述发送所述函数调用信息至所述服务器之后,还包括: 接收所述服务器发送的停止插粧指令,所述停止插粧指令中携带有所述函数标 识; 基于所述停止插粧指令停止收集所述L个函数的函数调用信息。 第三方面,提供一种组件协议挖掘系统,所述系统包括服务器和与所述服务器连 接的N个客户端,N为大于1的整数; 其中,所述服务器用于发送开始插粧指令至所述N个客户端,所述开始插粧指令 中携带有需要挖掘的类的M个函数的函数标识,M为大于1的整数; 所述N个客户端用于接收所述开始插粧指令;以及从所述M个函数中确定出L个 函数;M多L多1 ;以及在所述客户端上运行目标应用程序时,对所述目标应用程序的所述 L个函数进行插粧,以收集所述L个函数的函数调用信息;以及发送所述函数调用信息至所 述服务器; 所述服务器还用于,接收所述N个客户端发送的所述函数调用信息;并根据所述 函数调用信息更新所述服务器中存储的所述类的组件协议。 第四方面,提供一种组件协议挖掘装置,具体为服务器,所述服务器与N个客户端 连接,N为大于1的整数,所述装置包括: 第一发送单元,用于发送开始插粧指令至所述N个客户端,所述开始插粧指令中 携带有需要挖掘的类的M个函数的函数标识,M为大于1的整数; 第一接收单元,用于接收所述N个客户端发送的所述M个函数的函数调用信息;所 述函数调用信息是所述N个客户端基于所述开始插粧指令收集的信息; 更新单元,用于根据所述函数调用信息更新所述服务器中存储的所述类的组件协 议。 第五方面,提供一种组件协议挖掘装置,具体为客户端,所述客户端与服务器连 接,所述装置包括: 第二接收单元,用于接收所述服务器发送的开始插粧指令,所述开始插粧指令中 携带有需要挖掘的类的M个函数的函数标识,M为大于1的整数; 确定单元,用于从所述M个函数中确定出L个函数;M彡L彡1 ; 插粧单元,用于在所述客户端上运行目标应用程序时,对所述目标应用程序的所 述L个函数进行插粧,以收集所述L个函数的函数调用信息; 第二发送单元,用于发送所述函数调用信息至所述服务器,以使所述服务器根据 所述函数调用信息更新所述服务器中存储的所述类的组件协议。 本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点: 1、本申请实施例提供的组件协议挖掘方法、装置及系统,通过组网结构,服务器能 同时从多个客户端获取大量的函数调用信息,从而获取更丰富和完善的程序执行轨迹,不 需要耗费大量的人力就提高了组件挖掘的准确性和完备性,降低了数据获取成本。 2、本申请实施例提供的组件协议挖掘方法、装置及系统,无需进行中间文件的存 储,具有较小的存储空间开销,由服务器在每次接收到一个函数调用信息后,就对已有的组 件协议进行实时更新,即组件协议的挖掘与函数调用信息的获取并发进行,提高了组件协 议挖掘的效率。 3、本申请实施例提供的组件协议挖掘方法、装置及系统,从多个客户端获取函数 调用信息,即不用对一个客户端的一个程序进行大量插粧来获取足够的函数调用信息,采 用根据应用程序的实时性本文档来自技高网
...
一种组件协议挖掘方法、装置及系统

【技术保护点】
一种组件协议挖掘方法,其特征在于,所述方法应用于服务器中,所述服务器与N个客户端连接,N为大于1的整数,所述方法包括:发送开始插桩指令至所述N个客户端,所述开始插桩指令中携带有需要挖掘的类的M个函数的函数标识,M为大于1的整数;接收所述N个客户端发送的所述M个函数的函数调用信息;所述函数调用信息是所述N个客户端基于所述开始插桩指令收集的信息;根据所述函数调用信息更新所述服务器中存储的所述类的组件协议。

【技术特征摘要】

【专利技术属性】
技术研发人员:陈灯魏巍张彦铎李迅于宝成鲁统伟闵峰周华兵朱锐彭丽
申请(专利权)人:武汉工程大学
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1