Control Flow Analysis allows checks the compliance of the software structure with the software specifications. It does so by extracting Control Flow Graph (CFG) from the software.
The CFG is a representation, using graph notation, of all paths that might be traversed through a program during its execution. Each node in the graph represents a basic block, i.e. a straight-line is a piece of code without any jumps or jump targets; jump targets start a block, and jumps end a block. Directed edges are used to represent jumps in the control flow. There are, in most presentations, two specially designated blocks: the entry block, through which control enters into the flow graph, and the exit block, through which all control flow leaves.
The CFG is essential to many compiler optimizations and static analysis tools.