1 / 12

Cyclomatic Complexity

Cyclomatic Complexity. Dan Fleck Fall 2009. 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. What is it?.

Download Presentation

Cyclomatic Complexity

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Cyclomatic Complexity Dan Fleck Fall 2009 Coming up: What is it?

  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 Coming up: What is it?

  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

  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 Coming up: What is it?

  5. Cyclomatic Complexity V(G) Convert To This is NOT a simple decision! These are simple decisions! 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?

  7. 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?

  8. 1 2 3 4 5 6 7 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. From Pressman Slides - Software Engineering a Practical Approach 6,e Coming up: What is the complexity?

  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"); } } } Coming up: What is the complexity V(G)?

  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 Coming up: Output from JavaNCSS

  11. Output from JavaNCSS NCSS = Non Commenting Source Statements CCN = cyclomatic complexity number Better Tool Found

  12. 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, • …

More Related