[发明专利]一种构件间动态依赖关系的自动分析方法有效
申请号: | 201210362752.3 | 申请日: | 2012-09-25 |
公开(公告)号: | CN102880493A | 公开(公告)日: | 2013-01-16 |
发明(设计)人: | 马晓星;曹春;吕建;苏萍 | 申请(专利权)人: | 南京大学 |
主分类号: | G06F9/445 | 分类号: | G06F9/445 |
代理公司: | 南京苏高专利商标事务所(普通合伙) 32204 | 代理人: | 夏雪 |
地址: | 210046 江苏省南京市栖霞区仙*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 构件 动态 依赖 关系 自动 分析 方法 | ||
技术领域
本发明属于计算机应用领域,具体是一种构件间动态依赖关系的自动分析方法。
背景技术
软件环境和用户需求总是不断变化的,而这些变化在软件初始设计时,或者很难预测,或者虽然可预测但处理起来成本很大,不适合在当前版本的系统完成。因此越来越需要对已经上线的旧版本的软件系统进行动态更新,即在不停止当前正在运行的系统的前提下对系统进行更新或版本升级,以适应新的环境,满足用户新的需求[1]。动态更新不仅要保证更新前后和更新过程中系统的一致性,而且在保证一致性的同时,我们希望动态更新可以尽快完成,从而减少由于动态更新造成的系统某些服务不可用的时间。
目前可以保障动态更新过程中系统一致性的模型主要有三种:Quiescence、Tranquillity、Version-consistency。它们中的软件系统都是由构件及构件间的依赖关系组成。Quiescence的方法只考虑由系统架构确定的构件间的静态依赖关系,这将导致要更新的构件及其相关联的构件在动态更新中长时间不可用,造成系统较大的破坏性。与静态依赖不同,动态依赖关系是运行系统中正在执行的事务的发起者构件及与其相关联的构件在运行时刻不断变化的依赖(或调用)关系。事务是指构件在一定时间内完成的一系列动作的执行。后两种模型使用事务运行时的动态依赖关系,在保证一致性的同时,可以减少动态更新的时间。动态依赖关系的准确性严重影响了动态更新进行的最佳时机和完成动态更新所需的时间。错误的动态依赖关系可能会破坏动态更新的正确性。
对于动态依赖关系的计算,文献“Yves Vandewoude.Dynamically updating component-oriented systems.PhD thesis,Katholieke Universiteit Leuven,2007.”提出在程序运行前,由构件的开发人员针对每个程序手工编写一个事务状态机,计算其中每个状态的动态依赖信息,并且在业务逻辑中加入状态转移信息,这样程序在运行时刻可以提供关于自身的动态依赖关系。显然,这种方法给构件的开发人员增加了很多额外的负担,尤其当程序结构比较复杂,与周围构件的调用关系也 较复杂时,要手工分析出每个状态的依赖关系并编写出状态机,不仅耗费大量的时间,而且正确性也很难保证。针对这一不足,文献“夏晨,曹春,陶先平.一个用于动态更新一致性保障的状态机抽取方法.计算机科学,2010,37(11):151-155.”提出一种通过静态分析自动抽取事务状态机的方法。它通过分析程序源代码的控制结构及构件间的交互端口,自动生成事务的状态机,并自动计算出每个状态的依赖关系。这种方法虽然在开发效率上有了很大的提高,但由于其只采用静态分析的方法,得到的依赖关系在某些位置是不精确的,甚至是错误的,尤其是那些可能多次执行,或者是可由多条路径到达的位置,例如循环结构、分支汇合点。
发明内容
发明目的:针对上述现有技术存在的问题和不足,本发明的目的是提供一种构件间动态依赖关系的自动分析方法,能自动获得程序在当前执行环境下精确的动态依赖关系,不仅提高了开发效率和正确性,而且提高了动态依赖信息的精确度。
技术方案:为实现上述发明目的,本发明采用的技术方案为一种构件间动态依赖关系的自动分析方法,包括如下步骤:
1)静态分析阶段,构建程序的动态依赖自动机;
2)静态分析阶段,计算动态依赖自动机中的动态依赖关系的Future信息,所述动态依赖关系包括Future信息和Past信息,其中Future信息是指程序在当前执行环境下,将来可能使用的构件集合,Past信息则指其过去使用过的构件集合;
3)静态分析阶段,将已经分析出的动态依赖自动机和驱动动态依赖自动机正确自动运行的触发信息插入原程序(这里的“原程序”指修改以前的程序)中;
4)动态分析阶段,当程序运行时,其对应的动态依赖自动机在触发信息的驱动下自动运行,同时自适应地获得当前执行环境下的动态依赖关系。
所述步骤1)中构建程序的动态依赖自动机的具体步骤为:
1.1)构建程序的控制流图(CFG);
1.2)在程序的CFG上,采用深度优先的搜索算法(DFS),从程序的入口节点开始,递归地分析每个节点;同时,初始化动态依赖自动机的初始状态作为当前状态,此处的状态是指程序在一个代码块中稳定不变的动态依赖关系。
遇到可能引起程序的动态依赖关系发生变化的节点,则执行以下步骤:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京大学,未经南京大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201210362752.3/2.html,转载请声明来源钻瓜专利网。