一种确定应用程序计算逻辑的方法及装置的制造方法

文档序号:9631424阅读:351来源:国知局
一种确定应用程序计算逻辑的方法及装置的制造方法
【技术领域】
[0001] 本发明涉及计算机技术领域,尤其涉及一种确定应用程序计算逻辑的方法及装 置。
【背景技术】
[0002] 随着电子信息技术的发展,各类应用程序随之产生,应用程序的体系结构设计对 该应用程序的发展至关重要。其中,设计人员在进行应用程序的体系结构设计时,需要充分 考虑到该应用程序的计算逻辑,即需要根据该应用程序的计算逻辑进行该应用程序的体系 结构设计。其中,应用程序的计算逻辑包括:应用程序的计算结构和算法模式。计算结构用 于表征所述应用程序的逻辑计算框架,算法模式用于表征所述逻辑计算框架中每一种计算 的算法模式。
[0003] 现有技术中,可以编译应用程序的源代码,得到该应用程序的数据流图;然后采用 人工分析的方式,由设计人员根据其从业经验,对数据流图进行分析,得到该应用程序的计 算逻辑。
[0004] 但是,采用人工分析的方法,对应用程序进行分析的效率较低,而且往往需要依赖 于设计人员的主观判断才能够准确确定出应用程序的主要计算逻辑,要求设计人员具备较 强的应用程序分析能力,人力成本较高。
[0005] 并且,现有技术中的应用程序分析往往是针对一个应用程序而言的,即需要分析 每一个应用程序得到其计算逻辑,并根据分析得到的计算逻辑设计该应用程序的。这样不 仅会导致设计工作量较大,而且设计得到的体系结构也仅适用于该应用程序,体系结构的 适用范围较小。

【发明内容】

