【技术实现步骤摘要】
基于程序源码切片重组的软件动态更新热补丁合成方法
本专利技术涉及软件动态更新
,具体而言涉及一种基于程序源码切片重组的软件动态更新热补丁合成方法和系统。
技术介绍
相比于离线更新的先停机再重启的更新策略,软件动态更新的核心思想是在旧版本程序运行时刻,对其进行版本更新。软件动态更新的特点包括:1)动态地监测更新请求,并在收到请求后,短暂暂停旧版本程序的运行;2)在更新时刻,对已加载进内存的代码替换为新版本,同时利用对象状态转换函数,转换内存中已创建的与新版本程序不兼容的对象状态。在开发者发出更新请求前,需要准备好对象状态转换函数。而底层的支撑系统,则利用该对象状态转换函数,对部分对象进行转换,使其与新版本程序兼容,进而使得更新后的程序能够正确的继续执行。在代码涉及的数据结构发生变化时,目前仍缺少一种可靠的生成对象状态转换函数的方法,是因为现有技术仅能利用预定义的简单规则进行尝试组合,只能处理如初级类型间转换、常量赋值等,无法应对现实的软件涉及的复杂更新,如数据表示方法、数据结构的改变。
技术实现思路
本专利技术针对现有技术中的不足,提供一种基于程序源码切片重组的软件动态更新热补丁合成方法和系统,能够自动分析新旧版本程序代码,提取出构造转换函数的基本构件和数据流切片,进而利用它们自动合成对象状态转换函数,帮助开发者,答复减轻人工负担。为实现上述目的,本专利技术采用以下技术方案:一种基于程序源码切片重组的软件动态更新热补丁合成方法,所述合成方法包括以下步骤: ...
【技术保护点】
1.一种基于程序源码切片重组的软件动态更新热补丁合成方法,其特征在于,所述合成方法包括以下步骤:/nS1,通过静态程序分析新、旧版本程序的源码和/或二进制代码,提取一定量动态更新对应的基本构件和数据流切片;所述基本构件是组成对象状态转换函数的基本单位,由变量占位符、占位符的类型信息,以及包括Java关键字、类名、方法名和操作符在内的其他元素组成;所述数据流切片是指在一个方法体内,声明或使用了相同变量的若干程序语句序列;/nS2,枚举提出得到的基本构件的组合,并根据其数据流关系自动生成对应的转换函数,所述转换函数为从已知类型到目标类型的转换操作序列;/nS3,在测试用例上运行生成的转换函数,将测试报告报告给开发者,同时输出正确的转换函数。/n
【技术特征摘要】
1.一种基于程序源码切片重组的软件动态更新热补丁合成方法,其特征在于,所述合成方法包括以下步骤:
S1,通过静态程序分析新、旧版本程序的源码和/或二进制代码,提取一定量动态更新对应的基本构件和数据流切片;所述基本构件是组成对象状态转换函数的基本单位,由变量占位符、占位符的类型信息,以及包括Java关键字、类名、方法名和操作符在内的其他元素组成;所述数据流切片是指在一个方法体内,声明或使用了相同变量的若干程序语句序列;
S2,枚举提出得到的基本构件的组合,并根据其数据流关系自动生成对应的转换函数,所述转换函数为从已知类型到目标类型的转换操作序列;
S3,在测试用例上运行生成的转换函数,将测试报告报告给开发者,同时输出正确的转换函数。
2.根据权利要求1所述的基于程序源码切片重组的软件动态更新热补丁合成方法,其特征在于,步骤S1中,所述基本构件的来源包括两个部分:一是将新旧两个版本程序源码中的每一行代码包括的条件语句和循环语句抽取为基本构件;二是对应程序所依赖的第三方库中的API方法所包含的访问构件;
所述基本构件包含4种类别:1)实例值域访问构件、静态值域访问构件;2)实例方法访问构件、静态方法访问构件;3)构造函数构件;4)源码语句构件。
3.根据权利要求2所述的基于程序源码切片重组的软件动态更新热补丁合成方法,其特征在于,步骤S1中,提取一定量动态更新对应的基本构件的过程包括以下步骤:
S101,分析源码信息,将一行语句中的变量和常量都替换为占位符,同时保留对应的类型信息,抽取为源码语句构件,并且保留在源码中的位置信息;将类中声明的方法、构造函数和值域,抽取为1)、2)、3)类基本构件,将定义中所需的调用实例和参数都替换为占位符;
S102,分析字节码信息,将类中声明的方法、构造函数和值域,抽取为1)、2)、3)类基本构件,将声明中所需的调用实例和参数都替换为占位符;
S103,对于相同构件进行合并,提取得到最终的动态更新对应的基本构件。
4.根据权利要求1所述的基于程序源码切片重组的软件动态更新热补丁合成方法,其特征在于,步骤S1中,提取一定量动态更新对应的数据流切片的过程包括以下步骤:
S111,从一个方法体中最后一条声明或使用了目标类型变量的语句出发,逆向遍历检查方法体内所有语句:1)初始化一个变量集合;2)检查一条语句时,如果该语句创建或使用的某个变量存在于变量集合中,则把该语句使用的所有变量放入变量集合,再继续检查下一条语句;
S112,采用步骤S1中获得的对应基本构件表示分析所得的数据流切片,同时对相同数据流切片进行合并。
5.根据权利要求1所述的基于程序源码切片重组的软件动态更新热补丁合成方法,其特征在于,步骤S112中,所述采用步骤S1中获得的对应基本构件表示分析所得的数据流切片是指:在得到一个数据流切片后,将其中语句对应的基本构件按照顺序保存下来。
6.根据权利要求1所述的基于程序源码切片重组的软件动态更新热补丁合成方法,其特征在于,步骤S2...
【专利技术属性】
技术研发人员:蒋炎岩,赵泽林,许畅,马晓星,
申请(专利权)人:南京大学,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。