一种对象使用场景提取方法及装置的制造方法

文档序号:9349727阅读:390来源:国知局
一种对象使用场景提取方法及装置的制造方法
【技术领域】
[0001] 本发明涉及程序挖掘技术领域,尤其涉及一种对象使用场景提取方法及装置。
【背景技术】
[0002] 软件组件的接口函数之间通常存在着时序约束。使用软件组件时需要遵守的时序 约束构成了该组件的一个协议,即组件协议。这种协议规定了接口函数之间调用的先后顺 序。如下所示,分别展示了类java.util.Stack和java.util.Iteration的一个时序约束:
[0003] 调用Stack类的peekO函数查看栈顶元素之前,应该先调用pushO向栈中插入 一个元素;
[0004] 调用Iteration类的next()函数获取下一个元素之前应该先调用hasNext()函 数查看下一个元素是否存在。
[0005] 这种约束信息可以用于程序说明、程序测试和程序验证等领域。例如:程序违 反上述时序约束(1)时,会导致EmptyStackException异常;违反时序约束(2)会导致 NoSuchElementException 异常。
[0006] 程序组件协议挖掘是自动化的获得组件协议的一种有效方法。其从大量应用程序 使用组件时的函数调用序列中提取公共的序列模式作为组件协议。其一般步骤为:首先从 程序中获取程序执行轨迹,即函数调用序列,然后根据被调函数之间的数据依赖从函数调 用序列中分离出对象使用场景,最后采用序列化数据挖掘方法从对象使用场景中归纳出采 用各种形式描述的组件协议,其中,对象使用场景的具体表现形式为函数调用序列。
[0007] 对象使用场景作为组件协议挖掘器的输入数据,其质量和数量是获取准确而完备 的组件协议的关键因素之一。而当前提取对象使用场景的方法是分析函数调用信息,即程 序执行轨迹,其中基于同一个对象实例被调用的所有函数构成的函数调用序列即一个对象 使用场景,上述对象场景提取方法具有下述特点:(1)对象使用场景的数量与程序运行过 程中覆盖的对象实例的数量相等;(2) -个对象使用场景代表了应用程序对组件的一种使 用方法。通过提取大量对象使用场景中存在的公共序列模式即可获得使用组件应该遵循的 协议。然而,当一个类在应用程序中很少被使用时,会导致对象使用场景数量不足的问题。 更进一步,在时序约束挖掘时可能出现过拟合现象。虽然通过分析多个应用程序可以缓解 该问题,然而其会产生较大的程序运行时间开销。
[0008] 可见,当前进行组件协议挖掘时,存在对象使用场景数量不足的技术问题。

【发明内容】

