Processing

Please wait...

Settings

Settings

Goto Application

1. CN109522192 - A forecasting method based on knowledge map and complex network combination

Note: Text based on automatic Optical Character Recognition processes. Please use the PDF version for legal matters

[ ZH ]
一种基于知识图谱和复杂网络组合的预测方法


技术领域
本发明提供了一种基于知识图谱和复杂网络组合的预测方法,属于软件预测领域。
背景技术
随着科技的发展,软件的使用愈加频繁,对软件预测的准确度以及效率均提出了更高的要求。通常,人们对软件故障的预测方法在于,通过分析软件代码或开发过程,筛选出与软件故障相关的度量元,随后通过挖掘软件历史仓库来创建故障预测数据集,构建出故障预测模型以预测出被测软件的潜在故障数目以及故障发生所对应的大致程序位置。
然而该种方法所建立的模型通常只能预测软件的故障数目以及故障所对应的代码程序的粗略位置,对于更加详细的故障类目,在所对应的代码程序模块中没有较多体现。在故障发生时,相关技术人员不能准确和充足的对代码层进行改进,从而不能有效的规避代码网络风险。基于现有技术存在的故障,本发明提出了一种基于知识图谱和复杂网络组合的预测方法,能够有效的标识各个故障类目所对应的代码网络,进而对未知版本软件的代码网络风险进行预测。
发明内容
(一)目的
(二)技术方案
本发明一种基于知识图谱和复杂网络组合的预测方法,如图1所示,其实施步骤如下:
步骤1:获取多个不同类型的软件故障案例;
步骤2:提取所述软件故障案例中的多个故障现象以及故障原因并进行聚类分析;
步骤3:提取每一现象聚类及原因聚类的关键词作为每一类的聚类标签,生成知识图谱;
步骤4:将所述每一类的聚类标签分别对应到软件的各个功能模块;
步骤5:获取所述软件产品的各个功能模块与所述软件代码之间的映射关系;
步骤6:以所述软件代码中的函数为节点,函数间的调用关系为边,建立代码网络;
步骤7:基于所构建的知识图谱,分别将每一版本软件中聚类标签所对应到的功能模块映射到各个版本下的代码网络中,在相应的代码部分作出标记;
步骤8:基于所述历史版本下的代码网络中标记的位置,预测未知版本软件的代码网络风险的位置所在;
通过以上步骤,可以实现采用聚类的方法将多个故障案例中的故障现象及原因分类,并构建知识图谱,基于知识图谱将每个版本的被测软件的代码网络进行标记,通过多个历史版本软件中的标记位置预测未知版本软件的代码风险的位置所在,这样能够实现有效的将具体的软件故障对应标识到代码网络中,进而对未知版本的软件代码网络进行风险预测,进而实施有效的规避风险的措施。
其中,在步骤1中所述的“获取多个不同类型的软件故障案例”,其具体做法如下:所述软件故障案例类型至少包括:容错和防错、接口、中断和现场保护,时序和时限、运行环境、计算和方法、初始化和复位、编程和语言使用和需求管理与配置管理;所述软件故障案例形如:关键指令未作冗余位定义导致功能失效。
其中,在步骤2中所述的“提取所述软件故障案例中的多个故障现象以及故障原因并进行聚类分析”,其具体做法如下:采用聚类分析的方法将未经分类的软件故障案例按照相似度进行归类,把具有相似属性和特征的对象归于一类,类的大小与类与类之间的距离均揭示案例间的信息;所述获取的软件的故障案例将所述软件故障案例类型分为以下至少9种:容错和防错、接口、中断和现场保护,时序和时限、运行环境、计算和方法、初始化和复位、编程和语言使用和需求管理与配置管理;提取所述软件的多种故障现象以及故障原因如下:例如容错和防错类型中:容错方法使用不恰当导致软件的可靠性降低、未作超时处理进入死循环;例如接口类型中:超时处理导致状态采集失控、指令格式定义不统一导致死机;例如中断和现场保护类型中:中断管理不当导致程序跑飞、中断向量初始化不完整导致误触发定时器中断;例如时序和时限类型中:数据流与数据不同步导致数据丢失、无限循环的等待导致死机;例如在运行环境类型中:定时器使用不当导致指令丢失、操作系统使用手册有缺陷导致指令丢失;例如在计算和方法类型中:计数错误导致有效数据变无效、错用变量名导致计算错误;例如在初始化和复位类型中:变量初始化不完整导致系统失控、初值选择不当导致功能无法实现;例如在编程和语言使用类型中:相似变量名导致软件失控、外部函数未作说明导致系统状态混乱;例如在需求管理和配置管理类型中:设计未随需求修改导致编程错误、多余指令未及时删除导致提前进行地形匹配;所述聚类分析将所述故障案例中提取出的故障现象以及故障原因分别归类为多个现象聚类以及多个原因聚类。
其中,在步骤3中所述的“提取每一现象聚类及原因聚类的关键词作为每一类的聚类标签,生成知识图谱”,其具体做法如下:所述知识图谱由现象聚类以及原因聚类作为节点,由现象聚类以及原因聚类之间的关系作为边构建一个数据结构的知识图谱,通过将所提取的故障现象以及故障原因进行手工清洗,基于清洗后的数据集进行频数统计,使用构建工具分别构建高频词、故障原因和故障现象的共现矩阵,将复杂的语句或说明在矩阵和绘制的部分图谱中用序号表示;所述聚类标签可以为高频词或关键词,在所述的多个软件故障案例中,将“计算错误”作为其中一个原因聚类标签,将“程序无法继续执行”作为其中一个现象聚类标签。
其中,在步骤4中所述的“将所述每一类的聚类标签分别对应到软件的各个功能模块”,其具体做法如下:将实际系统中的所有原子功能,也即是不可以再分为两个或两个以上的功能划分为不同的功能模块,所述软件的功能模块表示软件的各个部分能够实现的功能;所述将聚类标签分别对应到软件的功能模块中,也即是根据所述软件故障案例中故障现象和原因,分析并找出软件的具体功能模块。
其中,在步骤5中所述的“获取所述软件产品的各个功能模块与所述软件代码之间的映射关系”,其具体做法如下:获取所述软件的源代码以及所能实现的功能场景;为每个功能设计使用场景用于触发该功能所表现出来的输入序列;对源代码进行插装并重新编译插装后的源代码,得到可执行目标码;执行每一个场景,同时被插装的代码记录触发每个功能所依赖的代码实体,从而获得功能和代码间的映射关系。
其中,在步骤6中所述的“以所述软件代码中的函数为节点,函数间的调用关系为边,建立代码网络”,其具体做法如下:首先确定代码网络的功能体系,应用软件工程进行整体设计,然后将软件代码中的各个函数作为网络的节点,各个函数之间的调用关系作为网络的边,建立代码网络,对所构造的代码网络进行包括度分布、聚集系数和最短路径的特性分析。
其中,在步骤7中所述的“基于所构建的知识图谱,分别将每一版本软件中聚类标签所对应到的功能模块映射到各个版本下的代码网络中,在相应的代码部分作出标记”,其具体步骤如下:所构建的知识图谱包含了所述获取的多个软件故障案例的故障信息,将所述知识图谱的聚类标签对应到功能模块,分别将所对应到的功能模块映射到各个软件版本下的代码网络中,在相应的代码部分作出标记,则能清楚观察到各个版本的软件中的代码可能存在风险的位置,所述各个版本为软件的历史版本。
其中,在步骤8中所述的“基于所述历史版本下的代码网络中标记的位置,预测未知版本的软件的代码网络风险的位置所在”,其具体做法如下:将被标记的所述软件的各个版本的代码网络排列开来,基于所述各个版本的代码网络中的标记位置,预测未知版本的软件的代码网络风险的位置;或,基于任意能进行相似度分析的工具,对所述被标记的各个版本软件的代码网络进行相似度分析,根据相似度分析结果预测未知版本的代码网络风险。
(三)优点及功效
通过以上步骤,能够实现采用聚类的方法将多个故障案例中的故障现象及原因分类,并构建知识图谱,基于知识图谱将每个版本的被测软件的功能网络以及函数网络进行标记,通过多个历史版本软件中的标记位置预测未知版本软件的代码风险的位置所在,这样能够实现有效的将具体的软件故障对应标识到代码网络中,进而对未知版本软件的代码网络进行风险预测,进而实施有效的规避风险的措施。
附图说明
图1是本发明实施例提供的一种方法的流程图。
图2是本发明实施例提供的一种方法的示意图。
图3是本发明实施例提供的一种方法的又一示意图。
具体实施方式
下面将结合所述附图1-3对本发明实施例进行具体说明。
本发明一种基于知识图谱和复杂网络组合的预测方法,如图1所示,其实施步骤如下:
101、获取多个不同类型的软件故障案例。
其中,所述软件故障案例类型至少包括:容错和防错、接口、中断和现场保护,时序和时限、运行环境、计算和算法、初始化和复位、编程和语言使用和需求管理与配置管理。所述软件故障案例形如:关键指令未作冗余位定义导致功能失效。收集到的每个缺陷案例的发生原因、现象以及对软件系统的影响,甚至于包括缺陷发生的时间,都作为一条条的知识汇集起来构成故障的知识库,然后基于应用数学、图形学以及信息科学理论、计量学分析以及共现分析等方法去描述软件故障间的强联系,并利用可视化的图谱形象地展示故障之间的关系以及故障的演化规律。
102、提取所述软件故障案例中的多个故障现象以及故障原因并进行聚类分析。
其中,所述采用聚类分析的方法具体为:将未经分类的软件故障案例按照相似度进行归类,把具有相似属性和特征的对象归于一类,类的大小与类与类之间的距离均揭示案例间的信息。在另一种实施方式中,所述聚类分析方法可以包括:最大期望聚类、二阶聚类、K-均值聚类和系统聚类等。所述获取的软件的故障案例将所述软件故障案例类型分为以下至少9种:容错和防错、接口、中断和现场保护,时序和时限、运行环境、计算和算法、初始化和复位、编程和语言使用和需求管理与配置管理。提取所述软件的多种故障现象以及故障原因如下:例如容错和防错类型中:容错方法使用不恰当导致软件的可靠性降低、未作超时处理进入死循环;例如接口类型中:超时处理导致状态采集失控、指令格式定义不统一导致死机;例如中断和现场保护类型中:中断管理不当导致程序跑飞、中断向量初始化不完整导致误触发定时器中断;例如时序和时限类型中:数据流与数据不同步导致数据丢失、无线循环的等待导致死机;例如:在运行环境类型中,定时器使用不当导致指令丢失、操作系统使用手册有缺陷导致指令丢失;例如在计算和算法类型中:计数错误导致有效数据变无效、错用变量名导致计算错误;例如在初始化和复位类型中:变量初始化不完整导致系统失控、初值选择不当导致功能无法实现;例如在编程和语言使用类型中:相似变量名导致软件失控、外部函数未作说明导致系统状态混乱;例如在需求管理和配置管理类型中:设计未随需求修改导致编程错误、多余指令未及时删除导致提前进行地形匹配。所述聚类分析将所述故障案例中提取出的故障现象以及故障原因分别归类为多个现象聚类以及多个原因聚类。
103、提取每一现象聚类及原因聚类的关键词作为每一类的聚类标签,生成知识图谱。
其中,所述知识图谱由现象聚类以及原因聚类作为节点,由现象聚类以及原因聚类之间的关系作为边构建一个数据结构的知识图谱,通过将所提取的故障现象以及故障原因进行手工清洗,其中,手工清洗规则包括:同义词合并,单复数、大小写合并,去除特殊符号等。基于清洗后的数据集进行频数统计,使用构建工具分别构建高频词、故障原因和故障现象的共现矩阵,将复杂的语句或说明在矩阵和绘制的部分图谱中用序号表示。具体如图3所示,所述聚类标签可以为高频词或关键词,在所述的多个软件故障案例中,将“计算错误”作为其中一个原因聚类标签,将“程序无法继续执行”作为其中一个现象聚类标签。
104、将所述每一类的聚类标签分别对应到软件的各个功能模块。
其中所述功能模块的构建方法如下:将实际系统中的所有原子功能,也即是不可以再分为两个或两个以上的功能划分为不同的功能模块。所述软件的功能模块表示软件的各个部分能够实现的功能;所述将聚类标签分别对应到软件的功能模块中,也即是根据所述软件故障案例中故障现象和原因,分析并找出软件的具体功能模块。
105、获取所述软件产品的各个功能模块与所述软件代码之间的映射关系。
其中,所述获取映射关系的具体步骤可以是:获取所述软件的源代码以及所能实现的功能场景;为每个功能设计使用场景用于触发该功能所表现出来的输入序列;对源代码进行插装并重新编译插装后的源代码,得到可执行目标码;执行每一个场景,同时被插装的代码记录触发每个功能所依赖的代码实体,从而获得功能和代码间的映射关系。
106、以所述软件代码中的函数为节点,函数间的调用关系为边,建立代码网络。
在构建代码网络之前,首先确定代码网络的功能体系,应用软件工程进行整体设计,如图2所示。整体设计之后,将软件代码中的各个函数作为网络的节点,各个函数之间的调用关系作为网络的边,建立代码网络,对所构造的代码网络进行包括度分布、聚集系数和最短路径的特性分析。基于上述度量,可以判定所构建代码网络的性能优劣,进而对代码网络的处理作出下一步判断。
107、基于所构建的知识图谱,分别将每一版本中聚类标签所对应到的功能模块映射到各个版本下的代码网络中,在相应的代码部分作出标记。
所构建的知识图谱包含了所述获取的多个软件故障案例的故障信息,将所述知识图谱的聚类标签对应到功能模块,分别将所对应到的功能模块映射到各个软件版本下的代码网络中,在相应的代码部分作出标记,则能清楚观察到各个版本的软件中的代码可能存在风险的位置,所述各个版本为软件的历史版本。在一种可能的实施方式中,分别运行所述软件的各个历史版本下的软件,观察软件的故障情况,根据所述故障情况对应的故障现象以及故障原因对应到软件的功能模块,将功能模块对应到各个版本的代码网络中,则可以观察各个历史版本的软件的真实故障情况下的代码网络的标记位置,为技术人员进行软件测试提供方便,也为未知版本的软件的代码网络风险的预测提供较为精确的参考数据。
108、基于所述历史版本下的神经网络中标记的位置,预测未知版本软件的代码网络风险的位置所在。
将被标记的所述软件的各个版本的代码网络排列开来,基于所述各个版本的代码网络中的标记位置,预测未知版本的软件的代码网络风险的位置。或基于任意可做相似度分析的工具,对所述被标记的各个版本软件的代码网络进行相似度分析,根据相似度分析结果预测未知版本的代码网络风险。
综上所述,本发明实施例通过采用聚类的方法将多个故障案例中的故障现象及原因分类,并构建知识图谱,基于知识图谱将每个版本的被测软件的代码网络进行标记,通过多个历史版本软件中的标记位置预测未知版本的软件的代码风险的位置所在,这样通过知识图谱与复杂网络的组合,能够实现有效的将具体的软件故障对应标识到代码网络中,进而对未知版本的软件代码网络进行风险预测,进而实施有效的规避风险的措施。
以上所述仅为本发明较佳的实施例,并不用以限制本发明,凡是在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。