CN105389194A - 一种确定应用程序计算逻辑的方法及装置 - Google Patents
一种确定应用程序计算逻辑的方法及装置 Download PDFInfo
- Publication number
- CN105389194A CN105389194A CN201510681039.9A CN201510681039A CN105389194A CN 105389194 A CN105389194 A CN 105389194A CN 201510681039 A CN201510681039 A CN 201510681039A CN 105389194 A CN105389194 A CN 105389194A
- Authority
- CN
- China
- Prior art keywords
- application program
- group
- applications
- flow diagram
- data flow
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
Abstract
本发明实施例公开了一种确定应用程序计算逻辑的方法及装置,涉及计算机技术领域,实现了一组应用程序的自动分析,提高了对应用程序进行分析的效率,并且扩大了设计得到的体系结构的适用范围。具体方案为:获取一组应用程序中每个应用程序的数据流图;通过分析每个应用程序的数据流图,得到至少一个第一公共频繁子图;根据第一公共频繁子图和每个应用程序的数据流图,计算每个应用程序的流图相似度;根据每个应用程序的流图相似度,得到对一组应用程序中的应用程序的分组结果,分组结果包括至少一个子应用组;根据子应用组中应用程序的数据流图,确定子应用组中应用程序的计算逻辑。本发明用于应用程序的体系结构过程中。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种确定应用程序计算逻辑的方法及装置。
背景技术
随着电子信息技术的发展,各类应用程序随之产生,应用程序的体系结构设计对该应用程序的发展至关重要。其中,设计人员在进行应用程序的体系结构设计时,需要充分考虑到该应用程序的计算逻辑,即需要根据该应用程序的计算逻辑进行该应用程序的体系结构设计。其中,应用程序的计算逻辑包括:应用程序的计算结构和算法模式。计算结构用于表征所述应用程序的逻辑计算框架,算法模式用于表征所述逻辑计算框架中每一种计算的算法模式。
现有技术中,可以编译应用程序的源代码,得到该应用程序的数据流图;然后采用人工分析的方式,由设计人员根据其从业经验,对数据流图进行分析,得到该应用程序的计算逻辑。
但是,采用人工分析的方法,对应用程序进行分析的效率较低,而且往往需要依赖于设计人员的主观判断才能够准确确定出应用程序的主要计算逻辑,要求设计人员具备较强的应用程序分析能力,人力成本较高。
并且,现有技术中的应用程序分析往往是针对一个应用程序而言的,即需要分析每一个应用程序得到其计算逻辑,并根据分析得到的计算逻辑设计该应用程序的。这样不仅会导致设计工作量较大,而且设计得到的体系结构也仅适用于该应用程序,体系结构的适用范围较小。
发明内容
本发明的实施例提供一种确定应用程序计算逻辑的方法及装置,实现了一组应用程序的自动分析,提高了对应用程序进行分析的效率;并且可以针对一个子应用组中的所有应用程序确定计算逻辑,从而减少了设计工作量,由于该计算逻辑能够体现出该组应用程序在算法流程上的相似性以及计算结构上的共性,因此采用该计算逻辑设计得到的体系结构则可以适用于该组应用程序中的每一个应用程序,从而扩大了设计得到的体系结构的适用范围。
为达到上述目的,本发明的实施例采用如下技术方案:
本发明实施例的第一方面,提供一种确定应用程序计算逻辑的方法,包括:
获取一组应用程序中每个应用程序的数据流图;
通过分析所述每个应用程序的数据流图,得到至少一个第一公共频繁子图,所述第一公共频繁子图为所述一组应用程序中至少两个应用程序的数据流图的公共部分;
根据所述第一公共频繁子图和所述每个应用程序的数据流图,计算所述每个应用程序的流图相似度,所述流图相似度用于表征所述一组应用程序中的一个应用程序与所述一组应用程序中其他应用程序的相似性;
根据所述每个应用程序的流图相似度,得到对所述一组应用程序中的应用程序的分组结果,所述分组结果包括至少一个子应用组;
根据所述分组结果中任一子应用组中的应用程序的数据流图,确定所述子应用组中应用程序的计算逻辑,所述计算逻辑用于设计所述子应用组中的应用程序的体系结构。
本发明实施例提供的确定应用程序计算逻辑的方法,可以通过分析一组应用程序中的每个应用程序,得到该组应用程序的公共频繁子图(至少一个第一公共频繁子图);由于第一公共频繁子图为该组应用程序中至少两个应用程序的数据流图中的公共部分,因此根据第一公共频繁子图和每个应用程序的数据流图,计算得到的每个应用程序的流图相似度则可以用于表征一组应用程序中每个应用程序与一组应用程序中其他应用程序的相似性;然后根据每个应用程序的流图相似度则可以将该组应用程序中的应用程序划分至不同的子应用组,这样则可以将相似度较高的应用程序划分至同一子应用组,针对各个子应用组,根据其包含的应用程序的数据流图,确定该子应用组中的应用程序的计算逻辑。
通过本方案,不需要采用人工分析的方式对各个应用程序逐个分析,而是根据一组应用程序中各个应用程序与其他应用程序的相似度对应用程序进行分组,然后确定该子应用组中的应用程序的计算逻辑,该计算逻辑是分析一个子应用组中的应用程序得到的,因此采用该计算逻辑设计得到的体系结构则可以适用于该子应用组中的所有应用程序的。
由此可见,本方案实现了一组应用程序的自动分析,提高了对应用程序进行分析的效率;并且可以针对一个子应用组中的所有应用程序确定计算逻辑,从而减少了设计工作量,并扩大了设计得到的体系结构的适用范围。
结合第一方面,在第一种可能的实现方式中,所述根据所述分组结果中任一子应用组中的应用程序的数据流图,确定所述子应用组中应用程序的计算逻辑,包括:
通过分析所述子应用组中应用程序的数据流图,得到至少一个第二公共频繁子图,所述第二公共频繁子图为所述子应用组中至少两个应用程序的数据流图的公共部分;
根据所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑。
在获得分组结果后,可以通过分析子应用组中应用程序的数据流图,得到相较于第一公共频繁子图能够更加突出的体现出该子应用组的公共计算逻辑的至少一个第二公共频繁子图,根据第二公共频繁子图确定出更加适合设计子应用组中的应用程序的体系结构的计算逻辑。
结合第一方面和第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述根据所述第一公共频繁子图和所述每个应用程序的数据流图,计算所述每个应用程序的流图相似度,包括:
确定第一应用程序的匹配顶点个数和所述第一应用程序的数据流图中的顶点个数,所述第一应用程序为所述一组应用程序中的任一个应用程序,所述第一应用程序的匹配顶点个数为所述第一公共频繁子图在所述第一应用程序的数据流图中所匹配的顶点个数之和;
计算所述第一应用程序的匹配顶点个数和所述第一应用程序的数据流图中的顶点个数的比值,所述比值用于表征所述第一应用程序的流图相似度。
结合第一方面和第一方面的第一种可能的实现方式,在第三种可能的实现方式中,所述根据所述每个应用程序的流图相似度,得到对所述一组应用程序中的应用程序的分组结果,包括:
计算所述一组应用程序中任意两个应用程序的流图相似度的平均值,所述任意两个应用程序的流图相似度的平均值用于表征该两个应用程序的相对相似度;
采用1减去所述任意两个应用程序的相对相似度,得到该两个应用程序的差异度;
根据所述一组应用程序中所有应用程序两两之间的差异度,得到对所述一组应用程序中的应用程序的分组结果。
结合第一方面,在第四种可能的实现方式中,在所述根据所述每个应用程序的流图相似度,得到对所述一组应用程序中的应用程序的分组结果之前,所述方法还包括:
根据所述每个应用程序的流图相似度,计算所述一组应用程序的流图相似度的期望值;
根据所述每个应用程序的流图相似度以及所述一组应用程序的流图相似度的期望值,计算所述一组应用程序的流图相似度的方差;
所述根据所述每个应用程序的流图相似度,得到对所述一组应用程序中的应用程序的分组结果,包括:
若所述一组应用程序的流图相似度的方差小于或等于第一预设阈值,则根据所述每个应用程序的流图相似度,得到所述分组结果。
可以想到的是,一组应用程序的流图相似度的方差可以体现出该组应用程序中每个应用程序的流图相似度之间的波动性。如果该组应用程序的流图相似度的方差较小,则表示该组应用程序中每个应用程序的流图相似度之间的波动不大,则表示分析该组应用程序中每个应用程序的数据流图,得到的至少一个第一公共频繁子图可以体现出该组应用程序在算法流程上的相似性以及计算结构上的共性。
因此,在一组应用程序的流图相似度的方差较小(小于或等于第一预设阈值)时,再根据每个应用程序的流图相似度对该组应用程序进行分组,能够得到更加准确的分组结果,即可以保证分组结果中每一个子应用组中的应用程序的相似度。
结合第四种可能的实现方式,在第五种可能的实现方式中,该确定应用程序计算逻辑的方法,还可以包括:
若所述一组应用程序的流图相似度的方差大于所述第一预设阈值,则重新分析所述每个应用程序的数据流图,得到至少一个第三公共频繁子图,所述第三公共频繁子图为所述一组应用程序中至少三个应用程序的数据流图的公共部分;
其中,所述第三公共频繁子图用于计算所述每个应用程序的流图相似度。
可以想到的是,若一组应用程序的流图相似度的方差较大,则表示该组应用程序中每个应用程序的流图相似度之间的波动较大,则分析该组应用程序中每个应用程序的数据流图,得到的至少一个第一公共频繁子图不足以最大程度地体现出该组应用程序在算法流程上的相似性以及计算结构上的共性。
由于至少三个应用程序的数据流图的公共部分相较于至少两个应用程序的数据流图的公共部分更能够体现出该组应用程序在算法流程上的相似性以及计算结构上的共性,因此,在重新分析每个应用程序的数据流图时,将一组应用程序中至少三个应用程序的数据流图的公共部分作为该组应用程序的公共频繁子图,可以提高后续计算应用程序的流图相似度的准确性,根据较为准确的流图相似度对该组应用程序进行分组,能够得到更加准确的分组结果。
结合第一方面,第四种可能的实现方式或者第五种可能的实现方式,在第六种可能的实现方式中,所述获取一组应用程序中每个应用程序的数据流图,包括:
获取所述一组应用程序中每个应用程序的源代码;
编译所述一组应用程序中每个应用程序的源代码,得到所述一组应用程序中每个应用程序的数据流图。
结合第一种可能的实现方式,在第七种可能的实现方式中,在所述根据所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑之前,所述方法还包括:
根据所述子应用组中每个应用程序的流图相似度,计算所述子应用组中应用程序的流图相似度的期望值;
根据所述每个应用程序的流图相似度以及所述子应用组中应用程序的流图相似度的期望值,计算所述子应用组中应用程序的流图相似度的方差;
所述根据所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑,包括:
若所述子应用组中应用程序的流图相似度的方差小于或等于第二预设阈值,则根据所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑。
可以想到的是,子应用组中应用程序的流图相似度的方差可以体现出子应用组中每个应用程序的流图相似度之间的波动性。如果子应用组中应用程序的流图相似度较小,则表示子应用组中每个应用程序的流图相似度之间的波动不大,则表示分析子应用组中每个应用程序的数据流图,得到的至少一个第二公共频繁子图可以体现出该子应用组中的所有应用程序在算法流程上的相似性以及计算结构上的共性。
因此,在子应用组中应用程序的流图相似度的方差较小(小于或等于第二预设阈值)时,再根据第二公共频繁子图,确定子应用组中应用程序的计算逻辑,可以保证得到的计算逻辑更加适用于该子应用组中的所有应用程序,根据该计算逻辑设计得到的体系结构则更加适用于子应用组中的所有应用程序。
结合第七种可能的实现方式,在第八种可能的实现方式中,该确定应用程序计算逻辑的方法,还可以包括:
若所述子应用组中应用程序的流图相似度的方差大于所述第二预设阈值,则重新分析所述子应用组中应用程序的数据流图,得到至少一个第四公共频繁子图,所述第四公共频繁子图为所述子应用组中至少三个应用程序的数据流图的公共部分。
如果子应用组中应用程序的流图相似度较大,则表示子应用组中每个应用程序的流图相似度之间的波动较大,则表示分析子应用组中每个应用程序的数据流图,得到的至少一个第二公共频繁子图不足以最大程度地体现出该子应用组中的所有应用程序在算法流程上的相似性以及计算结构上的共性。
由于至少三个应用程序的数据流图的公共部分相较于至少两个应用程序的数据流图的公共部分更能够体现出该组应用程序在算法流程上的相似性以及计算结构上的共性,因此,在重新分析子应用组中应用程序的数据流图时,将一组应用程序中至少三个应用程序的数据流图的公共部分作为子应用组中所有应用程序的公共频繁子图,可以提高后续确定子应用组中应用程序的计算逻辑的准确性。
结合第一方面,在第九种可能的实现方式中,所述分析所述每个应用程序的数据流图,得到至少一个第一公共频繁子图,包括:
采用频繁子图挖掘工具CGFSM,从所述每个应用程序的数据流图中挖掘出所述至少一个第一公共频繁子图。
结合第六种可能的实现方式,在第十种可能的实现方式中,所述编译所述一组应用程序中每个应用程序的源代码,得到所述一组应用程序中每个应用程序的数据流图,包括:
采用底层虚拟机LLVM工具将所述一组应用程序中每个应用程序的源代码编译为中间代码IR,并将中间代码IR转化为数据流图。
结合上述任一种可能的实现方式,在第十一种可能的实现方式中,所述一组应用程序中的应用程序属于一个或多个领域。
本发明实施例的第二方面,提供一种确定应用程序计算逻辑的装置,包括:
获取单元,用于获取一组应用程序中每个应用程序的数据流图;
分析单元,用于通过分析所述获取单元获取的所述每个应用程序的数据流图,得到至少一个第一公共频繁子图,所述第一公共频繁子图为所述一组应用程序中至少两个应用程序的数据流图的公共部分;
计算单元,用于根据所述分析单元分析得到的所述第一公共频繁子图和所述获取单元获取的所述每个应用程序的数据流图,计算所述每个应用程序的流图相似度,所述流图相似度用于表征所述一组应用程序中的一个应用程序与所述一组应用程序中其他应用程序的相似性;
分组单元,用于根据所述计算单元计算得到的所述每个应用程序的流图相似度,得到对所述一组应用程序中的应用程序的分组结果,所述分组结果包括至少一个子应用组;
确定单元,用于根据所述获取单元获取的所述分组结果中任一子应用组中的应用程序的数据流图,确定所述子应用组中应用程序的计算逻辑,所述计算逻辑用于设计所述子应用组中的应用程序的体系结构。
结合第二方面,在第一种可能的实现方式中,所述确定单元,包括:
分析模块,用于分析所述子应用组中应用程序的数据流图,得到至少一个第二公共频繁子图,所述第二公共频繁子图为所述子应用组中至少两个应用程序的数据流图的公共部分;
第一确定模块,用于根据所述分析模块分析得到的所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑。
结合第二方面或第一种可能的实现方式,在第二种可能的实现方式中,所述计算单元,包括:
第二确定模块,用于确定第一应用程序的匹配顶点个数和所述第一应用程序的数据流图中的顶点个数,所述第一应用程序为所述一组应用程序中的任一个应用程序,所述第一应用程序的匹配顶点个数为所述第一公共频繁子图在所述第一应用程序的数据流图中所匹配的顶点个数之和;
第一计算模块,用于计算所述第二确定模块确定的所述第一应用程序的匹配顶点个数和所述第一应用程序的数据流图中的顶点个数的比值,所述比值用于表征所述第一应用程序的流图相似度。
结合第二方面或第一种可能的实现方式,在第三种可能的实现方式中,所述分组单元,包括:
第二计算模块,用于计算所述一组应用程序中任意两个应用程序的流图相似度的平均值,所述任意两个应用程序的流图相似度的平均值用于表征该两个应用程序的相对相似度;采用1减去所述任意两个应用程序的相对相似度,得到该两个应用程序的差异度;
分组模块,用于根据所述第二计算模块计算得到的所述一组应用程序中所有应用程序两两之间的差异度,得到对所述一组应用程序中的应用程序的分组结果。
结合第二方面,在第四种可能的实现方式中,所述计算单元,还用于在所述分组单元根据所述每个应用程序的流图相似度,得到所述分组结果之前,
根据所述每个应用程序的流图相似度,计算所述一组应用程序的流图相似度的期望值;
根据所述每个应用程序的流图相似度以及所述一组应用程序的流图相似度的期望值,计算所述一组应用程序的流图相似度的方差;
所述分组单元,具体用于:
若所述计算单元计算得到的所述一组应用程序的流图相似度的方差小于或等于第一预设阈值,则根据所述每个应用程序的流图相似度,得到所述分组结果。
结合第四种可能的实现方式,在第五种可能的实现方式中,所述分析单元,还用于:
若所述计算单元计算得到的所述一组应用程序的流图相似度的方差大于所述第一预设阈值,则重新分析所述每个应用程序的数据流图,得到至少一个第三公共频繁子图,所述第三公共频繁子图为所述一组应用程序中至少三个应用程序的数据流图的公共部分;
其中,所述第三公共频繁子图用于计算所述每个应用程序的流图相似度。
结合第一种可能的实现方式,在第六种可能的实现方式中,所述计算单元,还用于在所述第一确定模块根据所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑之前,
根据所述子应用组中每个应用程序的流图相似度,计算所述子应用组中应用程序的流图相似度的期望值;
根据所述子应用组中每个应用程序的流图相似度以及所述子应用组中应用程序的流图相似度的期望值,计算所述子应用组中应用程序的流图相似度的方差;
所述第一确定模块,具体用于:
若所述计算单元计算得到的所述子应用组中应用程序的流图相似度的方差小于或等于第二预设阈值,则根据所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑。
结合第六种可能的实现方式,在第七种可能的实现方式中,所述分析模块,还用于:
若所述计算单元计算得到的所述子应用组中应用程序的流图相似度的方差大于所述第二预设阈值,则重新分析所述子应用组中应用程序的数据流图,得到至少一个第四公共频繁子图,所述第四公共频繁子图为所述子应用组中至少三个应用程序的数据流图的公共部分。
结合第二方面、第一种可能的实现方式或第四至第七种可能的实现方式中的任一种可能的实现方式,在第八种可能的实现方式中,所述获取单元,具体用于:
获取所述一组应用程序中每个应用程序的源代码;
编译所述一组应用程序中每个应用程序的源代码,得到所述一组应用程序中每个应用程序的数据流图。
结合第一种可能的实现方式,在第九种可能的实现方式中,所述分析单元,具体用于:
采用频繁子图挖掘工具CGFSM,从所述每个应用程序的数据流图中挖掘出所述第一公共频繁子图。
结合第六种可能的实现方式,在第十种可能的实现方式中,所述获取单元,具体用于采用底层虚拟机LLVM工具将所述一组应用程序中每个应用程序的源代码编译为中间代码IR,并将中间代码IR转化为数据流图。
结合上述任一种可能的实现方式,在第十一种可能的实现方式中,所述一组应用程序中的应用程序属于一个或多个领域。
本发明实施例的第三方面,提供一种确定应用程序计算逻辑的装置,包括:
存储器,用于存储一组程序代码;
处理器,用于根据所述存储器存储的一组程序代码,执行如本发明实施例第一方面或第一方面的任一种可能的实现方式所述的确定应用程序计算逻辑的方法。
本发明实施例提供的确定应用程序计算逻辑的装置,可以通过分析一组应用程序中的每个应用程序,得到该组应用程序的公共频繁子图(至少一个第一公共频繁子图);由于第一公共频繁子图为该组应用程序中至少两个应用程序的数据流图中的公共部分,因此根据第一公共频繁子图和每个应用程序的数据流图,计算得到的每个应用程序的流图相似度则可以用于表征一组应用程序中每个应用程序与一组应用程序中其他应用程序的相似性;然后根据每个应用程序的流图相似度则可以将该组应用程序中的应用程序划分至不同的子应用组,这样则可以将相似度较高的应用程序划分至同一子应用组,针对各个子应用组,根据其包含的应用程序的数据流图,确定该子应用组中的应用程序的计算逻辑。
通过本方案,不需要采用人工分析的方式对各个应用程序逐个分析,而是根据一组应用程序中各个应用程序与其他应用程序的相似度对应用程序进行分组,然后确定该子应用组中的应用程序的计算逻辑,该计算逻辑是分析一个子应用组中的应用程序得到的,因此采用该计算逻辑设计得到的体系结构则可以适用于该子应用组中的所有应用程序的。
由此可见,本方案实现了一组应用程序的自动分析,提高了对应用程序进行分析的效率;并且可以针对一个子应用组中的所有应用程序确定计算逻辑,从而减少了设计工作量,并扩大了设计得到的体系结构的适用范围。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种确定应用程序计算逻辑的方法流程示意图;
图2为本发明实施例提供的另一种确定应用程序计算逻辑的方法流程示意图;
图3为本发明实施例提供的一种数据流图的实例示意图;
图4为本发明实施例提供的一种频繁子图的实例示意图;
图5为本发明实施例提供的另一种确定应用程序计算逻辑的方法流程示意图;
图6为本发明实施例提供的另一种确定应用程序计算逻辑的方法流程示意图;
图7为本发明实施例提供的另一种确定应用程序计算逻辑的方法流程示意图;
图8为本发明实施例提供的另一种确定应用程序计算逻辑的方法流程示意图;
图9为本发明实施例提供的一种确定应用程序计算逻辑的装置的结构组成框图;
图10为本发明实施例提供的另一种确定应用程序计算逻辑的装置的结构组成框图;
图11为本发明实施例提供的另一种确定应用程序计算逻辑的装置的结构组成框图;
图12为本发明实施例提供的另一种确定应用程序计算逻辑的装置的结构组成框图;
图13为本发明实施例提供的另一种确定应用程序计算逻辑的装置的结构组成框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本发明实施例提供的一种确定应用程序计算逻辑的方法及装置可以应用于应用程序的体系结构设计过程中,具体应用于确定应用程序的计算逻辑的过程中,应用程序的计算逻辑用于进行应用程序的体系结构设计。
其中,应用程序的计算逻辑包括:应用程序的计算结构和算法模式。计算结构用于表征所述应用程序的逻辑计算框架,算法模式用于表征所述逻辑计算框架中每一种计算的算法模式。
本发明实施例提供的确定应用程序计算逻辑的方法及装置可以应用于网络功能虚拟化(NetworkFunctionVirtualization,NFV)场景中。
其中,NFV场景可以通过基于行业标准的x86服务器、存储和交换设备,来取代通信网的那些私有专用的网元设备,可以提供网络设备中硬件的通用性,使得网络设备中的硬件可以承载更多功能的软件处理(即运行或者适用于更多的应用程序),即使网络设备功能不再依赖于专用硬件。
本发明实施例提供的确定应用程序计算逻辑的方法的执行主体可以为确定应用程序计算逻辑的装置或者可以用于执行上述确定应用程序计算逻辑的方法的电子设备。其中,确定应用程序计算逻辑的装置可以为上述电子设备中的中央处理器(CentralProcessingUnit,CPU)或者可以为上述电子设备的中的控制单元或者模块。
示例性的,上述电子设备可以为可以采用本发明实施例提供的方法对应用程序进行分析的个人计算机((personalcomputer,PC)、服务器等,或者上述电子设备可以为安装有可以采用本发明实施例提供的方法对应用程序进行分析的软件客户端或软件系统或软件应用的PC、服务器等,具体的硬件实现环境可以通用计算机形式,或者是ASIC的方式,也可以是FPGA,或者是一些可编程的扩展平台例如Tensilica的Xtensa平台等等。
下面结合附图,通过具体的实施例及其应用场景对本发明实施例提供的一种确定应用程序计算逻辑的方法及装置进行详细地说明。
实施例一
本发明实施例提供一种确定应用程序计算逻辑的方法,如图1所示,该确定应用程序计算逻辑的方法包括:
S101、获取一组应用程序中每个应用程序的数据流图(DataFlowGraph,DFG)。
其中,本发明实施例中的一组应用程序属于一个或多个领域。DFG是一种便于用户(如设计人员)理解、分析系统数据流程的图形工具,是软件系统分析阶段用于描述系统逻辑模型的图形描述工具。数据流图可以从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,即可以描绘信息流和数据从输入移动到输出的过程中所经受的变换。
本发明实施例中可以获取一组应用程序中每个应用程序的源代码,然后分别编译该组应用程序中每个应用程序的源代码,得到一组应用程序中每个应用程序的数据流图。
如图2所示,本发明实施例提供的确定应用程序计算逻辑的方法中,获取一组应用程序中每个应用程序的数据流图的方法(即S101)具体可以包括S101a-S101b:
S101a、获取一组应用程序中每个应用程序的源代码。
其中,编程人员可以根据一个应用程序要实现的具体功能采用高级编程语言为该应用程序编写源代码。例如,编程人员编写源代码所采用的高级编程语言可以为C语言。
S101b、编译一组应用程序中每个应用程序的源代码,得到一组应用程序中每个应用程序的数据流图。
本发明实施例中,对每个应用程序的源代码进行编译得到该应用程序的数据流图的方法均相同,以下仅以对一个应用程序的源代码进行编译得到该应用程序的数据流图的具体过程为例,对本发明实施例中编译应用程序的源代码,得到应用程序的数据流图的方法进行说明:
示例性的,本发明实施例中可以采用底层虚拟机(LowLevelVirtualMachine,LLVM)工具对应用程序的源代码进行编译得到应用程序的数据流图。具体的,首先可以采用LLVM工具链将应用程序的源代码编译为中间代码(IR);其中,IR可以为一个该应用程序的指令集,且IR中包含了指令集中各个指令之间的依赖关系(use-define),设计人员(用户)可以通过LLVM的pass模块访问该use-define;然后可以通过LLVM的pass模块中的子工具将编译得到的IR转化为数据流图,这样便实现了由应用程序的源代码到应用程序的数据流图的转化。
需要说明的是,本发明实施例中采用LLVM工具对应用程序的源代码进行编译得到应用程序的数据流图的具体方法的详细描述可以参考现有技术中的相关方法,本发明实施例这里不再赘述。
S102、通过分析每个应用程序的数据流图,得到至少一个第一公共频繁子图。
其中,第一公共频繁子图为所述一组应用程序中至少两个应用程序的数据流图的公共部分。
假设一组应用程序A中包含4个应用程序,分别为A0、A1、A2和A3,即A={A0,A1,A2,A3}。其中,应用程序A0的数据流图为如图3所示的数据流图G0,应用程序A1的数据流图为如图3所示的数据流图G1,应用程序A2的数据流图为如图3所示的数据流图G2,应用程序A3的数据流图为如图3所示的数据流图G3。即一组应用程序A的数据流图集合为D={G0,G1,G2,G3}。
在图3中,由于有向边a→c不仅包含于数据流图G0,还包含于数据流图G1、数据流图G2和数据流图G3,因此可以确定有向边a→c为该组应用程序A的一个频繁子图,即一个第一公共频繁子图。如图4所示,有向边a→c所表示的第一公共频繁子图记为第一公共频繁子图g1。
在图3中,由于有向边b→c不仅包含于数据流图G0,还包含于数据流图G1和数据流图G3,因此可以确定有向边b→c为该组应用程序A的一个频繁子图,即一个第一公共频繁子图。如图4所示,有向边b→c所表示的第一公共频繁子图记为第一公共频繁子图g2。
在图3中,由于有向边d→a不仅包含于数据流图G2,还包含于数据流图G3,因此可以确定有向边d→a为该组应用程序A的一个频繁子图,即一个第一公共频繁子图。如图4所示,有向边d→a所表示的第一公共频繁子图记为第一公共频繁子图g3。
在图3中,由于有向边d→b不仅包含于数据流图G2,还包含于数据流图G3,因此可以确定有向边d→b为该组应用程序A的一个频繁子图,即一个第一公共频繁子图。如图4所示,有向边d→b所表示的第一公共频繁子图记为第一公共频繁子图g4。
在图3中,由于有向边a→c←b不仅包含于数据流图G0,还包含于数据流图G1和数据流图G3,因此可以确定有向边a→c←b为该组应用程序A的一个频繁子图,即一个第一公共频繁子图。如图4所示,有向边a→c←b所表示的第一公共频繁子图记为第一公共频繁子图g5。
在图3中,由于有向边(d→a)+(d→b)不仅包含于数据流图G2,还包含于数据流图G3,因此可以确定有向边(d→a)+(d→b)为该组应用程序A的一个频繁子图,即一个第一公共频繁子图。如图4所示,有向边(d→a)+(d→b)所表示的第一公共频繁子图记为第一公共频繁子图g6。
在图3中,由于有向边(d→a→c)不仅包含于数据流图G2,还包含于数据流图G3,因此可以确定有向边(d→a→c)为该组应用程序A的一个频繁子图,即一个第一公共频繁子图。如图4所示,有向边(d→a→c)所表示的第一公共频繁子图记为第一公共频繁子图g7。
基于上述实例,可以得到一组应用程序A的公共频繁子图集合MD,即至少一个第一公共频繁子图,该至少一个第一公共频繁子图中包含7个第一公共频繁子图,分别为:g1、g2、g3、g4、g5、g6和g7,即MD={g1,g2,g3,g4,g5,g6,g7}。
示例性的,本发明实施例中可以采用频繁子图挖掘算法分析一组应用程序中每个应用程序的数据流图,从该组应用程序中所有应用程序的数据流图中,挖掘出该组应用程序的所有公共频繁子图(至少一个第一公共频繁子图)。
需要说明的是,本发明实施例中进行频繁子图挖掘所采用的公共频繁子图挖掘算法与现有技术中的公共频繁子图挖掘算法不同。现有技术中一般采用gSpan算法进行无向图的公共频繁子图挖掘,而考虑到本发明实施例中编译源代码得到的数据流图是有向图,本发明实施例采用频繁子图挖掘工具CGFSM进行频繁子图的挖掘。其中CGFSM可以将方向边的方向信息编码到方向边的标记码上,以便于可以进行有向图的公共频繁子图挖掘。例如对于一条有向边e=(u,v)(即u→v),u是源点,v是目的点,如果顶点u跟v的标记码分别是a,b,即label(u)=a,label(v)=b,那本发明实施例可以将方向信息编码到边e上,即label(e)=ab。同理对于有向边f=(v,u)而言,label(f)=ba。可见e跟f方向相反,虽然e跟f具有相同的顶点,但本发明实施例仍然可以根据e跟f的标记码来解码出它们实际的方向信息。
示例性的,以下给出一个CGFSM的算法流程实例:
函数CGFSM(D)的接口原型如下所示:
set<subgraph>CGFSM(set<graph>D,unsignedintsigma);
其中,在上述CGFSM算法流程中,D为用于表示上述一组应用程序中所有应用程序的数据流图集合,如D={G0,G1,G2,G3};e=(u,v)用于表示集合D中的数据流图的有向边(即u→v);集合S即为上述一组应用程序中所有应用程序的公共频繁子图集合,S=MD={g1,g2,g3,g4,g5,g6,g7},即通过执行上述CGFSM算法流程可以调用CCGFSM返回集合D中数据流图的所有公共频繁子图。
S103、根据第一公共频繁子图和每个应用程序的数据流图,计算得到每个应用程序的流图相似度。
其中,一个应用程序的流图相似度用于表征该应用程序与一组应用程序中其他应用程序的相似性。
由于第一公共频繁子图为该组应用程序中至少两个应用程序的数据流图中的公共部分,因此根据第一公共频繁子图和每个应用程序的数据流图,计算得到的流图相似度则可以用于表征一组应用程序中一个应用程序与该组应用程序中其他应用程序的相似性。
S104、根据每个应用程序的流图相似度,得到对该一组应用程序中的应用程序的分组结果,分组结果包括至少一个子应用组。
其中,根据每个应用程序的流图相似度,对一组应用程序中的应用程序进行分组,可以将相似度较高的应用程序划分至同一子应用组,从而可以得到对该一组应用程序中的应用程序的分组结果。子应用组为分组结果中的任一个子应用组。
S105、根据分组结果中任一子应用组中的应用程序的数据流图,确定子应用组中应用程序的计算逻辑,计算逻辑用于设计子应用组中的应用程序的体系结构。
本发明实施例提供的确定应用程序计算逻辑的方法,可以通过分析一组应用程序中的每个应用程序,得到该组应用程序的公共频繁子图(至少一个第一公共频繁子图);由于第一公共频繁子图为该组应用程序中至少两个应用程序的数据流图中的公共部分,因此根据第一公共频繁子图和每个应用程序的数据流图,计算得到的每个应用程序的流图相似度则可以用于表征一组应用程序中每个应用程序与一组应用程序中其他应用程序的相似性;然后根据每个应用程序的流图相似度则可以将该组应用程序中的应用程序划分至不同的子应用组,这样则可以将相似度较高的应用程序划分至同一子应用组,针对各个子应用组,根据其包含的应用程序的数据流图,确定该子应用组中的应用程序的计算逻辑。
通过本方案,不需要采用人工分析的方式对各个应用程序逐个分析,而是根据一组应用程序中各个应用程序与其他应用程序的相似度对应用程序进行分组,然后确定该子应用组中的应用程序的计算逻辑,该计算逻辑是分析一个子应用组中的应用程序得到的,因此采用该计算逻辑设计得到的体系结构则可以适用于该子应用组中的所有应用程序的。
由此可见,本方案实现了一组应用程序的自动分析,提高了对应用程序进行分析的效率;并且可以针对一个子应用组中的所有应用程序确定计算逻辑,从而减少了设计工作量,并扩大了设计得到的体系结构的适用范围。
进一步的,如图5所示,根据第一公共频繁子图和每个应用程序的数据流图,计算每个应用程序的流图相似度的方法(即S103)具体可以包括:S103a和S103b:
S103a、确定第一应用程序的匹配顶点个数和第一应用程序的数据流图中的顶点个数。
其中,第一应用程序为一组应用程序中的任一个应用程序,第一应用程序的匹配顶点个数为至少一个第一公共频繁子图中的所有第一公共频繁子图在第一应用程序的数据流图中所匹配的顶点个数之和。
示例性的,采用表示应用Ai的数据流图中的顶点个数,如图3所示,应用程序A0的数据流图G0中的顶点个数为3,即数据流图G0中包含3个顶点;应用程序A1的数据流图G1中的顶点个数为4,即数据流图G1中包含4个顶点;应用程序A2的数据流图G2中的顶点个数为4,即数据流图G2中包含4个顶点;应用程序A3的数据流图G3中的顶点个数为4,即数据流图G3中包含4个顶点。
采用表示出现在应用程序Ai的数据流图Gi中的公共频繁子图组成的集合,即为数据流图Gi中包含的所有公共频繁子图的集合,那么应用程序Ai的匹配顶点采用表示应用程序Ai的匹配顶点个数,那么为集合中的所有公共频繁子图在应用程序Ai的数据流图Gi中所匹配的顶点个数之和。
以应用程序A0为例,由于图3所示的应用程序A0的数据流图G0中包含了如图4所示的g1、g2和g53个第一公共频繁子图,因此可以确定至少一个第一公共频繁子图中的g1、g2和g5与数据流图G0中的3个顶点a、b和c匹配,应用程序A0的匹配顶点个数为3。
以应用程序A1为例,由于图3所示的应用程序A1的数据流图G1中包含了如图4所示的g1、g2和g53个第一公共频繁子图,因此可以确定至少一个第一公共频繁子图中的g1、g2和g5与数据流图G1中的3个顶点a、b和c匹配,应用程序A1的匹配顶点个数为3。
以应用程序A2为例,由于图3所示的应用程序A2的数据流图G2中包含了如图4所示的g3、g4、g6和g74个第一公共频繁子图,因此可以确定至少一个第一公共频繁子图中的g3、g4、g6和g7与数据流图G2中的4个顶点a、b、c和d匹配,应用程序A2的匹配顶点个数为4。
以应用程序A3为例,由于图3所示的应用程序A3的数据流图G3中包含了如图4所示的g3、g4、g6和g74个第一公共频繁子图,因此可以确定至少一个第一公共频繁子图中的g3、g4、g6和g7与数据流图G3中的4个顶点a、b、c和d匹配,应用程序A3的匹配顶点个数为4。
S103b、计算第一应用程序的匹配顶点个数和第一应用程序的数据流图中的顶点个数的比值,该比值用于表征第一应用程序的流图相似度。
示例性的,可以采用以下公式:
计算第一应用程序(即一组应用程序中的任一个应用程序)的流图相似度。
其中,用于表示应用Ai的流图相似度,用于表示应用Ai的数据流图中的顶点个数,用于表示应用Ai的匹配顶点个数。
例如,基于如图3所示的数据流图实例和如图4所示的第一公共频繁子图实例,应用程序A0的匹配顶点个数为3,应用程序A0的数据流图G0中的顶点个数为3,由此可以计算得到应用程序A0的匹配顶点个数(3)和应用程序A0的数据流图G0中的顶点个数(3)的比值为1,即应用程序A0的流图相似度为1。
应用程序A1的匹配顶点个数为3,应用程序A1的数据流图G1中的顶点个数为4,可以计算得到应用程序A1的匹配顶点个数(3)和应用程序A1的数据流图G1中的顶点个数(3)的比值为0.75,即应用程序A1的流图相似度为0.75。
同理可以计算得到应用程序A2和应用程序A3的流图相似度均为1。
可以想到的是,本发明实施例中确定第一应用程序(即上述一组应用程序中的任一个应用程序)的匹配顶点个数的方法可以包括:遍历至少一个第一公共频繁子图中的每个第一公共频繁子图;针对每个第一公共频繁子图,采用vflib子图匹配函数确定该第一公共频繁子图在第一应用程序的数据流图中所匹配的所有顶点;收集匹配的顶点,并将其加入到集合C中,在遍历所有第一公共频繁子图后,返回集合C,集合C中包含的顶点个数即为该第一应用程序的匹配顶点个数,即第一应用程序的匹配顶点个数为所有第一公共频繁子图在第一应用程序的数据流图中所匹配的顶点个数之和。
示例性的,可以采用以下函数的算法流程实现第一应用程序的流图相似度的计算(S103a和S103b):
其中,在上述函数的算法流程中,Gi用于表示应用程序Ai的数据流图;集合C用于在遍历所有第一公共频繁子图后,存储应用程序Ai的匹配顶点个数commonalityD=MD用于表示数据流图Gi中包含的所有公共频繁子图的集合。
需要说明的是,本发明实施例中,“统计所有第一公共频繁子图在第一应用程序的数据流图中所匹配的顶点个数之和”是指统计所有第一公共频繁子图在第一应用程序的数据流图中所匹配的顶点中包含多少个不同的顶点,即所有匹配的顶点中包含多少个不重复的顶点。
例如,如图3和图4所示,第一公共频繁子图g1在应用程序A0的数据流图G0中所匹配的顶点为顶点a和顶点c,第一公共频繁子图g2在应用程序A0的数据流图G0中所匹配的顶点为顶点b和顶点c,第一公共频繁子图g5在应用程序A0的数据流图G0中所匹配的顶点为顶点a、顶点b和顶点c,其他的第一公共频繁子图(g3、g4、g6和g7)在应用程序A0的数据流图G0中没有匹配的顶点;因此可以确定应用程序A0的匹配顶点为顶点a、顶点b和顶点c,应用程序A0的匹配顶点个数为3。
进一步的,如图6所示,根据每个应用程序的流图相似度,得到对一组应用程序中的应用程序的分组结果的方法(即S104)具体可以包括:S104a-S104c:
S104a、计算一组应用程序中任意两个应用程序的流图相似度的平均值,任意两个应用程序的流图相似度的平均值用于表征该两个应用程序的相对相似度。
示例性的,基于上述实例,一组应用程序中应用程序A0的流图相似度为1,应用程序A1的流图相似度为0.75,应用程序A2的流图相似度为1,应用程序A3的流图相似度为1。由此可以计算得到:应用程序A0和应用程序A1的流图相似度的平均值为0.875;应用程序A0和应用程序A2的流图相似度的平均值为1;应用程序A0和应用程序A3的流图相似度的平均值为1。
需要说明的是,应用程序A1和应用程序A2的流图相似度的平均值、应用程序A1和应用程序A3的流图相似度的平均值以及应用程序A2和应用程序A3的流图相似度的平均值的计算方法本发明实施例这里不再赘述。
S104b、采用1减去任意两个应用程序的相对相似度,得到该两个应用程序的差异度。
示例性的,基于上述实例,可以计算得到应用程序A0和应用程序A1的差异度为1-0.875=0.125;应用程序A0和应用程序A2的差异度为1-1=0;应用程序A0和应用程序A3的差异度为1-1=0。
S104c、根据一组应用程序中所有应用程序两两之间的差异度,得到对该组应用程序中的应用程序的分组结果,分组结果中包含至少一个子应用组。
其中,在本发明实施例中可以计算应用程序Ai和应用程序Aj的差异度,得到一个差异度矩阵,然后基于该差异度矩阵对一组应用程序中的应用程序进行层次聚类,将一组应用程序中的应用程序划分至至少一个子应用组,并得到分组结果。其中,0≤i<j≤N-1,i和j均为正整数,N为上述一组应用程序中包含的应用程序的个数。
示例性的,本发明实施例中可以采用Taxonomy算法实现:第一程序对中两个应用程序的差异度的计算,并得到差异度矩阵。以下给出一个Taxonomy的算法流程实例:
Taxonomy函数的接口原型如下所示:
double[][]Taxonomy(set<graph>D);
其中,在上述Taxonomy算法流程中,D用于表示上述一组应用程序中所有应用程序的数据流图集合,如D={G0,G1,G2,G3};Gi用于表示应用程序Ai的数据流图,Gj用于表示应用程序Aj的数据流图,应用程序Ai和应用程序Aj用于表示一组应用程序中的任意两个应用程序,0≤i<j≤N-1,i和j均为正整数,N为上述一组应用程序中包含的应用程序的个数;用于表示应用程序Ai的流图相似度,用于表示应用程序Ai的流图相似度;degreeS用于表示应用程序Ai和应用程序Aj的相对相似度;用于表示应用程序Ai和应用程序Aj的差异度。上述Taxonomy算法流程的返回值MT为由组成的差异度(距离)矩阵,使用浮点型二维数组表示。
可以想到的是,相较于上述一组应用程序中的应用程序,由子应用组中应用程序的流图相似度计算得到的应用程序两两之间的差异度较小,即相较于上述一组应用程序中的应用程序,子应用组中的应用程序之间相似度更高。
进一步地,本发明实施例中可以以上述差异度(距离)矩阵作为输入,调用R程序包(Rpackage)中基于complete-linkage方法的层次聚类算法,对一组应用程序中的应用程序进行层次聚类。
需要说明的是,本发明实施例中调用Rpackage中基于complete-linkage方法的层次聚类算法,对一组应用程序中的应用程序进行层次聚类的方法可以参考现有技术中的相关描述,本实施例这里不再赘述。
进一步的,如图7所示,上述根据分组结果中任一子应用组中的应用程序的数据流图,确定子应用组中应用程序的计算逻辑(即S105)的方法具体可以包括:S105a和S105b:
S105a、通过分析子应用组中应用程序的数据流图,得到至少一个第二公共频繁子图,第二公共频繁子图为子应用组中至少两个应用程序的数据流图的公共部分。
需要说明的是,在本发明实施例中,分析子应用组中应用程序的数据流图,得到至少一个第二公共频繁子图的方法与S102中“分析每个应用程序的数据流图,得到至少一个第一公共频繁子图”的方法类似,本发明实施例这里不再赘述。
S105b、根据所述第二公共频繁子图,确定子应用组中应用程序的计算逻辑。
其中,子应用组中的第二公共频繁子图可以体现出该子应用组中所有应用程序公共的计算逻辑,因此采用该公共的计算逻辑设计得到的体系结构则可以适用于该子应用组中的所有应用程序的。
在获得分组结果后,分析子应用组中应用程序的数据流图,可以得到该子应用组中应用程序的公共频繁子图(至少一个第二公共频繁子图);由于第二公共频繁子图为子应用组中至少两个应用程序的数据流图中的公共部分,相较于第一公共频繁子图能够更加突出的体现出该子应用组的公共计算逻辑,因此根据第二公共频繁子图确定的子应用组中应用程序的计算逻辑,更加适合设计子应用组中的应用程序的体系结构。
优选的,为了能够更加准确的对一组应用程序进行分组,即可以保证分组结果中每一个子应用组中的应用程序的相似度,如图8所示,在根据每个应用程序的流图相似度,得到对一组应用程序中的应用程序的分组结果(即S104)之前,本发明实施例的方法还可以包括S106和S107:
S106、根据一组应用程序中每个应用程序的流图相似度,计算该组应用程序的流图相似度的期望值。
示例性的,本发明实施例中可以采用以下公式:
计算上述一组应用程序的流图相似度的期望值。
其中,degreeD用于表示上述一组应用程序的流图相似度的期望值;N用于表示上述一组应用程序中包含的应用程序的个数;用于表示上述一组应用程序中应用Ai的流图相似度,用于表示应用Ai的数据流图中的顶点个数,用于表示应用Ai的匹配顶点个数。
示例性的,当 时,可以计算到的degreeD=0.9375。
S107、根据一组应用程序中每个应用程序的流图相似度以及该组应用程序的流图相似度的期望值,计算该组应用程序的流图相似度的方差。
示例性的,本发明实施例中可以采用以下公式:
计算上述一组应用程序的流图相似度的方差。
其中,varD用于表示上述一组应用程序的流图相似度的方差,degreeD用于表示上述一组应用程序的流图相似度的期望值;N用于表示上述一组应用程序中包含的应用程序的个数;用于表示上述一组应用程序中应用Ai的流图相似度。
示例性的,当 时,可以计算到的degreeD=0.9375,varD=0.015625。
需要说明的是,一组应用程序的流图相似度的方差可以体现出该组应用程序中每个应用程序的流图相似度之间的波动性。
若该组应用程序的流图相似度的方差较小,则表示该组应用程序中每个应用程序的流图相似度之间的波动不大,则表示上述S102中分析该组应用程序中每个应用程序的数据流图,得到的至少一个第一公共频繁子图可以体现出该组应用程序在算法流程上的相似性以及计算结构上的共性。由此,根据该至少一个第一公共频繁子图对应用程序进行分组,所得到的分组结果也较为准确。
相应的,如图8所示,S104可以替换为S104′:
S104′、若一组应用程序的流图相似度的方差小于或等于第一预设阈值,则根据每个应用程序的流图相似度,得到分组结果。
示例性的,若varD=0.015625,第一预设阈值为0.02,则可以确定该组应用程序的流图相似度的方差小于第一预设阈值。
在一组应用程序的流图相似度的方差较小(小于或等于第一预设阈值)时,再根据每个应用程序的流图相似度对该组应用程序进行分组,能够得到更加准确的分组结果,即可以保证分组结果中每一个子应用组中的应用程序的相似度。
若该组应用程序的流图相似度的方差较大,则表示该组应用程序中每个应用程序的流图相似度之间的波动较大,则表示上述S102中分析该组应用程序中每个应用程序的数据流图,得到的至少一个第一公共频繁子图不能够体现出该组应用程序在算法流程上的相似性以及计算结构上的共性。由此,根据该至少一个第一公共频繁子图对应用程序进行分组,所得到的分组结果可能不够准确。
为了提高对应用程序进行分组,所得到的分组结果准确性,在S107之后本发明实施例的方法还可以包括S108-S111:
S108、若一组应用程序的流图相似度的方差大于第一预设阈值,则重新分析每个应用程序的数据流图,得到至少一个第三公共频繁子图。
其中,第三公共频繁子图为一组应用程序中至少三个应用程序的数据流图的公共部分。
示例性的,若varD=0.015625,第一预设阈值为0.01,则可以确定该组应用程序的流图相似度的方差大于第一预设阈值。
S109、根据第三公共频繁子图和每个应用程序的数据流图,计算每个应用程序的流图相似度。
其中,流图相似度用于表征一组应用程序中的一个应用程序与一组应用程序中其他应用程序的相似性。
需要说明的是,S109中根据第三公共频繁子图和每个应用程序的数据流图,计算每个应用程序的流图相似度的具体方法可以参考本发明实施例中S103或者S103a-S103b中根据第一公共频繁子图和每个应用程序的数据流图,计算每个应用程序的流图相似度的具体方法,本实施例这里不再赘述。
S110、根据每个应用程序的流图相似度,得到对一组应用程序中的应用程序的分组结果,分组结果包括至少一个子应用组。
需要说明的是,S110中根据每个应用程序的流图相似度,得到对一组应用程序中的应用程序的分组结果的具体方法可以参考本发明实施例中S104或者S104a-S104c中的相关描述,本实施例这里不再赘述。
S111、根据子应用组中应用程序的数据流图,确定子应用组中应用程序的计算逻辑,该计算逻辑用于设计子应用组中的应用程序的体系结构。
需要说明的是,S111中根据子应用组中应用程序的数据流图,确定子应用组中应用程序的计算逻辑的具体方法可以参考本发明实施例S105或者S105a和S105b中根据子应用组中应用程序的数据流图,确定子应用组中应用程序的计算逻辑的具体方法,本实施例这里不再赘述。
由于至少三个应用程序的数据流图的公共部分相较于至少两个应用程序的数据流图的公共部分更能够体现出该组应用程序在算法流程上的相似性以及计算结构上的共性,因此,在重新分析每个应用程序的数据流图时,将一组应用程序中至少三个应用程序的数据流图的公共部分作为该组应用程序的公共频繁子图,可以提高后续计算应用程序的流图相似度的准确性,根据较为准确的流图相似度对该组应用程序进行分组,能够得到更加准确的分组结果。
优选的,为了保证确定的计算逻辑与子应用组中的所有应用程序之间的适应性,在根据第二公共频繁子图,确定子应用组中应用程序的计算逻辑(即S105b)之前,本发明实施例的方法还可以包括S105c-S105d:
S105c、根据子应用组中每个应用程序的流图相似度,计算子应用组中应用程序的流图相似度的期望值。
S105d、根据每个应用程序的流图相似度以及子应用组中应用程序的流图相似度的期望值,计算子应用组中应用程序的流图相似度的方差。
需要说明的是,S105c-S105d中计算子应用组中应用程序的流图相似度的期望值以及计算子应用组中应用程序的流图相似度的方差的具体方法可以参考本发明实施例中计算一组应用程序的流图相似度的期望值以及流图相似度的方差的方法,本实施例这里不再赘述。
相应的,S105b可以替换为S105b′:
S105b′、若子应用组中应用程序的流图相似度的方差小于或等于第二预设阈值,则根据第二公共频繁子图,确定子应用组中应用程序的计算逻辑。
可以想到的是,子应用组中应用程序的流图相似度的方差可以体现出子应用组中每个应用程序的流图相似度之间的波动性。如果子应用组中应用程序的流图相似度较小,则表示子应用组中每个应用程序的流图相似度之间的波动不大,则表示分析子应用组中每个应用程序的数据流图,得到的至少一个第二公共频繁子图可以体现出该子应用组中的所有应用程序在算法流程上的相似性以及计算结构上的共性。
因此,在子应用组中应用程序的流图相似度的方差较小(小于或等于第二预设阈值)时,再根据第二公共频繁子图,确定子应用组中应用程序的计算逻辑,可以保证得到的计算逻辑更加适用于该子应用组中的所有应用程序,根据该计算逻辑设计得到的体系结构则更加适用于子应用组中的所有应用程序。
进一步的,本发明实施例的方法还可以包括S112-S113:
S112、若子应用组中应用程序的流图相似度的方差大于第二预设阈值,则重新分析子应用组中应用程序的数据流图,得到至少一个第四公共频繁子图,第四公共频繁子图为子应用组中至少三个应用程序的数据流图的公共部分。
S113、根据第四公共频繁子图,确定子应用组中应用程序的计算逻辑。
如果子应用组中应用程序的流图相似度较大,则表示子应用组中每个应用程序的流图相似度之间的波动较大,则表示分析子应用组中每个应用程序的数据流图,得到的至少一个第二公共频繁子图不足以最大程度地体现出该子应用组中的所有应用程序在算法流程上的相似性以及计算结构上的共性。
由于至少三个应用程序的数据流图的公共部分相较于至少两个应用程序的数据流图的公共部分更能够体现出该组应用程序在算法流程上的相似性以及计算结构上的共性,因此,在重新分析子应用组中应用程序的数据流图时,将一组应用程序中至少三个应用程序的数据流图的公共部分作为子应用组中所有应用程序的公共频繁子图,可以提高后续确定子应用组中应用程序的计算逻辑的准确性。
综上所述,通过本方案实现了一组应用程序的自动分析,提高了对应用程序进行分析的效率,并且可以针对一个子应用组设计适用于该子应用组中的所有应用程序的计算逻辑,从而扩大了采用该计算逻辑设计得到的体系结构的适用范围。
进一步的,在获得分组结果后,可以通过分析子应用组中应用程序的数据流图,得到相较于第一公共频繁子图能够更加突出的体现出该子应用组的公共计算逻辑的至少一个第二公共频繁子图,根据第二公共频繁子图确定出更加适合设计子应用组中的应用程序的体系结构的计算逻辑。
实施例二
本发明实施例提供一种确定应用程序计算逻辑的装置,如图9所示,该确定应用程序计算逻辑的装置包括:获取单元21、分析单元22、计算单元23、分组单元24和确定单元25。
获取单元21,用于获取一组应用程序中每个应用程序的数据流图。
分析单元22,用于通过分析所述获取单元21获取的所述每个应用程序的数据流图,得到至少一个第一公共频繁子图,所述第一公共频繁子图为所述一组应用程序中至少两个应用程序的数据流图的公共部分。
计算单元23,用于根据所述分析单元22分析得到的所述第一公共频繁子图和所述获取单元21获取的所述每个应用程序的数据流图,计算所述每个应用程序的流图相似度,所述流图相似度用于表征所述一组应用程序中的一个应用程序与所述一组应用程序中其他应用程序的相似性。
分组单元24,用于根据所述计算单元23计算得到的所述每个应用程序的流图相似度,得到对所述一组应用程序中的应用程序的分组结果,所述分组结果包括至少一个子应用组。
确定单元25,用于根据所述获取单元21获取的所述分组结果中任一子应用组中的应用程序的数据流图,确定所述子应用组中应用程序的计算逻辑,所述计算逻辑用于设计所述子应用组中的应用程序的体系结构。
进一步的,如图10所示,所述确定单元25,包括:分析模块251和第一确定模块252。
分析模块251,用于分析所述子应用组中应用程序的数据流图,得到至少一个第二公共频繁子图,所述第二公共频繁子图为所述子应用组中至少两个应用程序的数据流图的公共部分。
第一确定模块252,用于根据所述分析模块251分析得到的所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑。
进一步的,如图11所示,所述计算单元23,包括:第二确定模块231和第一计算模块232。
第二确定模块231,用于确定第一应用程序的匹配顶点个数和所述第一应用程序的数据流图中的顶点个数,所述第一应用程序为所述一组应用程序中的任一个应用程序,所述第一应用程序的匹配顶点个数为所述第一公共频繁子图在所述第一应用程序的数据流图中所匹配的顶点个数之和。
第一计算模块232,用于计算所述第二确定模块231确定的所述第一应用程序的匹配顶点个数和所述第一应用程序的数据流图中的顶点个数的比值,所述比值用于表征所述第一应用程序的流图相似度。
进一步的,如图12所示,所述分组单元24,包括:第二计算模块241和分组模块242。
第二计算模块241,用于计算所述一组应用程序中任意两个应用程序的流图相似度的平均值,所述任意两个应用程序的流图相似度的平均值用于表征该两个应用程序的相对相似度;采用1减去所述任意两个应用程序的相对相似度,得到该两个应用程序的差异度。
分组模块242,用于根据所述第二计算模块241计算得到的所述一组应用程序中所有应用程序两两之间的差异度,得到对所述一组应用程序中的应用程序的分组结果。
进一步的,所述计算单元23,还用于在所述分组单元24根据所述每个应用程序的流图相似度,得到所述分组结果之前,
根据所述每个应用程序的流图相似度,计算所述一组应用程序的流图相似度的期望值;
根据所述每个应用程序的流图相似度以及所述一组应用程序的流图相似度的期望值,计算所述一组应用程序的流图相似度的方差。
所述分组单元24,具体用于:
若所述计算单元23计算得到的所述一组应用程序的流图相似度的方差小于或等于第一预设阈值,则根据所述每个应用程序的流图相似度,得到所述分组结果。
进一步的,所述分析单元22,还用于:
若所述计算单元23计算得到的所述一组应用程序的流图相似度的方差大于所述第一预设阈值,则重新分析所述每个应用程序的数据流图,得到至少一个第三公共频繁子图,所述第三公共频繁子图为所述一组应用程序中至少三个应用程序的数据流图的公共部分。
其中,所述第三公共频繁子图用于计算所述每个应用程序的流图相似度。
进一步的,所述计算单元23,还用于在所述第一确定模块252根据所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑之前,
根据所述子应用组中每个应用程序的流图相似度,计算所述子应用组中应用程序的流图相似度的期望值;
根据所述子应用组中每个应用程序的流图相似度以及所述子应用组中应用程序的流图相似度的期望值,计算所述子应用组中应用程序的流图相似度的方差。
所述第一确定模块252,具体用于:
若所述计算单元23计算得到的所述子应用组中应用程序的流图相似度的方差小于或等于第二预设阈值,则根据所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑。
进一步的,所述分析模块251,还用于:
若所述计算单元23计算得到的所述子应用组中应用程序的流图相似度的方差大于所述第二预设阈值,则重新分析所述子应用组中应用程序的数据流图,得到至少一个第四公共频繁子图,所述第四公共频繁子图为所述子应用组中至少三个应用程序的数据流图的公共部分。
进一步的,所述获取单元21,具体用于:
获取所述一组应用程序中每个应用程序的源代码;
编译所述一组应用程序中每个应用程序的源代码,得到所述一组应用程序中每个应用程序的数据流图。
进一步的,所述分析单元22,具体用于采用频繁子图挖掘工具CGFSM,从所述每个应用程序的数据流图中挖掘出所述第一公共频繁子图。
进一步的,所述获取单元21,具体用于采用底层虚拟机LLVM工具将所述一组应用程序中每个应用程序的源代码编译为中间代码IR,并将中间代码IR转化为数据流图。
进一步的,所述一组应用程序中的应用程序属于一个或多个领域。
本发明实施例提供一种确定应用程序计算逻辑的装置,如图13所示,该确定应用程序计算逻辑的装置包括:存储器31和处理器32,存储器31和处理器32通过总线33连接并完成相互间的通信,其中:
所述存储器31用于存储可执行程序代码,所述存储器31为所述确定应用程序计算逻辑的装置的计算机存储介质,所述计算机存储介质可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
所述处理器32可能是一个中央处理器(CentralProcessingUnit,CPU),或者是特定集成电路(ApplicationSpecificIntegratedCircuit,ASIC),或者是被配置成实施本发明实施例的一个或多个集成电路。
处理器32,用于执行所述存储器31存储所述程序代码,并具体用于代替上述实施例中的获取单元21、分析单元22、计算单元23、分组单元24以及确定单元25,确定应用程序计算逻辑。
需要说明的是,本发明实施例中的处理器32可以为上述实施例中获取单元21、分析单元22、计算单元23、分组单元24以及确定单元25等功能单元或功能模块的集成,即上述各功能单元可以集成在一个该处理器32中。
其中,总线可以是工业标准体系结构(IndustryStandardArchitecture,ISA)总线、外部设备互连(PeripheralComponentInterconnect,PCI)总线或扩展工业标准体系结构(ExtendedIndustryStandardArchitecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图13中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
需要说明的是,本发明实施例提供的确定应用程序计算逻辑的装置中你功能模块的具体描述可以参考本发明方法实施例中对应部分的相关描述,本实施例这里不再赘述。
本发明实施例提供的确定应用程序计算逻辑的装置,可以通过分析一组应用程序中的每个应用程序,得到该组应用程序的公共频繁子图(至少一个第一公共频繁子图);由于第一公共频繁子图为该组应用程序中至少两个应用程序的数据流图中的公共部分,因此根据第一公共频繁子图和每个应用程序的数据流图,计算得到的每个应用程序的流图相似度则可以用于表征一组应用程序中每个应用程序与一组应用程序中其他应用程序的相似性;然后根据每个应用程序的流图相似度则可以将该组应用程序中的应用程序划分至不同的子应用组,这样则可以将相似度较高的应用程序划分至同一子应用组,针对各个子应用组,根据其包含的应用程序的数据流图,确定该子应用组中的应用程序的计算逻辑。
通过本方案,不需要采用人工分析的方式对各个应用程序逐个分析,而是根据一组应用程序中各个应用程序与其他应用程序的相似度对应用程序进行分组,然后确定该子应用组中的应用程序的计算逻辑,该计算逻辑是分析一个子应用组中的应用程序得到的,因此采用该计算逻辑设计得到的体系结构则可以适用于该子应用组中的所有应用程序的。
由此可见,本方案实现了一组应用程序的自动分析,提高了对应用程序进行分析的效率;并且可以针对一个子应用组中的所有应用程序确定计算逻辑,从而减少了设计工作量,由于该计算逻辑能够体现出该组应用程序在算法流程上的相似性以及计算结构上的共性,因此采用该计算逻辑设计得到的体系结构则可以适用于该组应用程序中的每一个应用程序,从而扩大了设计得到的体系结构的适用范围。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (21)
1.一种确定应用程序计算逻辑的方法,其特征在于,包括:
获取一组应用程序中每个应用程序的数据流图;
通过分析所述每个应用程序的数据流图,得到至少一个第一公共频繁子图,所述第一公共频繁子图为所述一组应用程序中至少两个应用程序的数据流图的公共部分;
根据所述第一公共频繁子图和所述每个应用程序的数据流图,计算所述每个应用程序的流图相似度,所述流图相似度用于表征所述一组应用程序中的一个应用程序与所述一组应用程序中其他应用程序的相似性;
根据所述每个应用程序的流图相似度,得到对所述一组应用程序中的应用程序的分组结果,所述分组结果包括至少一个子应用组;
根据所述分组结果中任一子应用组中的应用程序的数据流图,确定所述子应用组中应用程序的计算逻辑,所述计算逻辑用于设计所述子应用组中的应用程序的体系结构。
2.根据权利要求1所述的方法,其特征在于,所述根据所述分组结果中任一子应用组中的应用程序的数据流图,确定所述子应用组中应用程序的计算逻辑,包括:
通过分析所述子应用组中应用程序的数据流图,得到至少一个第二公共频繁子图,所述第二公共频繁子图为所述子应用组中至少两个应用程序的数据流图的公共部分;
根据所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述第一公共频繁子图和所述每个应用程序的数据流图,计算所述每个应用程序的流图相似度,包括:
确定第一应用程序的匹配顶点个数和所述第一应用程序的数据流图中的顶点个数,所述第一应用程序为所述一组应用程序中的任一个应用程序,所述第一应用程序的匹配顶点个数为所述第一公共频繁子图在所述第一应用程序的数据流图中所匹配的顶点个数之和;
计算所述第一应用程序的匹配顶点个数和所述第一应用程序的数据流图中的顶点个数的比值,所述比值用于表征所述第一应用程序的流图相似度。
4.根据权利要求1或2所述的方法,其特征在于,所述根据所述每个应用程序的流图相似度,得到对所述一组应用程序中的应用程序的分组结果,包括:
计算所述一组应用程序中任意两个应用程序的流图相似度的平均值,所述任意两个应用程序的流图相似度的平均值用于表征该两个应用程序的相对相似度;
采用1减去所述任意两个应用程序的相对相似度,得到该两个应用程序的差异度;
根据所述一组应用程序中所有应用程序两两之间的差异度,得到对所述一组应用程序中的应用程序的分组结果。
5.根据权利要求1所述的方法,其特征在于,在所述根据所述每个应用程序的流图相似度,得到对所述一组应用程序中的应用程序的分组结果之前,所述方法还包括:
根据所述每个应用程序的流图相似度,计算所述一组应用程序的流图相似度的期望值;
根据所述每个应用程序的流图相似度以及所述一组应用程序的流图相似度的期望值,计算所述一组应用程序的流图相似度的方差;
所述根据所述每个应用程序的流图相似度,得到对所述一组应用程序中的应用程序的分组结果,包括:
若所述一组应用程序的流图相似度的方差小于或等于第一预设阈值,则根据所述每个应用程序的流图相似度,得到所述分组结果。
6.根据权利要求5所述的方法,其特征在于,还包括:
若所述一组应用程序的流图相似度的方差大于所述第一预设阈值,则重新分析所述每个应用程序的数据流图,得到至少一个第三公共频繁子图,所述第三公共频繁子图为所述一组应用程序中至少三个应用程序的数据流图的公共部分;
其中,所述第三公共频繁子图用于计算所述每个应用程序的流图相似度。
7.根据权利要求2所述的方法,其特征在于,在所述根据所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑之前,所述方法还包括:
根据所述子应用组中每个应用程序的流图相似度,计算所述子应用组中应用程序的流图相似度的期望值;
根据所述子应用组中每个应用程序的流图相似度以及所述子应用组中应用程序的流图相似度的期望值,计算所述子应用组中应用程序的流图相似度的方差;
所述根据所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑,包括:
若所述子应用组中应用程序的流图相似度的方差小于或等于第二预设阈值,则根据所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑。
8.根据权利要求7所述的方法,其特征在于,还包括:
若所述子应用组中应用程序的流图相似度的方差大于所述第二预设阈值,则重新分析所述子应用组中应用程序的数据流图,得到至少一个第四公共频繁子图,所述第四公共频繁子图为所述子应用组中至少三个应用程序的数据流图的公共部分。
9.根据权利要求1、2或5-8中任一项所述的方法,其特征在于,所述获取一组应用程序中每个应用程序的数据流图,包括:
获取所述一组应用程序中每个应用程序的源代码;
编译所述一组应用程序中每个应用程序的源代码,得到所述一组应用程序中每个应用程序的数据流图。
10.根据权利要求1所述的方法,其特征在于,所述分析所述每个应用程序的数据流图,得到至少一个第一公共频繁子图,包括:
采用频繁子图挖掘工具CGFSM,从所述每个应用程序的数据流图中挖掘出所述第一公共频繁子图。
11.一种确定应用程序计算逻辑的装置,其特征在于,包括:
获取单元,用于获取一组应用程序中每个应用程序的数据流图;
分析单元,用于通过分析所述获取单元获取的所述每个应用程序的数据流图,得到至少一个第一公共频繁子图,所述第一公共频繁子图为所述一组应用程序中至少两个应用程序的数据流图的公共部分;
计算单元,用于根据所述分析单元分析得到的所述第一公共频繁子图和所述获取单元获取的所述每个应用程序的数据流图,计算所述每个应用程序的流图相似度,所述流图相似度用于表征所述一组应用程序中的一个应用程序与所述一组应用程序中其他应用程序的相似性;
分组单元,用于根据所述计算单元计算得到的所述每个应用程序的流图相似度,得到对所述一组应用程序中的应用程序的分组结果,所述分组结果包括至少一个子应用组;
确定单元,用于根据所述获取单元获取的所述分组结果中任一子应用组中的应用程序的数据流图,确定所述子应用组中应用程序的计算逻辑,所述计算逻辑用于设计所述子应用组中的应用程序的体系结构。
12.根据权利要求11所述的装置,其特征在于,所述确定单元,包括:
分析模块,用于分析所述子应用组中应用程序的数据流图,得到至少一个第二公共频繁子图,所述第二公共频繁子图为所述子应用组中至少两个应用程序的数据流图的公共部分;
第一确定模块,用于根据所述分析模块分析得到的所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑。
13.根据权利要求11或12所述的装置,其特征在于,所述计算单元,包括:
第二确定模块,用于确定第一应用程序的匹配顶点个数和所述第一应用程序的数据流图中的顶点个数,所述第一应用程序为所述一组应用程序中的任一个应用程序,所述第一应用程序的匹配顶点个数为所述第一公共频繁子图在所述第一应用程序的数据流图中所匹配的顶点个数之和;
第一计算模块,用于计算所述第二确定模块确定的所述第一应用程序的匹配顶点个数和所述第一应用程序的数据流图中的顶点个数的比值,所述比值用于表征所述第一应用程序的流图相似度。
14.根据权利要求11或12所述的装置,其特征在于,所述分组单元,包括:
第二计算模块,用于计算所述一组应用程序中任意两个应用程序的流图相似度的平均值,所述任意两个应用程序的流图相似度的平均值用于表征该两个应用程序的相对相似度;采用1减去所述任意两个应用程序的相对相似度,得到该两个应用程序的差异度;
分组模块,用于根据所述第二计算模块计算得到的所述一组应用程序中所有应用程序两两之间的差异度,得到对所述一组应用程序中的应用程序的分组结果。
15.根据权利要求11所述的装置,其特征在于,所述计算单元,还用于在所述分组单元根据所述每个应用程序的流图相似度,得到所述分组结果之前,
根据所述每个应用程序的流图相似度,计算所述一组应用程序的流图相似度的期望值;
根据所述每个应用程序的流图相似度以及所述一组应用程序的流图相似度的期望值,计算所述一组应用程序的流图相似度的方差;
所述分组单元,具体用于:
若所述计算单元计算得到的所述一组应用程序的流图相似度的方差小于或等于第一预设阈值,则根据所述每个应用程序的流图相似度,得到所述分组结果。
16.根据权利要求15所述的装置,其特征在于,所述分析单元,还用于:
若所述计算单元计算得到的所述一组应用程序的流图相似度的方差大于所述第一预设阈值,则重新分析所述每个应用程序的数据流图,得到至少一个第三公共频繁子图,所述第三公共频繁子图为所述一组应用程序中至少三个应用程序的数据流图的公共部分;
其中,所述第三公共频繁子图用于计算所述每个应用程序的流图相似度。
17.根据权利要求12所述的装置,其特征在于,所述计算单元,还用于在所述第一确定模块根据所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑之前,
根据所述子应用组中每个应用程序的流图相似度,计算所述子应用组中应用程序的流图相似度的期望值;
根据所述子应用组中每个应用程序的流图相似度以及所述子应用组中应用程序的流图相似度的期望值,计算所述子应用组中应用程序的流图相似度的方差;
所述第一确定模块,具体用于:
若所述计算单元计算得到的所述子应用组中应用程序的流图相似度的方差小于或等于第二预设阈值,则根据所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑。
18.根据权利要求17所述的装置,其特征在于,所述分析模块,还用于:
若所述计算单元计算得到的所述子应用组中应用程序的流图相似度的方差大于所述第二预设阈值,则重新分析所述子应用组中应用程序的数据流图,得到至少一个第四公共频繁子图,所述第四公共频繁子图为所述子应用组中至少三个应用程序的数据流图的公共部分。
19.根据权利要求11、12或15-18中任一项所述的装置,其特征在于,所述获取单元,具体用于:
获取所述一组应用程序中每个应用程序的源代码;
编译所述一组应用程序中每个应用程序的源代码,得到所述一组应用程序中每个应用程序的数据流图。
20.根据权利要求11所述的装置,其特征在于,所述分析单元,具体用于:
采用频繁子图挖掘工具CGFSM,从所述每个应用程序的数据流图中挖掘出所述第一公共频繁子图。
21.一种确定应用程序计算逻辑的装置,其特征在于,包括:
存储器,用于存储一组程序代码;
处理器,用于根据所述存储器存储的一组程序代码,执行如权利要求1-10中任一项所述的确定应用程序计算逻辑的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510681039.9A CN105389194B (zh) | 2015-10-19 | 2015-10-19 | 一种确定应用程序计算逻辑的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510681039.9A CN105389194B (zh) | 2015-10-19 | 2015-10-19 | 一种确定应用程序计算逻辑的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105389194A true CN105389194A (zh) | 2016-03-09 |
CN105389194B CN105389194B (zh) | 2019-02-01 |
Family
ID=55421501
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510681039.9A Active CN105389194B (zh) | 2015-10-19 | 2015-10-19 | 一种确定应用程序计算逻辑的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105389194B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109508412A (zh) * | 2018-11-20 | 2019-03-22 | 中科驭数(北京)科技有限公司 | 一种时间序列处理的计算流图构建方法和装置 |
CN110333818A (zh) * | 2019-05-24 | 2019-10-15 | 华为技术有限公司 | 分屏显示的处理方法、装置、设备和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101650651A (zh) * | 2009-09-17 | 2010-02-17 | 浙江大学 | 一种源代码级别程序结构的可视化方法 |
CN101655782A (zh) * | 2009-09-10 | 2010-02-24 | 浙江大学 | 基于基本块的汇编代码得出程序的数据流图的实现方法 |
US20100083240A1 (en) * | 2006-10-19 | 2010-04-01 | Checkmarx Ltd | Locating security vulnerabilities in source code |
CN101710291A (zh) * | 2009-11-27 | 2010-05-19 | 中国科学院声学研究所 | 一种优化堆栈空间的寄存器分配方法 |
CN101968768A (zh) * | 2010-10-22 | 2011-02-09 | 中国人民解放军理工大学 | 一种基于缺陷的软件安全性测试需求的获取与分级方法 |
CN102929725A (zh) * | 2012-11-12 | 2013-02-13 | 中国人民解放军海军工程大学 | 信号处理并行计算软件的动态重配置方法 |
-
2015
- 2015-10-19 CN CN201510681039.9A patent/CN105389194B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100083240A1 (en) * | 2006-10-19 | 2010-04-01 | Checkmarx Ltd | Locating security vulnerabilities in source code |
CN101655782A (zh) * | 2009-09-10 | 2010-02-24 | 浙江大学 | 基于基本块的汇编代码得出程序的数据流图的实现方法 |
CN101650651A (zh) * | 2009-09-17 | 2010-02-17 | 浙江大学 | 一种源代码级别程序结构的可视化方法 |
CN101710291A (zh) * | 2009-11-27 | 2010-05-19 | 中国科学院声学研究所 | 一种优化堆栈空间的寄存器分配方法 |
CN101968768A (zh) * | 2010-10-22 | 2011-02-09 | 中国人民解放军理工大学 | 一种基于缺陷的软件安全性测试需求的获取与分级方法 |
CN102929725A (zh) * | 2012-11-12 | 2013-02-13 | 中国人民解放军海军工程大学 | 信号处理并行计算软件的动态重配置方法 |
Non-Patent Citations (1)
Title |
---|
秦晓: "软件图语言的若干问题研究", 《小型微型计算机系统》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109508412A (zh) * | 2018-11-20 | 2019-03-22 | 中科驭数(北京)科技有限公司 | 一种时间序列处理的计算流图构建方法和装置 |
CN109508412B (zh) * | 2018-11-20 | 2019-12-20 | 中科驭数(北京)科技有限公司 | 一种时间序列处理的计算流图构建方法和装置 |
CN110333818A (zh) * | 2019-05-24 | 2019-10-15 | 华为技术有限公司 | 分屏显示的处理方法、装置、设备和存储介质 |
US11822784B2 (en) | 2019-05-24 | 2023-11-21 | Huawei Technologies Co., Ltd. | Split-screen display processing method and apparatus, device, and storage medium |
Also Published As
Publication number | Publication date |
---|---|
CN105389194B (zh) | 2019-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7613716B2 (en) | Partitioning for model-based design | |
Birchler et al. | Single and multi-objective test cases prioritization for self-driving cars in virtual environments | |
MXPA02003699A (es) | Un metodo y un sistema para generar un codigo de software utilizando un traductor de lenguaje simbolico. | |
Zuo et al. | A polyhedral-based systemc modeling and generation framework for effective low-power design space exploration | |
US11727166B2 (en) | Techniques for generating graph-based representations of complex mechanical assemblies | |
Fitzgerald et al. | From embedded to cyber-physical systems: Challenges and future directions | |
CN105389194A (zh) | 一种确定应用程序计算逻辑的方法及装置 | |
CN105511867A (zh) | 一种优化模式自动生成方法及优化装置 | |
Chen | A short historical survey of functional hardware languages | |
Chow et al. | Mixed precision processing in reconfigurable systems | |
Platunov et al. | Expanding design space for complex embedded systems with HLD-methodology | |
Kiran et al. | Execution time prediction of imperative paradigm tasks for grid scheduling optimization | |
Yasudo et al. | Performance estimation for exascale reconfigurable dataflow platforms | |
Wolf et al. | Intervals in software execution cost analysis | |
Vytovtov et al. | Source code quality classification based on software metrics | |
Meeuws et al. | Quipu: A statistical model for predicting hardware resources | |
Sklyarov et al. | FPGA-based systems in information and communication | |
Das et al. | Robustness analysis of loop-free floating-point programs via symbolic automatic differentiation | |
CN102890642B (zh) | 基于匹配矩阵的异构重构计算的性能分析方法 | |
Gonzalez-Alvarez et al. | MInGLE: an efficient framework for domain acceleration using low-power specialized functional units | |
Sarukkai | Scalability analysis tools for SPMD message-passing parallel programs | |
Safiran et al. | Toward Adjoint OpenFOAM | |
Ray | Automated translation of matlab Simulink/Stateflow models to an intermediate format in hyvisual | |
UOS et al. | Initial report on the dl accelerator design | |
Maeda et al. | An Approach to Transforming Systems for Execution on Cloud Computing Systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |