[发明专利]一种构件间动态依赖关系的自动分析方法有效
申请号: | 201210362752.3 | 申请日: | 2012-09-25 |
公开(公告)号: | CN102880493A | 公开(公告)日: | 2013-01-16 |
发明(设计)人: | 马晓星;曹春;吕建;苏萍 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 夏雪 |
地址: | 210046 江苏省南京市栖霞区仙*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 构件 动态 依赖 关系 自动 分析 方法 | ||
1.一种构件间动态依赖关系的自动分析方法,其特征在于包括如下步骤:
1)静态分析阶段,构建程序的动态依赖自动机,所述动态依赖自动机包括状态,事件和转移,其中状态指程序在一个代码块中稳定不变的动态依赖关系,事件指可能引起程序的动态依赖关系发生变化的节点,转移是指当事件发生时,程序从一个状态转移到新的状态;
2)静态分析阶段,计算动态依赖自动机中的动态依赖关系的Future信息,所述动态依赖关系包括Future信息和Past信息,其中Future信息是指程序在当前执行环境下,将来可能使用的构件集合,Past信息则指其过去使用过的构件集合;
3)静态分析阶段,将已经分析出的动态依赖自动机和驱动动态依赖自动机正确自动运行的触发信息插入原程序中;
4)动态分析阶段,当程序运行时,其对应的动态依赖自动机在触发信息的驱动下自动运行,同时自适应地获得当前执行环境下的动态依赖关系。
2.根据权利要求1所述的一种构件间动态依赖关系的自动分析方法,其特征在于所述步骤1)中构建程序的动态依赖自动机的具体步骤为:
1.1)构建程序的控制流图;
1.2)在程序的控制流图上,采用深度优先的搜索算法,从程序的入口节点开始,递归地分析每个节点;同时,初始化动态依赖自动机的初始状态作为当前状态。
3.根据权利要求2所述的一种构件间动态依赖关系的自动分析方法,其特征在于所述步骤1.2)中分析节点的具体步骤为:
遇到可能引起程序的动态依赖关系发生变化的节点,则执行以下步骤:
1.2.1)动态依赖自动机生成一个新状态,表示该节点执行后的动态依赖关系,并将当前状态、对应事件和新状态用转移关系连接,并将新状态作为当前状态;
1.2.2)在原程序该节点后插入包含该事件信息的触发状态跳转的语句。
4.根据权利要求1所述的一种构件间动态依赖关系的自动分析方法,其特征在于所述步骤2)中计算动态依赖关系中的Future信息的具体步骤为:
2.1)对动态依赖自动机中的每个转移,将转移之前的状态的动态依赖关系的Future信息更新为转移之前状态的动态依赖关系、触发转移的事件使用的构件与转移之后的状态的动态依赖关系的Future信息三者的并集;
2.2)重复2.1)的步骤,直到所有状态的动态依赖关系的Future信息不发生变化为止,此时得到了包含动态依赖关系的Future信息的动态依赖自动机。
5.根据权利要求2所述的一种构件间动态依赖关系的自动分析方法,其特征在于所述步骤3)的具体步骤为:
3.1)在原程序的注释中插入所述步骤2)得到的动态依赖自动机。
6.根据权利要求1所述的一种构件间动态依赖关系的自动分析技方法,其特征在于所述步骤4)的具体步骤为:
4.1)程序运行时,其对应的动态依赖自动机从初始状态开始运行,同时初始化此时的动态依赖关系中的Past信息为空.
4.2)每执行步骤3)插入的触发信息,则触发程序自适应地从当前状态转移到下一状态,同时更新程序当前的动态依赖关系。
7.根据权利要求6所述的一种构件间动态依赖关系的自动分析技方法,其特征在于所述步骤4.2)中执行更新的具体步骤为:
4.2.1)新状态的动态依赖关系中的Future信息为搜索包含Future信息的动态依赖自动机,根据当前状态找到经该触发信息转移到的下一状态,该下一状态的内容即为新状态的Future信息;
4.2.2)新状态的动态依赖关系中的Past信息更新为当前状态的Past信息与触发状态转移的事件使用的构件的并集。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210362752.3/1.html,转载请声明来源钻瓜专利网。