数据流分析

数据流分析 是一种用于收集计算机程序在不同点计算的值的信息的技术。一个程序的控制流图(control flow graph, CFG)被用来确定对变量的一次赋值可能传播到程序中的哪些部分。这些信息通常被编译器用来优化程序。数据流分析的一个典型的例子就是可到达定义的计算。
进行数据流分析的最简单的一种形式就是对控制流图的某个节点建立数据流方程，然后通过迭代计算，反复求解，直到到达不动点。这种一般的方法是由Gary Kildall在Naval Postgraduate School讲课时发明的。

收敛性分析

为了可用性的要求，迭代算法应该可以真正到达不动点。这可以通过对状态的值域的联合，转移函数以及连接运算符加上限制条件来保证。
值域应该是有界的且有序。(比如，不存在一个无限的递增链 <  < ...)。转移函数和连接运算符应该是单调的。单调性保持了对值的每次迭代操作要么与之前一致，要么会变大，而有界性保证了它不会无限增大下去。因此最终我们会到达一个状态对于所有的x，有T(x) = x，此时即是不动点。

其它方法

在2002年，Mohnen描述了数据流分析的一个新方法，这种方法不需要显式的构造数据流图,取代了依赖于程序的抽象解释，并保持程序计数器工作列表集合的方法。在每个条件分支，对应的两条路径的目标都被加入工作列表中。每一条路径被尽可能多的指令跟随（直到程序结束点或直到没有变化），然后从工作列表中被移除并取回下一个程序计数。