0% found this document useful (0 votes)
163 views12 pages

Cyclomatic Complexity

Cyclomatic complexity is a software metric used to measure the complexity of a program. It is calculated as the number of linearly independent paths through the source code. Higher cyclomatic complexity values indicate a higher likelihood of errors. The document provides examples of calculating cyclomatic complexity for code snippets and discusses how it can be used for basis path testing.

Uploaded by

hanhnd
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
163 views12 pages

Cyclomatic Complexity

Cyclomatic complexity is a software metric used to measure the complexity of a program. It is calculated as the number of linearly independent paths through the source code. Higher cyclomatic complexity values indicate a higher likelihood of errors. The document provides examples of calculating cyclomatic complexity for code snippets and discusses how it can be used for basis path testing.

Uploaded by

hanhnd
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 12

Cyclomatic Complexity

Dan Fleck
Fall 2009

Coming up: What is it?

What is it?
A software metric used to measure the
complexity of software
Developed by Thomas McCabe
Described (informally)
as the number of
simple decision
points + 1
Coming up: What is it?

What is it?
Essentially the number of linearly
independent paths through the code
The code has no decision statements:
complexity = 1
The code has an if statement, there are two
paths through the code: complexity = 2

Cyclomatic Complexity V(G)

Computing the cyclomatic


complexity:
number of simple decisions + 1

In this case, V(G) = 4

From Pressman Slides - Software Engineering a Practical Approach 6,e


Coming up: What is it?

Cyclomatic Complexity V(G)

Convert
To

This is NOT a simple decision!

These are simple decisions!


A simple decision chooses one of two options

Steps to calculate complexity

Draw the control flow graph of the code


Count the number of edges = E
Count the number of nodes = N
Count the number of connected
components = P
Complexity = M N + 2P
What is the complexity for the graph?

Graph Complexity
(Cyclomatic Complexity)
A number of industry studies have indicated
that the higher V(G), the higher the probability
or errors.

modules

V(G)
modules in this range are
more error prone

From Pressman Slides - Software Engineering a Practical Approach 6,e


Coming up: What is it?

Basis Path Testing


Next, we derive the
independent paths:
1

Since V(G) = 4,
there are four paths

4
5

Path 1:
Path 2:
Path 3:
Path 4:

1,2,3,6,7,8
1,2,3,5,7,8
1,2,4,7,8
1,2,4,7,2,4,...7,8

Finally, we derive test


cases to exercise these
paths.

From Pressman Slides - Software Engineering a Practical Approach 6,e


Coming up: What is the complexity?

What is the complexity?


public void howComplex(i) {
while (i<10) {
i++;
System.out.printf("i is %d", i);
if (i%2 == 0) {
System.out.println("even");
} else {
System.out.println("odd");
}
}

Coming up: What is the complexity V(G)?

What is the complexity V(G)?


public void howComplex() {
int i=20;
while (i<10) {
System.out.printf("i is %d", i);
if (i%2 == 0) {
System.out.println("even");
} else {
System.out.println("odd");
}
}
}

V(G) = 2 decisions + 1 = 3

Coming up: Output from JavaNCSS

Output from JavaNCSS


NCSS = Non Commenting Source Statements

CCN = cyclomatic complexity number


Better Tool Found

Better Tool Found (Nov 2009)


RefactorIt
http://sourceforge.net/projects/refactorit/
http://www.aqris.com/display/A/Refactorit

Provides Cyclomatic Complexity many


other metrics, and refactoring tools

Comment density
Coupling
Depth of inheritance,

You might also like