# McCabe’s Cyclomatic Complexity Number

This material is highly important for those who are going for ISTQB training.

This is taken from ..Fenton and Pfleeger, Chapters 7 & 8.

If we talk about white box testing...this is a very important to understand what is the structure of the code..

The more “complex” the structure of code

◦ . . . the harder it is to understand

◦ . . . the more likely it will have a defect

◦ . . . the harder it will be to change

◦ . . . the longer it will take to produce

◦ . . . the more difficult it will be to reuse

Let us understand what is structure..

What is structure?

• control-flow — the sequence of instructions that are

executed

• data-flow — the creation and movement of data between

“components” of the code

• data organisation — the relationship of data items to each

other

let me go back to our engineering ...where we have learnt the graph theory...

There are two types of graph mainly available..

1.Directed 2.Undirected.

• a mathematical structure (with an appealing visual

representation) for representing things that are related

• consists of vertices (or nodes, or points), connected by

edges (or line segments, or arcs).

Vertices: A, B, C, D, E, F

Edges: (A,C), (A,C), (A,E), (B,C), (B,F), (C,D), (D,A), (E,F),

• Also: undirected graphs, rules restricting edges between

vertices, classification of vertices

now the question comes like what is flowgraph?

• Directed graphs (flowgraphs) can be used to model control

flow of a program

• vertex = statement, edge = (A,B) if control flows from

statement A to B

• properties of flowgraphs may provide information about

properties of the code

in the exam the question comes like find out the complexity of the below written code:

Example:

public static boolean isPrime(int n) {

boolean prime = true;

int i = 2;

while (i < n) { if (n % i == 0) { prime = false; } i++; } return prime; } let us put notation over here: as each of the line /statement is under flowgraph...i am putting A,B,C as the notation for the lines.Those will be my nodes where the controll of the pragramme will pass.

the graph looks like:

McCabe’s Cyclomatic Complexity Number (CCN)

• measures the number of linearly independent paths through

the flowgraph

• v(F) = e − n + 2, F the flowgraph of the code, n the number

of vertices, e the number of edges

• Intuition — the larger the CCN the “more complex” the code

• Various sources recommend a CCN of no more than 10-15

• Example: CCN = 8 − 7 + 2 = 3

try to understand this.and i will come back with several other examples.

This is taken from ..Fenton and Pfleeger, Chapters 7 & 8.

If we talk about white box testing...this is a very important to understand what is the structure of the code..

The more “complex” the structure of code

◦ . . . the harder it is to understand

◦ . . . the more likely it will have a defect

◦ . . . the harder it will be to change

◦ . . . the longer it will take to produce

◦ . . . the more difficult it will be to reuse

Let us understand what is structure..

What is structure?

• control-flow — the sequence of instructions that are

executed

• data-flow — the creation and movement of data between

“components” of the code

• data organisation — the relationship of data items to each

other

let me go back to our engineering ...where we have learnt the graph theory...

There are two types of graph mainly available..

1.Directed 2.Undirected.

**Directed Graphs**• a mathematical structure (with an appealing visual

representation) for representing things that are related

• consists of vertices (or nodes, or points), connected by

edges (or line segments, or arcs).

Vertices: A, B, C, D, E, F

Edges: (A,C), (A,C), (A,E), (B,C), (B,F), (C,D), (D,A), (E,F),

• Also: undirected graphs, rules restricting edges between

vertices, classification of vertices

now the question comes like what is flowgraph?

**Flowgraphs**• Directed graphs (flowgraphs) can be used to model control

flow of a program

• vertex = statement, edge = (A,B) if control flows from

statement A to B

• properties of flowgraphs may provide information about

properties of the code

in the exam the question comes like find out the complexity of the below written code:

Example:

public static boolean isPrime(int n) {

boolean prime = true;

int i = 2;

while (i < n) { if (n % i == 0) { prime = false; } i++; } return prime; } let us put notation over here: as each of the line /statement is under flowgraph...i am putting A,B,C as the notation for the lines.Those will be my nodes where the controll of the pragramme will pass.

the graph looks like:

McCabe’s Cyclomatic Complexity Number (CCN)

• measures the number of linearly independent paths through

the flowgraph

• v(F) = e − n + 2, F the flowgraph of the code, n the number

of vertices, e the number of edges

• Intuition — the larger the CCN the “more complex” the code

• Various sources recommend a CCN of no more than 10-15

• Example: CCN = 8 − 7 + 2 = 3

try to understand this.and i will come back with several other examples.

## Post a Comment