[发明专利]基于调用栈和依赖路径的函数调用代码生成方法及系统有效

专利信息
申请号: 201811015368.X 申请日: 2018-08-31
公开(公告)号: CN109240666B 公开(公告)日: 2020-08-25
发明(设计)人: 蔡华谦;黄罡;骆宇冲;景翔;马郓 申请(专利权)人: 北京大学
主分类号: G06F8/30 分类号: G06F8/30
代理公司: 北京润泽恒知识产权代理有限公司 11319 代理人: 莎日娜
地址: 100871*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 基于 调用 依赖 路径 函数 代码 生成 方法 系统
【说明书】:

发明公开了一种基于调用栈和依赖路径的函数调用代码生成方法及系统,通过对安卓应用运行进行监控,得到应用的行为反射运行时模型,并在行为反射运行时模型的运行时栈模型中标注包含目标数据的目标对象,并生成目标对象的所有函数调用集,再根据使用每一函数调用集生成函数调用代码的难度为每一函数调用集进行评分,并根据评分推荐函数调用集以生成函数调用代码。本发明能够在需要生成一条函数调用对应的代码时,对于每个未构造的新对象,快速找出对象之前调用的函数、以对象作为参数的函数以及函数调用栈,形成多个函数组合,并以此为基础为其推荐代码生成可能性高的方案,有效解决安卓应用微服务开发中执行序列复杂的难题。

技术领域

本发明涉及计算机软件,尤其涉及一种基于调用栈和依赖路径的函数调用代码生成方法及系统。

背景技术

应用功能及数据的开放与融合能够产生巨大的价值,但安卓应用的大部分功能与数据并不提供可程序化调用的接口,难以实现功能及数据的开放与融合。目前,实现安卓应用功能及数据的开放与融合的最好办法是将安卓应用微服务化,即将安卓应用中的功能与数据以服务的形式提取出来。对于安卓应用来说,微服务化需要在应用运行时对应用进行修改。在经典软件工程中,强调的是在开发态修改软件,并不支持安卓应用微服务化的需求。而操作系统、中间件等系统软件能够提供计算反射(computational reflection,简称反射)机制,该机制能够实现对软件运行态的监测与控制。基于计算反射机制,能够有效解决安卓应用的微服务化问题。基于计算反射机制,通过监测应用运行时安卓系统的各种信息,生成安卓应用运行时的行为描述,通过对这些行为描述按需处理并生成应用控制逻辑,最终实现安卓应用的微服务化。

然而,安卓应用的功能实现通常是非常复杂的,应用自身的包和所依赖的包一般数目巨大,这意味着实现功能的代码所依赖的函数数目可能很多,调用栈深度很深。行为反射技术框架所记录的执行序列是应用运行时除系统调用外的所有函数调用,所以执行序列的条目通常非常巨大,函数调用栈很深。这是执行序列复杂性的一方面体现。另一方面,由于执行序列中某一函数的构造可能存在多种方式,因此对于目标功能与数据可能存在多个运行时栈模型切片,每个切片对应一种微服务开发方法。每个切片可能是单线程也可能是多线程结构,不同结构的微服务开发方法也不相同。不同的切片生成微服务的难度有较大差别,这也是执行序列复杂性的体现。

同时,对于某一特定的运行时栈模型切片,需要从目标结果或目标数据一步步反向构造能实现目标功能的代码片段。构造执行序列中的某条函数调用时,如果该函数的执行依赖一个新对象,就需要把从该对象第一次出现到该函数调用的所有的该对象调用的函数构造出来,这样才能保证该对象在该函数执行时的可用性和正确性。而在这一段执行序列中,该对象调用的函数有可能会依赖更多新的对象,又将重复上述过程,直至没有新对象依赖为止。整个过程产生了一个依赖关系树,从图8所示的目标函数依赖关系树可以看出,构造目标函数的调用可能涉及非常多的新对象及这些新对象的函数调用,这体现了运行时栈模型中数据依赖的复杂性。再者,在运行时栈模型中,有一部分对象是调用构造函数或者作为某个函数的返回值产生的,但还有一部分对象第一次出现就作为函数的参数或者调用者出现,对于这些对象,需要在运行时堆模型中获取。在运行时堆模型中获取对象,需要根据对象的引用信息,不断地寻找引用了对象的对象,直至寻找到一个静态对象。这一过程称为寻找对象引用链,对象引用链如图9所示,图中实线所连接的就是成功寻找到静态变量的引用链,虚线表示在路径中并未成功找到静态变量。找到静态变量后,有些静态变量的类加载器可能与应用类加载器(安卓应用最基础的类加载器)不一致,此时我们需要进一步去构造该静态变量的类加载器。这些过程体现出运行时堆模型中也存在着复杂的数据依赖。

执行序列复杂和数据依赖复杂将导致根据行为反射运行时模型将安卓应用微服务化的成本非常高,开发过程也非常艰难与耗时。

发明内容

本发明主要目的在于,提供一种基于调用栈和依赖路径的函数调用代码生成方法及系统,以解决现有的将安卓应用微服务化的方式所遇到的执行序列复杂的问题。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京大学,未经北京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201811015368.X/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top