Every program encompasses statements to execute in order to perform some task and other decision-making statements that decide, what statements need to be executed. These decision-making constructs change the flow of the program.
If we compare two programs of same size, the one with more decision-making statements will be more complex as the control of program jumps frequently.
McCabe, in 1976, proposed Cyclomatic Complexity Measure to quantify complexity of a given software. It is graph driven model that is based on decision-making constructs of program such as if-else, do-while, repeat-until, switch-case and gotostatements.
Process to make flow control graph:
● Break program in smaller blocks, delimited by decision-making constructs.
● Create nodes representing each of these nodes.
● Connect nodes as follows:
○ If control can branch from block i to block j
○ Draw an arc
○ From exit node to entry node
○ Draw an arc.
To calculate Cyclomatic complexity of a program module, we use the formula –
V(G) = e – n + 2
e is total number of edges
n is total number of nodes
The Cyclomatic complexity of the above module is
e = 10
n = 8
Cyclomatic Complexity = 10 – 8 + 2
According to P. Jorgensen, Cyclomatic Complexity of a module should not exceed 10.