Presentation is loading. Please wait.

Presentation is loading. Please wait.

Cyclomatic Complexity Dan Fleck Fall 2009 Dan Fleck Fall 2009.

Similar presentations


Presentation on theme: "Cyclomatic Complexity Dan Fleck Fall 2009 Dan Fleck Fall 2009."— Presentation transcript:

1 Cyclomatic Complexity Dan Fleck Fall 2009 Dan Fleck Fall 2009

2 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  A software metric used to measure the complexity of software  Developed by Thomas McCabe  Described (informally) as the number of simple decision points + 1

3 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  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

4 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

5 Cyclomatic Complexity V(G) This is NOT a simple decision! These are simple decisions! Convert To A simple decision chooses one of two options

6 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?  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?

7 Graph Complexity (Cyclomatic Complexity) A number of industry studies have indicated that the higher V(G), the higher the probability or errors. V(G) modules modules in this range are more error prone From Pressman Slides - Software Engineering a Practical Approach 6,e

8 Basis Path Testing Next, we derive the independent paths: Since V(G) = 4, there are four paths Path 1: 1,2,3,6,7,8 Path 2: 1,2,3,5,7,8 Path 3: 1,2,4,7,8 Path 4: 1,2,4,7,2,4,...7,8 Finally, we derive test cases to exercise these paths. 1 2 3 4 56 7 8 From Pressman Slides - Software Engineering a Practical Approach 6,e

9 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"); }

10 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

11 Output from JavaNCSS NCSS = Non Commenting Source Statements CCN = cyclomatic complexity number

12 Better Tool Found (Nov 2009)  RefactorIt  http://sourceforge.net/projects/refactorit/ http://sourceforge.net/projects/refactorit/  http://www.aqris.com/display/A/Refactorit http://www.aqris.com/display/A/Refactorit  Provides Cyclomatic Complexity many other metrics, and refactoring tools  Comment density  Coupling  Depth of inheritance,  …  RefactorIt  http://sourceforge.net/projects/refactorit/ http://sourceforge.net/projects/refactorit/  http://www.aqris.com/display/A/Refactorit http://www.aqris.com/display/A/Refactorit  Provides Cyclomatic Complexity many other metrics, and refactoring tools  Comment density  Coupling  Depth of inheritance,  …


Download ppt "Cyclomatic Complexity Dan Fleck Fall 2009 Dan Fleck Fall 2009."

Similar presentations


Ads by Google