当前位置: 首页 > 专利查询>北京大学专利>正文

一种构造终端应用行为的运行时模型的方法技术

技术编号:22329837 阅读:38 留言:0更新日期:2019-10-19 12:13
本发明专利技术公开了一种构造终端应用行为的运行时模型的方法,通过行为解释器,生成一个完整、准确、详实的应用行为自述,即终端应用应用行为的运行时模型,克服了现有技术在动态、多变、难控的应用运行时环境对终端应用应用行为的监测上的不足,实现了对终端应用应用行为的灵活、完整的监测,为后续实现对终端应用应用行为的指令级控制提供了技术保障。

【技术实现步骤摘要】
一种构造终端应用行为的运行时模型的方法
本专利技术涉及计算机技术,尤其涉及一种构造终端应用行为的运行时模型的方法。
技术介绍
网构软件(也称终端应用)是在互联网开放、动态和多变环境下软件系统基本形态的一种抽象,它既是传统软件结构的自然延伸,又具有区别于集中封装环境下发展起来的传统软件形态的独有基本特征:1)自主性,指网构软件系统中的软件实体具有相对独立性、主动性和自适应性。自主性使其区别于传统软件系统中软件实体的依赖性和被动性;2)协同性,指网构软件系统中软件实体与软件实体之间可按多种静态连接和动态合作方式在开放的网络环境下加以互连、互通、协作和联盟。协同性使其区别于传统软件系统在封闭集中环境下单一静态的连接模式;3)反应性,指网构软件具有感知外部运行和使用环境并对系统演化提供有用信息的能力。反应性使网构软件系统具备了适应开放、动态和多变环境的感知能力;4)演化性,指网构软件结构可根据应用需求和网络环境变化而发生动态演化,主要表现在其实体元素数目的可变性,结构关系的可调节性和结构形态的动态可配置性。演化性使网构软件系统具备了适应比开放、动态和多变环境的应变能力;5)多态性,指网构软件系统的效果体现出相容的多目标性。它可根据某些基本协同原则,在动态变化的网络环境下,满足多种相容的目标形态。多态性使网构软件系统在网络环境下具备了一定的柔性和满足个性化需求的能力。上述网构软件特征的实现,往往需要在运行态修改软件以保障或改善质量、优化或新增功能。经典软件工程方法与技术强调在开发态修改软件,不支持运行态直接修改软件。与之对应,编程语言、操作系统、中间件等系统软件,提供了一种常见的运行态监测与控制应用的主要机制——计算反射(computationalreflection,简称反射)。基于计算反射可以实现各种开发框架、测试框架,以提高开发人员在代码开发、测试甚至运行部署中的效率。在计算机领域,B.Smith给出了通用的反射性的定义:反射性是实体具有按照描述、操作和处理实体所面临的主要问题域的相同方式来描述、操作和处理实体自身的一种能力。该定义后续被解释为:反射性是程序具有在运行时刻操纵一组数据的能力,这组数据描述了该程序的运行状态,操纵有两方面含意:1)监测(Introspection),程序可以观测并推理自身的状态;2)控制(Intercession),程序可以改变自身的运行或语义。而这两方面都需要能将程序执行的状态编码为数据,而提供这种编码便称为反射也就是说,反射其实是将程序的运行状态映射为一组可操作的数据。前一部分组成基层实体,后一部分组成元层实体,而基层实体与元层实体之间保持了因果关联。根据基层实体的不同,计算反射主要分为结构反射和行为反射。结构反射的基层实体为当前程序及其抽象数据类型(可视为应用的状态),而行为反射的基层实体则是当前程序的执行行为及其执行所需的数据(可视为应用的行为)。结构反射是指编程语言提供对当前程序及其抽象数据类型反射的能力,由于与编程语言框架(runtime或framework)的能力类似而自然存在,是大多数编程语言框架固有的能力。行为反射是指编程语言提供对自身的执行语义及其执行所需的数据反射的能力,也就是编程语言框架自身需要被反射,行为反射在监测和控制上面临两个挑战:其一,需要完整描述既有的应用行为,也就是对应用的执行进行监测。应用的执行可视为一组运行时活动的集合,活动的粒度越细,监测的信息也越丰富,监测功能占用的资源就越大,其与业务逻辑之间的资源竞争也就越严重。此时,应用行为监测的复杂性和规模性就成为终端应用行为反射的首要挑战。其二,现有编程语言以及操作系统和中间件等系统软件的行为反射,均不支持指令级的行为控制,根本原因在于指令序列蕴含的复杂的数据和控制依赖,因此,应用行为的指令级控制就成为终端应用行为反射的主要难点。
技术实现思路
本专利技术主要目的在于,提供一种构造终端应用行为的运行时模型的方法,克服上述第一个挑战,实现对终端应用运行时行为的完整监测。本专利技术是通过如下技术方案实现的:为解决上述技术问题,本专利技术提出了一种构造终端应用行为的运行时模型的方法,所述运行时模型包括运行时栈模型和运行时堆模型,所述方法包括构造所述终端应用行为的运行时栈模型的步骤和构造所述终端应用行为的运行时堆模型的步骤;所述构造所述终端应用行为的运行时栈模型的步骤包括:在所述终端应用运行时,获取所述终端应用的内存中真正执行的代码,并对所述真正执行的代码进行抽象,生成控制流图;针对所述控制流图,将需要监测的控制流图输入至预设的行为解释器;利用所述行为解释器对所述需要监测的控制流图进行解释执行,生成所述终端应用运行时的栈活动;在所述终端应用运行时,生成所述栈活动的控制流间的依赖关系,得到所述终端应用行为的运行时栈模型;所述构造所述终端应用行为的运行时堆模型的步骤包括:在所述终端应用运行时,生成堆区的初始状态;生成堆操作活动,得到所述终端应用行为的运行时堆模型。进一步的,所述方法包括类筛选器和活动类型筛选器;其中,所述类筛选器基于包和类名正则匹配的粗粒度筛选,用于去除开发人员不关心的程序活动;所述活动类型筛选器基于活动类型的细粒度筛选,用于去除与开发者不关心的活动类型。进一步的,所述栈活动的活动类型包括方法开始与方法结束,字段读,数组读和同步指令;利用所述行为解释器对所述需要监测的控制流图进行解释执行,生成所述终端应用运行时的栈活动的步骤包括:利用对所述终端应用的应用行为具有监测功能的行为解释器对所述需要监测的控制流图进行解释执行,获得所述终端应用运行时的活动;根据所关注的类,利用所述类筛选器对所述终端应用运行时的活动进行粗粒度筛选,生成由所述类引起的栈活动;针对所述栈活动的活动类型,利用所述活动类型筛选器对所述栈活动进行细粒度筛选。进一步的,所述构造所述终端应用行为的运行时堆模型的步骤包括:所述终端应用运行时的活动包括实例化活动、修改活动和回收活动。进一步的,所述堆操作活动的活动类型包括对象实例化,数组实例化,对象字段写,数组元素写,清除活动和压缩活动;所述生成堆操作活动的步骤包括:根据所关注的类,利用所述类筛选器对所述终端应用运行时的活动进行粗粒度筛选,生成由所述类引起的堆操作活动;针对所述堆操作活动的活动类型,利用所述活动类型筛选器对所述堆操作活动进行细粒度筛选。进一步的,所述依赖关系包括同步依赖和通信依赖。进一步的,在生成控制流间的同步依赖关系时,对于一个方法的结束依赖另一个方法的结束的情况,利用时间戳由后往前寻找其他线程中可匹配的活动,如果找到,则对应于一个同步依赖关系,对于一个活动的开始依赖另一个活动的结束的情况,先对当前线程进行检查,如果该活动为当前线程中的第一个执行的活动,则该活动是依赖另一个线程结束活动的,否则该活动仅是正常的方法调用,并不依赖另一个线程的活动。进一步的,在生成所述栈活动的控制流间的依赖关系时,对所有与活动间通信依赖相关的类进行总结,并将所述类的相关方法与线程依赖相关的方法一起作为生成通信依赖的知识库。进一步的,在所述运行时模型生成时,将所述运行时模型中的活动序列存放于可配置大小的缓冲区中,当活动数量超过预设时,则将所述缓冲区的活动进行序列化,并持久化到本地存储中。进一步的本文档来自技高网
...

