对于职业我们要有梦想,不抛弃不放弃。人生才会有乐趣。

程序结构分析之信息流分析

上一篇 / 下一篇  2010-12-15 09:07:27 / 个人分类:测试基础

直到目前信息流分析主要用在验证程序变量间信息的传输遵循保密要求。然而,近来发现可以导出程序的信息流关系,这就为软件开发和确认提供了十分有益的工具。

为了说明信息流分析的性质,以下给出整除算法作为例子。图6是这一算法的程序。图7是三个关系的表。其中第一个表(图7(a))给出每一语句执行时所用到其输入值的变量。例如,从图6的算法很明显地看出,M的输入值在语句2中得到直接使用,由于这一语句将M的值传送给RM的初始值也间接地用于语句3和语句5。而且,语句3中表达式R>= N的值决定了语句4的重复执行次数,也即对Q多少次重复赋值,即是说M的值也间接地用于语句4

       

 

 

 

第二个关系(图7(b))给出了其执行可能直接或间接影响输出变量终值的一些语句。可以看出,所有语句都可能影响到商Q的值。而语句1和语句4并未关系到余数R的值。

最后的关系表明了哪个输入值可能直接或间接地影响到输出值。

针对结构良好的程序快速算法(只需多项式时间)已经开发出来可用以建立这些关系,这在程序的确认中是非常有用的。例如,第一个关系能够表明对未定义变量的所有可能的引用。第二个关系在查找错误中也是有用的,比如假定某个变量的计算值在使用以前被错误地改写了,这可能因为有并不影响任何输出值的语句而被发现。在程序的任何指定点查出其执行可能影响某一变量值的语句,这在程序排错和程序验证中都是很有用的。第三个输入输出关系还提供一种检查,看看每个输出值是否由相关的输入值,而不是其它值导出。

   

 

   总结:分析程序的控制流,是为了使编写出的程序有好的结构。了解程序结构的基本要求。目前主要是通过编译器和程序分析工具来实现程序控制流分析。
数据流分析是分析程序中未定义变量的使用和未曾使用的变量定义。利用数据流分析的结果可以进行代码编译优化。信息流分析主要分析输出值跟输入值之间的影响关系。


TAG:

 

评分:0

我来说两句

Open Toolbar