一种大型软件自愈合框架及愈合方法技术

技术编号:12734513 阅读:114 留言:0更新日期:2016-01-20 17:59
本发明专利技术涉及软件开发领域,特别是指一种大型软件自愈合框架及愈合方法。本发明专利技术的框架包括六个部分,监视模块获得程序运行的状态并生成监视数据;程序分析模块接收来自监视模块的监视数据,通过解析、判断得到系统是否正常运行的结果;如果程序出错,以事件的形式发送给事件转发模块;代码愈合策略生成器将程序分析模块诊断出的错误定位信息作为输入,与事件转发模块交互,一方面从事件转发模块发送过来的信息获取目前正在处理的字节码信息,另一方面又将根据生成规则生成的愈合策略以愈合指令的形式发送给事件转发模块;字节码修改模块用来实际操作对字节码文件的修改;事件转发模块负责在程序分析模块、代码愈合策略生成模块、字节码修改模块之间转发事件流。本发明专利技术提供了一种大型软件的自愈合框架和方法,可以用于提高软件的可靠性。

【技术实现步骤摘要】

本专利技术涉及软件开发领域,特别是指一种大型软件自愈合框架及愈合方法
技术介绍
随着软件的复杂性的不断提高,尤其是应用在通信、金融等重要领域的大型软件,软件的高可靠性越来越受到关注。如何开发一个具有高可靠性的软件系统成为软件技术发展必须要解决的问题。自愈合系统是提高软件可靠性的一种途径。它结合了容错与除错的方法,在运行时对程序进行调整,完成对错误的修正。目前,实现自愈合软件有两种手段,一种是程序本身内建的提供自愈合的特性,通过软件自身实现监控、分析、修改代码完成自愈特性。一种是实现一个可动态配置的框架和具有相同功能的冗余组件。程序通过在重加载软件完成对错误的消除。上述方法存在以下的弊端:1、软件本身需要采集和分析监控数据,数据量大,对系统性能损耗大。2、对软件的愈合不彻底,如果软件由于内部因素导致崩溃,那么通过上述方法自愈以后,错误还可能会再次出现。3、适用性不强,由于需要对受监视的程序进行修改,因此大型软件复杂的特点往往导致其无法实施。
技术实现思路
本专利技术解决的技术问题之一在于提供一种大型软件自愈合框架,有效提高大型软件的可靠性。本专利技术解决的技术问题之二于提供一种大型软件自愈合框架的愈合方法,实现大型软件的自愈合,提高大型软件的可靠性。本专利技术解决上述技术问题之一的技术方案是:所述的框架包括如下模块:模块1、运行环境;模块2、监视模块;<br>模块3、程序分析模块;模块4、代码愈合策略生成模块;模块5、字节码修改模块;模块6、事件转发模块;所述的运行环境是实际执行程序的软件环境;监视模块获得程序运行的状态并生成监视数据;程序分析模块接收来自监视模块的监视数据,通过对监视数据的解析,借助判断规则分析得到系统是否正常运行的结果;如果程序出错,程序分析模块给出错误定位信息,并以事件的形式发送给事件转发模块;代码愈合策略生成模块由生成规则和代码愈合策略生成器组成,代码愈合策略生成模块将程序分析模块诊断出的错误定位信息作为输入,与事件转发模块交互,一方面从事件转发模块发送过来的信息获取目前正在处理的字节码信息,另一方面又将根据生成规则生成的愈合策略以愈合指令的形式发送给事件转发模块,由事件转发模块转换为字节码修改模块识别的事件流信息;字节码修改模块用来实际操作对字节码文件的修改;事件转发模块负责在程序分析模块、代码愈合策略生成模块、字节码修改模块之间转发事件流。所述运行环境具有动态加载的特性,通过类加载器动态加载类文件,完成链接,初始化后,程序得以正常运行。所述监视模块通过运行环境外的程序对其进行观察,获得在运行环境中运行的大型软件程序运行的状态。本专利技术并不是对程序运行的所有方面进行观察。“属性和方法”描述文件里,本专利技术给出了框架所关注的程序行为和状态。本专利技术解决上述技术问题之二的技术方案是:所述的方法按照以下工作流程进行:步骤1:监控模块注册要监控的方法和属性,实现对运行程序有选择的监控;监控模块把产生的监控数据发送到程序分析模块;步骤2:程序分析模块接收来自监控模块的监控数据,通过对监控数据的解释,借助于判断规则分析我们可以得到系统是否正常运行的结果;如果程序出错,程序分析模块给出错误定位信息,并以事件的形式发送给代码愈合策略生成模块,同时在事件转发模块上注册;步骤3:代码愈合策略生成模块根据生成规则生成相关的愈合指令,并发送给事件转发模块,由事件转发模块转换成事件流再转发到字节码修改模块;步骤4:字节码修改模块对字节码文件进行修改;步骤5:将修改后的字节码文件重新进行装载运行。所述字节码修改模块包括解码器与字节码构建器两个部分,其对字节码文件的修改步骤如下:步骤1:字节码修改模块扫描字节码文件形成字节码流,并通过解码器将扫描到的信息以事件流形式发送到外部;步骤2:字节码构架器接收发送过来的事件流,转换为字节码流并保存到类文件中。字节码修改模块通过这个双向的过程可以完成对字节码文件的修改。由所述程序分析模块判断程序目前运行是否健康,是否需要愈合;程序分析模块将接收到的监控数据的数值与设定的判断规则进行比较,并区分为以下三种情况分别进行相应的处理:1)健康状况:监视模块报送过来的一切数据都在系统约束范围内,这时表示系统正常运行,不需要对程序进行任何改变;2)潜在错误:监视模块报送过来的数据信息违反了系统某些约束,但是程序仍然正常运行;这表示对约束的违反并没有引发程序错误,然而基于对约束的违反会在将来导致程序出错,所以系统需要进入自愈合程序;3)错误状况:监视模块报送过来的信息已经指示了系统出错(比如,抛出的异常),这时程序已经处在错误状态,不需要经过对程序约束的判断就可判定程序错误,可以立即进入自愈合程序;所述判断规则是指数值的正常约束范围。本专利技术方案的有益效果如下:1、本专利技术的方法只对指定的属性和方法进行监控,采集和分析的数据量少,对系统性能损耗小;2、本专利技术的提供的框架愈合程度高,错误不会再次出现;3、本专利技术的方法应用范围广,不需要对受监视程序进行修改。附图说明下面结合附图对本专利技术进一步说明:图1为本专利技术框架的结构图;具体实施方式本专利技术所述框架的实现方式有多种,如图1所示,以下采用Java虚拟机技术以及字节码工程相关知识和工具实现框架。Java虚拟机有很多动态特性,有利于构建一个动态的框架。(1)运行环境运行环境最主要的任务是负责程序的运行,并提供对监控的支持。在本框架中采用类文件和Java虚拟机的组合构成这个部分。对于程序的运行,Java虚拟机内建了动态加载的机制。Java虚拟机首先将程序类文件加载到Java虚拟机中,然后进行链接,链接校验需要链接的类文件,然后Java虚拟机对程序进行初始化,最后执行字节码。对于监控的支持,Java虚拟机原生并没有此种设计。这项功能需要在Java虚拟机之外实现。这里使用Java反射首先找到main()方法,然后用预期的命令行参数调用它。上述采用Javassist提供的类加载器。Javassist是一个执行字节码操作的强而有力的驱动代码库。它允许开发者自由地在一个已经编译好的类中添加新的方法,或者是修改已有的方法。(2)监视模块监视模块需要安插到运行环境中,用于拦截程序的运行,获取框架所关心的程序运行信息。为实现该模块,采用Ja本文档来自技高网...