[0009] 本发明提供一种对象使用场景提取方法及装置,用以解决现有技术中进行组件协 议挖掘时,存在的对象使用场景数量不足的技术问题。
[0010] 第一方面,提供一种对象使用场景提取方法,包括:
[0011] 获取目标类的第一对象使用场景;所述第一对象使用场景为依第一顺序调用的N 个函数的序列,N为大于1的整数;
[0012] 根据所述目标类确定第一父类;所述第一父类为所述目标类的父类;
[0013] 从所述N个函数中确定出L个函数;所述L个函数均为所述第一父类的函数; N^L> 1 ;
[0014] 按照所述第一顺序排列所述L个函数,以生成所述第一父类的第二对象使用场 景;所述第二对象使用场景为所述第一对象使用场景的继承子对象使用场景。
[0015] 可选的,所述根据所述目标类确定第一父类,具体为:
[0016] 根据预先定义的类继承树和所述目标类确定第一父类;所述类继承树中定义了类 之间的继承关系和类包含的函数。
[0017] 可选的,所述第一父类的函数包括:从所述第一父类的父类处继承的函数,和定 义到所述第一父类的函数。
[0018] 可选的,当所述目标类的继承深度为M时,能根据所述第一对象使用场景提取出 的继承子对象使用场景的最大数量为M ;M为正整数。
[0019] 第二方面,提供一种对象使用场景提取装置,包括:
[0020] 获取单元,用于获取目标类的第一对象使用场景;所述第一对象使用场景为依第 一顺序调用的N个函数的序列,N为大于1的整数;
[0021] 第一确定单元,用于根据所述目标类确定第一父类;所述第一父类为所述目标类 的父类;
[0022] 第二确定单元,用于从所述N个函数中确定出L个函数;所述L个函数均为所述第 一父类的函数;N彡L > 1 ;
[0023] 生成单元,用于按照所述第一顺序排列所述L个函数,以生成所述第一父类的第 二对象使用场景;所述第二对象使用场景为所述第一对象使用场景的继承子对象使用场 景。
[0024] 可选的,所述第一确定单元还用于:
[0025] 根据预先定义的类继承树和所述目标类确定第一父类;所述类继承树中定义了类 之间的继承关系和类包含的函数。
[0026] 可选的,所述第一父类的函数包括:从所述第一父类的父类处继承的函数,和定义 到所述第一父类的函数。
[0027] 可选的,当所述目标类的继承深度为M时,能根据所述第一对象使用场景提取出 的继承子对象使用场景的最大数量为M ;M为正整数。
[0028] 本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0029] 本申请实施例提供的对象使用场景提取方法及装置,根据面向对象程序中对象之 间具有的继承关系,能够从目标类的单个对象使用场景,分离出其父类的对象使用场景,且 重复使用所述对象场景提取方法,可以从单个对象使用场景提取出多个对象使用场景的; 即实现了可以通过运行少量应用程序来获得大量的对象使用场景的技术效果,为挖掘准 确而完备的组件协议奠定了数据基础。
【附图说明】
[0030] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述 中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实 施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图 获得其他的附图。
[0031] 图1为本发明实施例中对象使用场景提取方法的步骤图;
[0032] 图2为本发明实施例一中对象使用场景提取的示例图;
[0033] 图3为本发明实施例中对象使用场景提取装置的结构图。
【具体实施方式】
[0034] 本申请实施例通过提供一种对象使用场景提取方法及装置,用以解决现有技术中 进行组件协议挖掘时,存在的对象使用场景数量不足的技术问题。实现了可以通过运行少 量应用程序来获得大量的对象使用场景的技术效果。
[0035] 为解决上述技术问题,本申请实施例提供技术方案的总体思路如下:
[0036] 本申请提供一种对象使用场景提取方法,包括:
[0037] 获取目标类的第一对象使用场景;所述第一对象使用场景为依第一顺序调用的N 个函数的序列,N为大于1的整数;
[0038] 根据所述目标类确定第一父类;所述第一父类为所述目标类的父类;
[0039] 从所述N个函数中确定出L个函数;所述L个函数均为所述第一父类的函数; N ^ L > 1 ;
[0040] 按照所述第一顺序排列所述L个函数,以生成所述第一父类的第二对象使用场 景;所述第二对象使用场景为所述第一对象使用场景的继承子对象使用场景。
[0041] 通过上述内容可以看出,本申请实施例提供的对象使用场景提取方法及装置,根 据面向对象程序中对象之间具有的继承关系,能够从目标类的单个对象使用场景的,分离 出其父类的对象使用场景,而重复使用所述对象场景提取方法,可以从单个对象使用场景 提取出多个对象使用场景;即实现了可以通过运行少量应用程序来获得大量的对象使用场 景的技术效果,为挖掘准确而完备的组件协议奠定了数据基础。
[0042] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0043] 实施例一
[0044] 本实施例提供一种对象使用场景提取方法,请参考图1,图1为本实施例提供的对 象使用场景提取方法的步骤图,如图1所示,所述方法包括:
[0045] 步骤S101,获取目标类的第一对象使用场景;所述第一对象使用场景为依第一顺 序调用的N个函数的序列,N为大于1的整数;
[0046] 步骤S102,根据所述目标类确定第一父类;所述第一父类为所述目标类的父类;
[0047] 步骤S103,从所述
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1