软件界面特征提取方法、装置及电子设备与流程

文档序号:17719510发布日期:2019-05-22 02:03阅读:224来源:国知局
软件界面特征提取方法、装置及电子设备与流程

本发明涉及软件代码复用技术领域,尤其是涉及一种软件界面特征提取方法、装置及电子设备。



背景技术:

随着软件数量快速增长,对软件开发的需求也快速增加,软件开发人员如何节省时间,从现有的软件代码中快速找到能进行复用的代码有很大的难度。目前,已经有相应的软件界面复用技术,可以通过提取软件界面的代码的结构性特征来表示软件的界面,从而达到检索软件界面代码,进而复用界面代码。

然而,现有的软件界面代码特征提取方法没有考虑界面代码能可视化的特殊性,造成了提取的界面代码特征不能很好的表示软件的界面,从而导致软件复用时检索软件界面的准确度偏低。



技术实现要素:

有鉴于此,本发明实施例的目的在于提供一种软件界面特征提取方法、装置及电子设备,从而提高了软件界面复用时检索代码的准确度。

第一方面,本发明实施例提供了一种软件界面特征提取方法,包括:

获取软件界面的代码,基于所述软件界面的代码创建软件界面代码树,并提取所述软件界面代码树中各个节点的属性信息,所述软件界面代码树中的叶子节点表示界面可见元素;非叶子节点表示界面不可见元素;

提取所述软件界面代码树中的路径,根据所述节点的属性信息,对所述路径中的各个节点设置相应的权重值;

将每条路径的信息与该路径中各个节点的权重值关联存储,得到所述软件界面的路径组成集合;

将所述软件界面的路径组成集合作为所述软件界面的特征。

结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,基于所述软件界面的代码创建软件界面代码树的步骤,包括:

遍历软件界面的代码;

提取所述软件界面的代码中界面组成元素的代码;

根据所述界面组成元素的代码创建软件界面代码树。

结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述权重值包括节点自身的权重值、叶子节点属性的权重值以及所述节点所属的路径对应的权重值。

结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,对所述路径中的各个节点设置相应的权重值的步骤,包括:

对所述路径中的各个节点设置所述节点自身的权重值;

根据所述节点在所述软件界面的代码中出现的顺序,设置所述节点所在的路径对应的权重值;

判断所述节点是否为叶子节点,如果是,则对所述节点设置叶子节点属性的权重值。

结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,还包括:

基于获取的所述软件界面的特征,检索目标界面;

获取所述目标界面的代码。

第二方面,本发明实施例还提供一种软件界面特征提取装置,包括:

代码树创建模块,用于获取软件界面的代码,基于所述软件界面的代码创建软件界面代码树,并提取所述软件界面代码树中各个节点的属性信息,所述软件界面代码树中的叶子节点表示界面可见元素;非叶子节点表示界面不可见元素;

权重设置模块,用于提取所述软件界面代码树中的路径,根据所述节点的属性信息,对所述路径中的各个节点设置相应的权重值;

路径信息存储模块,用于将每条路径的信息与该路径中各个节点的权重值关联存储,得到所述软件界面的路径组成集合;

界面特征显示模块,用于将所述软件界面的路径组成集合作为所述软件界面的特征。

结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述权重值包括节点自身的权重值、叶子节点属性的权重值以及所述节点所属的路径对应的权重值。

结合第二方面的第一种可能的实施方式,本发明实施例提供了第二方面的第二种可能的实施方式,其中,权重设置模块还用于:

对所述路径中的各个节点设置所述节点自身的权重值;

根据所述节点在所述软件界面的代码中出现的顺序,设置所述节点所在的路径对应的权重值;

判断所述节点是否为叶子节点,如果是,则对所述节点设置叶子节点属性的权重值。

第三方面,本发明实施例还提供一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面及其任一种可能的实施方式所述的方法。

第四方面,本发明实施例还提供一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述程序被处理器执行时实现上述第一方面及其任一种可能的实施方式所述的方法。

本发明实施例带来了以下有益效果:

在本发明实施例中,该软件界面特征提取方法通过提取界面代码的结构路径,并对路径中的各个节点设置相应的权重值,然后将界面代码的结构路径及其节点属性作为界面特征来表示界面,这样在提取界面特征时既能考虑到界面的结构又能通过节点属性顾及到界面的可视化效果,从而提高了软件复用时检索软件界面的准确度。

本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书及附图中所特别指出的结构来实现和获得。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种软件界面特征提取方法的流程示意图;

图2为本发明实施例提供的软件界面代码图像示意图;

图3为本发明实施例提供的软件界面代码树示意图;

图4为本发明实施例提供的一种软件界面特征提取装置的结构示意图;

图5为本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

目前,现有的软件界面代码特征提取方法没有考虑界面代码能可视化的特殊性,造成了提取的界面代码特征不能很好的表示软件的界面,从而导致软件复用时检索软件界面的准确度偏低。基于此,本发明实施例提供了一种软件界面特征提取方法、装置及电子设备,可以提高软件复用时检索软件界面的准确度。

