Skip to main content

Graph Theory | Cyclomatic complexity

What is Graph Matrix?


  • A graph matrix is a square matrix whose size represents the number of nodes in the control flow graph. 

  • Each row and column in the matrix identifies a node and the entries in the matrix represent the edges or links between these nodes.

  • Conventionally, nodes are denoted by digits, and edges are denoted by letters.


Example:
Graph theory
Graph Examples


Since the graph has 4 nodes, so the graph matrix would have a dimension of 4 X 4. Matrix entries will be filled as follows :

  • (1, 1) will be filled with ‘a’ as an edge exists from node 1 to node 1

  • (1, 2) will be filled with ‘b’ as an edge exists from node 1 to node 2. It is important to note that (2, 1) will not be filled as the edge is unidirectional and not bidirectional



  • (1, 3) will be filled with ‘c’ as edge c exists from node 1 to node 3
  • (2, 4) will be filled with ‘d’ as edge exists from node 2 to node 4
  • (3, 4) will be filled with ‘e’ as an edge exists from node 3 to node 4

Connection Matrix

  • A connection matrix is a matrix defined with edge weight. 

  • In simple form, when a connection exists between two nodes of the control flow graph, then the edge weight is 1, otherwise, it is 0. 

  • However, 0 is not usually entered in the matrix cells to reduce the complexity.


Example:

The weight of the edges is simply replaced by 1 and the cells which were empty before are left as it is, i.e., representing 0.


A connection matrix is used to find the cyclomatic complexity of the control graph.




Steps to compute the cyclomatic complexity :

  • Count the number of 1s in each row and write it at the end of the row

  • Subtract 1 from this count for each row (Ignore the row if its count is 0)

  • Add the count of each row calculated previously

  • Add 1 to this total count

  • The final sum in Step 4 is the cyclomatic complexity of the control flow graph


cyclomatic complexity

Other methods to calculate cyclomatic complexity :


  • Cyclomatic complexity = e – n + 2 * p

Where, 

      e : no. of edges

      n : no. of nodes

      p :  no. of disconnected parts of the flow graph

  • Cyclomatic complexity = p + 1

Where, 

      p:  no. predicate nodes contained in the control flow graph

  • Cyclomatic complexity = Number of regions in the graph + 1

 

Example:
1)
example of connection matrix

Nodes: 7

Edges: 7

Connected components: 1

Cyclomatic complexity = E-N + 2*p 7-7+2

2)
cyclomatic complexity

Cyclomatic complexity = p+1 = 1+1 = 2

3)
control flow graph
Cyclomatic complexity = no. of regions + 1 = 1+1 = 2

Next: Unit-2



Comments

Popular posts from this blog

What is software testing and why it is so hard?

What is software testing? Software testing is a process of identifying the correctness of software by considering its attributes (Reliability, Scalability, Portability, Re-usability, Usability) and evaluating the execution of software components to find the software bugs or errors, or defects . Software testing provides an independent view and objective of the software and gives surety of the fitness of the software. It involves testing of all components under the required services to confirm that whether it is satisfying the specified requirements or not. The process is also providing the client with information about the quality of the software. Testing is mandatory because it will be a dangerous situation if the software fails any of the time due to lack of testing. So, without testing software cannot be deployed to the end-user. Types of software testing Types of Software testing: Manual testing The process of checking the functionality of an application as per the customer’...

Testing Process and Limitations of Testing

Software Testing process Software testing process 1. Test Strategy and Test Plan Every project needs a Test Strategy and a Test Plan. These artifacts describe the scope for testing for a project: The systems that need to be tested, and any specific configurations Features and functions that are the focus of the project Non-functional requirements Test approach—traditional, exploratory, automation, etc.—or a mix Key processes to follow – for defects resolution, defects triage Tools—for logging defects, for test case scripting, for traceability Documentation to refer, and to produce as output Test environment requirements and setup Risks, dependencies, and contingencies Test Schedule Approval workflows Entry/Exit criteria And so on… Whatever methodology your project follows, you need to have a Test Strategy and Software Testing Plan in place. Make them two separate documents, or merge them into one. Without a clear test strategy and a detailed test plan, even Agile projects will find i...