【技术保护点】
一种大型软件自愈合框架,其特征在于:所述的框架包括如下模块:模块1、运行环境;模块2、监视模块;模块3、程序分析模块;模块4、代码愈合策略生成模块;模块5、字节码修改模块;模块6、事件转发模块;所述的运行环境是实际执行程序的软件环境;监视模块获得程序运行的状态并生成监视数据;程序分析模块接收来自监视模块的监视数据,通过对监视数据的解析,借助判断规则分析得到系统是否正常运行的结果;如果程序出错,程序分析模块给出错误定位信息,并以事件的形式发送给事件转发模块;代码愈合策略生成模块由生成规则和代码愈合策略生成器组成,代码愈合策略生成模块将程序分析模块诊断出的错误定位信息作为输入,与事件转发模块交互,一方面从事件转发模块发送过来的信息获取目前正在处理的字节码信息,另一方面又将根据生成规则生成的愈合策略以愈合指令的形式发送给事件转发模块,由事件转发模块转换为字节码修改模块识别的事件流信息;字节码修改模块用来实际操作对字节码文件的修改;事件转发模块负责在程序分析模块、代码愈合策略生成模块、字节码修改模块之间转发事件流。

【技术特征摘要】
1.一种大型软件自愈合框架,其特征在于:所述的框架包括如下模块:
模块1、运行环境;
模块2、监视模块;
模块3、程序分析模块;
模块4、代码愈合策略生成模块;
模块5、字节码修改模块;
模块6、事件转发模块;
所述的运行环境是实际执行程序的软件环境;
监视模块获得程序运行的状态并生成监视数据;
程序分析模块接收来自监视模块的监视数据,通过对监视数据的解析,借
助判断规则分析得到系统是否正常运行的结果;如果程序出错,程序分析模块
给出错误定位信息,并以事件的形式发送给事件转发模块;
代码愈合策略生成模块由生成规则和代码愈合策略生成器组成,代码愈合
策略生成模块将程序分析模块诊断出的错误定位信息作为输入,与事件转发模
块交互,一方面从事件转发模块发送过来的信息获取目前正在处理的字节码信
息,另一方面又将根据生成规则生成的愈合策略以愈合指令的形式发送给事件
转发模块,由事件转发模块转换为字节码修改模块识别的事件流信息;
字节码修改模块用来实际操作对字节码文件的修改;事件转发模块负责在
程序分析模块、代码愈合策略生成模块、字节码修改模块之间转发事件流。
2.根据权利要求1所述的大型软件自愈合框架,其特征在于:所述运行环

\t境其有动态加载的特性,通过类加载器动态加载类文件,完成链接,初始化后,
程序得以正常运行。
3.根据权利要求1所述的大型软件自愈合框架,其特征在于:所述监视模
块通过运行环境外的程序对其进行观察,获得在运行环境中运行的大型软件程
序运行的状态。
4.根据权利要求2所述的大型软件自愈合框架,其特征在于:所述监视模
块通过运行环境外的程序对其进行观察,获得在运行环境中运行的大型软件程
序运行的状态。
5.一种权利要求1至4任一项所述的大型软件自愈合框架的愈合方法,其
特征在于:所述的方法按照以下工作流程进行:
步骤1:监控模块注册要监控的方法和属性,实现对运行程序有选择的监控;
监控模块把产生的监控...

【专利技术属性】
技术研发人员:莫展鹏杨松季统凯
申请(专利权)人:国云科技股份有限公司
类型:发明
国别省市:广东;44

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

1