为便于对本实施例进行理解,首先对本发明实施例所公开的一种软件界面特征提取方法进行详细介绍。

实施例一:

图1示出了一种软件界面特征提取方法,该方法应用于软件界面特征的提取过程中,可以通过相关的处理器实现。如图1所示,该方法包括步骤s1-s4,具体如下:

步骤s1,获取软件界面的代码,基于该软件界面的代码创建软件界面代码树,并提取软件界面代码树中各个节点的属性信息,该软件界面代码树中的叶子节点表示界面可见元素;非叶子节点表示界面不可见元素。

步骤s2,提取软件界面代码树中的路径,根据节点的属性信息,对该路径中的各个节点设置相应的权重值。

步骤s3,将每条路径的信息与该路径中各个节点的权重值关联存储,得到软件界面的路径组成集合。

步骤s4,将软件界面的路径组成集合作为软件界面的特征。

在本发明实施例中,该软件界面特征提取方法通过提取界面代码的结构路径,并对路径中的各个节点设置相应的权重值,然后将界面代码的结构路径及其节点属性作为界面特征来表示界面,这样在提取界面特征时既能考虑到界面的结构又能通过节点属性顾及到界面的可视化效果,从而提高了软件复用时检索软件界面的准确度。

在可能的实施例中,上述步骤s1包括:遍历软件界面的代码,提取该软件界面的代码中界面组成元素的代码,根据界面组成元素的代码创建软件界面代码树。

具体的,以图2为例,从软件界面的相关代码中提取相关界面组成元素的代码,最后形成图3所示的软件界面代码树。其中,界面组成元素可以是各种控件元素,包括界面可见元素和界面不可见元素;具体的,例如非叶子节点为界面不可见元素,其主要作用为划分界面层次结构;叶子节点为界面可见元素。需要说明的是,上述界面组成元素的代码表征各种控件元素的类型及其属性信息。

为了更好的体现可视化效果,上述为各个节点设置的权重值由该节点自身的权重值、叶子节点属性的权重值以及节点所属的路径对应的权重值三部分组成。

在具体实现时,利用各个节点的属性信息设置节点的权重值,该属性信息可以但不限于包括:非叶子节点的划分方向属性和子节点个数、叶子节点的类型属性和面积属性。

其中,叶子节点的面积属性直接决定了代码在可视化之后,用户看到该节点的视觉面积,面积属性越大,对用户的视觉影响越大。在对代码进行检索时,该特征会影响匹配的精度。

进一步的,根据上述路径中的各个节点设置相应的权重值包括:对路径中的各个节点设置节点自身的权重值;根据节点在软件界面的代码中出现的顺序,设置节点所在的路径对应的权重值;判断该节点是否为叶子节点,如果是,则对该节点设置叶子节点属性的权重值。

为了便于对权重值的理解,下面对上述权重值进行详细描述:

(1)对于节点自身的权重值:设定所有非叶子节点自身的权重值相等,所有叶子节点自身的权重值相等。在可能的实施例中,二者权重值之比设为γ,可以通过实验或者学习样本得到。

进一步的,叶子节点自身的权重值代表了界面可视化之后的节点效果,非叶子节点自身的权重值代表了界面元素布局的结构性,因此,比值γ影响了在最终代码检索时,用户更在意界面代码的视觉效果,还是更在意代码的结构特性。

(2)对于叶子节点属性的权重值:叶子节点属性的权重值由类型属性的权重值和面积属性的权重值两部分组成,例如二者权重值之比设为ω,其值由人工设定,可以通过实验得到。

进一步的,比值ω为叶子节点的类型属性与面积属性对两个界面的相似性判定的影响的一个比例。由于叶子节点的类型属性与面积属性对用户在判定两个界面是否相似时都有影响,因此,可以通过人机实验的方法测定这两个节点属性对界面相似与否的一个影响比例。

(3)对于节点所属的路径对应的权重:其权重值由路径顺序依次标记。

具体的,由于代码是按照从上到下的顺序依次编写的,因此,该路径顺序按照代码中节点出现的先后顺序依次标记,如首先出现的标记为路径1,第二个出现的标记为路径2,其相应的权重值,根据顺序编号依次递减,递减比例与路径数量相关。

例如,对于某一路径:a节点→b节点→c节点→d节点,其中d节点为叶子节点。(1)对上述路径中各个节点设置节点自身的权重值,对应于上述路径中的abcd四个节点依次为a、b、c、d;因此应用到路径之后得到:a(a)b(b)c(c)d(d);(2)由于仅有d节点为叶子节点,因此仅需要对d节点设置叶子节点属性的权重值,例如可以表示为d+;因此应用到路径之后得到:a(a)b(b)c(c)d((d),d+);(3)对于该路径设置权重值,例如可以是w;因此应用到路径之后得到:(a(a)b(b)c(c)d((d),d+))(w)。