[0006] 本发明的实施例提供一种确定应用程序计算逻辑的方法及装置,实现了一组应用 程序的自动分析,提高了对应用程序进行分析的效率;并且可以针对一个子应用组中的所 有应用程序确定计算逻辑,从而减少了设计工作量,由于该计算逻辑能够体现出该组应用 程序在算法流程上的相似性以及计算结构上的共性,因此采用该计算逻辑设计得到的体系 结构则可以适用于该组应用程序中的每一个应用程序,从而扩大了设计得到的体系结构的 适用范围。
[0007] 为达到上述目的,本发明的实施例采用如下技术方案:
[0008] 本发明实施例的第一方面,提供一种确定应用程序计算逻辑的方法,包括:
[0009] 获取一组应用程序中每个应用程序的数据流图;
[0010] 通过分析所述每个应用程序的数据流图,得到至少一个第一公共频繁子图,所述 第一公共频繁子图为所述一组应用程序中至少两个应用程序的数据流图的公共部分; [0011] 根据所述第一公共频繁子图和所述每个应用程序的数据流图,计算所述每个应用 程序的流图相似度,所述流图相似度用于表征所述一组应用程序中的一个应用程序与所述 一组应用程序中其他应用程序的相似性;
[0012] 根据所述每个应用程序的流图相似度,得到对所述一组应用程序中的应用程序的 分组结果,所述分组结果包括至少一个子应用组;
[0013] 根据所述分组结果中任一子应用组中的应用程序的数据流图,确定所述子应用组 中应用程序的计算逻辑,所述计算逻辑用于设计所述子应用组中的应用程序的体系结构。
[0014] 本发明实施例提供的确定应用程序计算逻辑的方法,可以通过分析一组应用程序 中的每个应用程序,得到该组应用程序的公共频繁子图(至少一个第一公共频繁子图);由 于第一公共频繁子图为该组应用程序中至少两个应用程序的数据流图中的公共部分,因此 根据第一公共频繁子图和每个应用程序的数据流图,计算得到的每个应用程序的流图相似 度则可以用于表征一组应用程序中每个应用程序与一组应用程序中其他应用程序的相似 性;然后根据每个应用程序的流图相似度则可以将该组应用程序中的应用程序划分至不同 的子应用组,这样则可以将相似度较高的应用程序划分至同一子应用组,针对各个子应用 组,根据其包含的应用程序的数据流图,确定该子应用组中的应用程序的计算逻辑。
[0015] 通过本方案,不需要采用人工分析的方式对各个应用程序逐个分析,而是根据一 组应用程序中各个应用程序与其他应用程序的相似度对应用程序进行分组,然后确定该子 应用组中的应用程序的计算逻辑,该计算逻辑是分析一个子应用组中的应用程序得到的, 因此采用该计算逻辑设计得到的体系结构则可以适用于该子应用组中的所有应用程序的。
[0016] 由此可见,本方案实现了一组应用程序的自动分析,提高了对应用程序进行分析 的效率;并且可以针对一个子应用组中的所有应用程序确定计算逻辑,从而减少了设计工 作量,并扩大了设计得到的体系结构的适用范围。
[0017] 结合第一方面,在第一种可能的实现方式中,所述根据所述分组结果中任一子应 用组中的应用程序的数据流图,确定所述子应用组中应用程序的计算逻辑,包括:
[0018] 通过分析所述子应用组中应用程序的数据流图,得到至少一个第二公共频繁子 图,所述第二公共频繁子图为所述子应用组中至少两个应用程序的数据流图的公共部分;
[0019] 根据所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑。
[0020] 在获得分组结果后,可以通过分析子应用组中应用程序的数据流图,得到相较于 第一公共频繁子图能够更加突出的体现出该子应用组的公共计算逻辑的至少一个第二公 共频繁子图,根据第二公共频繁子图确定出更加适合设计子应用组中的应用程序的体系结 构的计算逻辑。
[0021] 结合第一方面和第一方面的第一种可能的实现方式,在第二种可能的实现方式 中,所述根据所述第一公共频繁子图和所述每个应用程序的数据流图,计算所述每个应用 程序的流图相似度,包括:
[0022] 确定第一应用程序的匹配顶点个数和所述第一应用程序的数据流图中的顶点个 数,所述第一应用程序为所述一组应用程序中的任一个应用程序,所述第一应用程序的匹 配顶点个数为所述第一公共频繁子图在所述第一应用程序的数据流图中所匹配的顶点个 数之和;
[0023] 计算所述第一应用程序的匹配顶点个数和所述第一应用程序的数据流图中的顶 点个数的比值,所述比值用于表征所述第一应用程序的流图相似度。
[0024] 结合第一方面和第一方面的第一种可能的实现方式,在第三种可能的实现方式 中,所述根据所述每个应用程序的流图相似度,得到对所述一组应用程序中的应用程序的 分组结果,包括:
[0025] 计算所述一组应用程序中任意两个应用程序的流图相似度的平均值,所述任意两 个应用程序的流图相似度的平均值用于表征该两个应用程序的相对相似度;
[0026] 采用1减去所述任意两个应用程序的相对相似度,得到该两个应用程序的差异 度;
[0027] 根据所述一组应用程序中所有应用程序两两之间的差异度,得到对所述一组应用 程序中的应用程序的分组结果。
[0028] 结合第一方面,在第四种可能的实现方式中,在所述根据所述每个应用程序的流 图相似度,得到对所述一组应用程序中的应用程序的分组结果之前,所述方法还包括:
[0029] 根据所述每个应用程序的流图相似度,计算所述一组应用程序的流图相似度的期 望值;
[0030] 根据所述每个应用程序的流图相似度以及所述一组应用程序的流图相似度的期 望值,计算所述一组应用程序的流图相似度的方差;
[0031] 所述根据所述每个应用程序的流图相似度,得到对所述一组应用程序中的应用程 序的分组结果,包括:
[0032] 若所述一组应用程序的流图相似度的方差小于或等于第一预设阈值,则根据所述 每个应用程序的流图相似度,得到所述分组结果。
[0033] 可以想到的是,一组应用程序的流图相似度的方差可以体现出该组应用程序中每 个应用程序的流图相似度之间的波动性。如果该组应用程序的流图相似度的方差较小,则 表示该组应用程序中每个应用程序的流图相似度之间的波动不大,则表示分析该组应用程 序中每个应用程序的数据流图,得到的至少一个第一公共频繁子图可以体现出该组应用程 序在算法流程上的相似性以及计算结构上的共性。
[0034] 因此,在一组应用程序的流图相似度的方差较小(小于或等于第一预设阈值)时, 再根据每个应用程序的流图相似度对该组应用程序进行分组,能够得到更加准确的分组结 果,即可以保证分组结果中每一个子应用组中的应用程序的相似度。
[0035] 结合第四种可能的实现方式,在第五种可能的实现方式中,该确定应用程序计算 逻辑的方法,还可以包括:
[0036] 若所述一组应用程序的流图相似度的方差大于所述第一预设阈值,则重新分析所 述每个应用程序的数据流图,得到至少一个第三公共频繁子图,所述第三公共频繁子图为 所述一组应用程序中至少三个应用程序的数据流图的公共部分;
[0037] 其中,所述第三公共频繁子图用于计算所述每个应用程序的流图相似度。
[0038] 可以想到的是,若一组应用程序的流图相似度的方差较大,则表示该组应用程序 中每个应用程序的流图相似度之间的波动较大,则分析该组应用程序中每个应用程序的数 据流图,得到的至少一个第一公共频繁子图不足以最大程度地体现出该组应用程序在算法 流程上的相似性以及计算结构上的共性。
[0039] 由于至少三个应用程序的数据流图的公共部分相较于至少两个应用程序的数据 流图的公共部分更能够体现出该组应用程序在算法流程上的相似性以及计算结构上的共 性,因此,在重新分析每个应用程序的数据流图时,将一组应用程序中至少三个应用程序的 数据流图的公共部分作为该组应用程序的公共频繁子图,可以提高后续计算应用程序的流 图相似度的准确性,根据较为准确的流图相似度对该组应用程序进行分组,能够得到更加 准确的分组结果。
[0040] 结合第一方面,第四种可能的实现方式或者第五种可能的实现方式,在第六种可 能的实现方式中,所述获取一组应用程序中每个应用程序的数据流图,包括:
[0041] 获取所述一组应用程序中每个应用程序的源代码;
[0042] 编译所述一组应用程序中每个应用程序的源代码,得到所述一组应用程序中每个 应用程序的数据流图。
[0043] 结合第一种可能的实现方式,在第七种可能的实现方式中,在所述根据所述第二 公共频繁子图,确定所述子应用组中应用程序的计算逻辑之前,所述方法还包括:
[0044] 根据所述子应用组中每个应用程序的流图相似度,计算所述子应用组中应用程序 的流图相似度的期望值;
[0045] 根据所述每个应用程序的流图相似度以及所述子应用组中应用程序的流图相似 度的期望值,计算所述子应用组中应用程序的流图相似度的方差;
[0046] 所述根据所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑,包 括:
[0047] 若所述子应用组中应用程序的流图相似度的方差小于或等于第二预设阈值,则根 据所述第二公共频繁子图,确定所述子应用组中应用程序的计算逻辑。
[0048] 可以想到的是,子应用组中应用程序的流图相似度的方差可以体现出子应用组中 每个应用程序的流图相似度之间的波动性。如果子应用组中应用程序的流图相似度较小, 则表示子应用组中每个应用程序的流图相似度之间的波动不大,则表示分析子应用组中每 个应用程序的数据流图,得到的至少一个第二公共频繁子图可以体现出该子应用组中的所 有应用程序在算法流程上的相似性以及计算结构上的共性。
[0049] 因此,在子应用组中应用程序的流图相似度的方差较小(小于或等于第二预设阈 值)时,再根据第二公共频繁子图,确定子应用组中应用程序的计算逻辑,可以保证得到的 计算逻辑更加适用于该子应用组中的所有应用程序,根据该计算逻辑设计得到的体系结构 则更加适用于子应用组中的所有应用程序。
[0050] 结合第七种可能的实现方式,在第八种可能的实现方式中,该确定应用程序计算 逻辑的方法,还可以包括:
[0051] 若所述子应用组中应用程序的流图相似度的方差大于所述第二预设阈值,则重新 分析所述子应用组中应用程序的数据流图,得到至少一个第四公共频繁子图,所述第四公 共频繁子图为所述子应用组中至少三个应用程序的数据流图的公共部分。
[0052] 如果子应用组中应用程序的流图相似度较大,则表示子应用组中每个应用程序的 流图相似度之间的波动较大,则表示分析子应用组中每个应用程序的数据流图,得到的至 少一个第二公共频繁子图不足以最大程度地体现出该子应用组中的所有应用程序在算法 流程上的相似性以及计算结构上的共性。
[0053] 由于至少三个应用程序的数据流图的公共部分相较于至少两个应用程序的数据 流图的公共部分更能够体现出该组应用程序在算法流程上的相似性以及计算结构上的共 性,因此,在重新分析子应用组中应用程序的数据流图时,将一组应用程序中至少三个应用 程序的数据流图的公共部分作为子应用组中所有应用程序的公共频繁子图,可以提高后续 确定子应用组中应用程序的计算逻辑的准确性。
[0054] 结合第一方面,在第九种可能的实现方式中,所述分析所述每个应用程序的数据 流图,得到至少一个第一公共频繁子图,包括:
[0055] 采用频繁子图挖掘工具CGFSM,从所述每个应用程序的数据流图中挖掘出所述至 少一个第一公共频繁子图。
[0056] 结合第六种可能的实现方式,在第十种可能的实现方式中,所述编译所述一组应 用程序中每个应用程序的源代码,得到所述一组应用程序中每个应用程序的数据流图,包 括:
[0057] 采用底层虚拟机LLVM工具将所述一组应用程序中每个应用程序的源代码编译为 中间代码IR,并将中间代码IR转化为数据流图。
[0058] 结合上述任一种可能的实现方式,在第十一种可能的实现方式中,所述一组应用 程序中的应用程序属于一个或多个领域。
[0059] 本发明实施例的第二方面,提供一种确定应用程序计算逻辑的装置,包括:
[0060] 获取单元,用于获取一组应用程序中每个应用程序的数据流图;
[0061] 分析单元,用于通过分析所述获取单元
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1