【技术保护点】
1.一种构造终端应用行为的运行时模型的方法,其特征在于,所述运行时模型包括运行时栈模型和运行时堆模型,所述方法包括构造所述终端应用行为的运行时栈模型的步骤和构造所述终端应用行为的运行时堆模型的步骤;所述构造所述终端应用行为的运行时栈模型的步骤包括:在所述终端应用运行时,获取所述终端应用的内存中真正执行的代码,并对所述真正执行的代码进行抽象,生成控制流图;针对所述控制流图,将需要监测的控制流图输入至预设的行为解释器;利用所述行为解释器对所述需要监测的控制流图进行解释执行,生成所述终端应用运行时的栈活动;在所述终端应用运行时,生成所述栈活动的控制流间的依赖关系,得到所述终端应用行为的运行时栈模型;所述构造所述终端应用行为的运行时堆模型的步骤包括:在所述终端应用运行时,生成堆区的初始状态;生成堆操作活动,得到所述终端应用行为的运行时堆模型。

【技术特征摘要】
1.一种构造终端应用行为的运行时模型的方法,其特征在于,所述运行时模型包括运行时栈模型和运行时堆模型,所述方法包括构造所述终端应用行为的运行时栈模型的步骤和构造所述终端应用行为的运行时堆模型的步骤;所述构造所述终端应用行为的运行时栈模型的步骤包括:在所述终端应用运行时,获取所述终端应用的内存中真正执行的代码,并对所述真正执行的代码进行抽象,生成控制流图;针对所述控制流图,将需要监测的控制流图输入至预设的行为解释器;利用所述行为解释器对所述需要监测的控制流图进行解释执行,生成所述终端应用运行时的栈活动;在所述终端应用运行时,生成所述栈活动的控制流间的依赖关系,得到所述终端应用行为的运行时栈模型;所述构造所述终端应用行为的运行时堆模型的步骤包括:在所述终端应用运行时,生成堆区的初始状态;生成堆操作活动,得到所述终端应用行为的运行时堆模型。2.如权利要求1所述的方法,其特征在于,所述方法包括类筛选器和活动类型筛选器;其中,所述类筛选器基于包和类名正则匹配的粗粒度筛选,用于去除开发人员不关心的程序活动;所述活动类型筛选器基于活动类型的细粒度筛选,用于去除与开发者不关心的活动类型。3.如权利要求2所述的方法,其特征在于,所述栈活动的活动类型包括方法开始与方法结束,字段读,数组读和同步指令;利用所述行为解释器对所述需要监测的控制流图进行解释执行,生成所述终端应用运行时的栈活动的步骤包括:利用对所述终端应用的应用行为具有监测功能的行为解释器对所述需要监测的控制流图进行解释执行,获得所述终端应用运行时的活动;根据所关注的类,利用所述类筛选器对所述终端应用运行时的活动进行粗粒度筛选,生成由所述类引起的栈活动;针对所述栈活动的活动类型,利用所述活动类型筛选器对所述栈...

【专利技术属性】
技术研发人员:蔡华谦黄罡张颖刘譞哲
申请(专利权)人:北京大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1