需要说明的是,上述该节点自身的权重值、叶子节点属性的权重值以及节点所属的路径对应的权重值的设置顺序不作限定,可以以任意顺序依次设置,也可以并行设置。

在具体实现时,上述路径的信息和对应的权重值的存储方式不作限定,可以一并存储,或者是分开存储。例如每条路径的信息存储在一个数据表中,该路径中各个节点的权重值存储在另一个数据表中,通过编号将这两个数据表映射起来,从而每条路径的信息与该路径中各个节点的权重值关联。

在对每条路径的信息与该路径中各个节点的权重值存储之后,得到软件界面的路径组成集合。仍以图3为例,按照从软件界面代码树的根节点到叶子节点的顺序,最终可得到软件界面的路径组成集合为p{{rlt},{rllt},{rllr},{rllt},{rllr},{ri}}。其中,r为根节点;r和l都表示非叶子节点,非叶子节点的属性值为二元组v(orientation,children),orientation表示非叶子节点的划分方向,children为非叶子节点的子节点个数;t、r、i都为叶子节点,只是表示不同的类型,叶子节点的属性值也为一个二元组v(type,size),type表示叶子节点的类型,size表示叶子节点可视化之后在界面中的视觉大小。

上述获取软件界面特征的方法,能有效的解决传统方法中代码结构不同但是界面可视化效果表现相似,以及代码结构相同但是代码的可视化表现不同的问题,进而有效提高软件复用时检索软件界面的精度。

在获得软件界面的特征之后,可以基于获取的软件界面的特征,检索目标界面;获取目标界面的代码。

具体的,在检索目标界面过程中,可以在网上共享软件仓库里面直接检索,如github这种大型的网上共享代码仓库,可以直接访问该代码仓库中的源码;此外,一般界面代码文件都是分类放在软件打包的指定位置,可以通过一定的关键字直接搜到这些代码的位置;用户检索端也可以通过已有的界面截图、界面原型设计工具或者草图方式得到一个大概的界面样图,能通过图像识别技术把该样图生成伪代码,从而形成当前待检索的查询代码树。

通过上述实施例,可以直接根据软件界面的特征检索到目标界面的代码,提高了检索精度,能够快速找到可以复用的代码,进而复用界面代码。

实施例二:

对应于上述实施例中的一种软件界面特征提取方法,本发明实施例还提供了一种软件界面特征提取装置,参见图4,该装置包括:

代码树创建模块11,用于获取软件界面的代码,基于该软件界面的代码创建软件界面代码树,并提取软件界面代码树中各个节点的属性信息,该软件界面代码树中的叶子节点表示界面可见元素;非叶子节点表示界面不可见元素;

权重设置模块12,用于提取软件界面代码树中的路径,根据节点的属性信息,对该路径中的各个节点设置相应的权重值;

路径信息存储模块13,用于将每条路径的信息与该路径中各个节点的权重值关联存储,得到软件界面的路径组成集合;

界面特征显示模块14,用于将软件界面的路径组成集合作为软件界面的特征。

进一步的,上述权重值包括节点自身的权重值、叶子节点属性的权重值以及节点所属的路径对应的权重值。

进一步的,上述权重设置模块还用于:对路径中的各个节点设置该节点自身的权重值;根据节点在软件界面的代码中出现的顺序,设置节点所在的路径对应的权重值;判断该节点是否为叶子节点,如果是,则对该节点设置叶子节点属性的权重值。

在本发明实施例中,通过提取界面代码的结构路径,并对路径中的各个节点设置相应的权重值,然后将界面代码的结构路径及其节点属性作为界面特征来表示界面,这样在提取界面特征时既能考虑到界面的结构又能通过节点属性顾及到界面的可视化效果,从而提高了软件复用时检索软件界面的准确度。

实施例三:

参见图5,本发明实施例还提供一种电子设备100,包括:处理器40,存储器41,总线42和通信接口43,所述处理器40、通信接口43和存储器41通过总线42连接;处理器40用于执行存储器41中存储的可执行模块,例如计算机程序。

其中,存储器41可能包含高速随机存取存储器(ram,randomaccessmemory),也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口43(可以是有线或者无线)实现该系统网元与至少一个其他网元之间的通信连接,可以使用互联网,广域网,本地网,城域网等。

总线42可以是isa总线、pci总线或eisa总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

其中,存储器41用于存储程序,所述处理器40在接收到执行指令后,执行所述程序,前述本发明实施例任一实施例揭示的流过程定义的装置所执行的方法可以应用于处理器40中,或者由处理器40实现。

处理器40可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器40中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器40可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现成可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器41,处理器40读取存储器41中的信息,结合其硬件完成上述方法的步骤。

本发明实施例提供的界面特征提取装置及电子设备,与上述实施例提供的界面特征提取方法具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。

本发明实施例所提供的进行界面特征提取方法的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置及电子设备的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

附图中的流程图和框图显示了根据本发明的多个实施例方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1