Appendix 2Two Measures of Code Complexity
A2.1. Cyclomatic complexity
Among the myriad of metrics of code complexity available, cyclomatic complexity is probably the best known. Most code analysis tools can measure it.
Cyclomatic complexity aims to measure the amount of decision logic encapsulated in a software module or a function.
For simplicity, we shall assume henceforth that there is a single point of entry and a single exit point to the module whose complexity we wish to evaluate. Cyclomatic complexity is defined by first associating a control-flow graph to the code under consideration. Nodes in this graph represent elementary statements, while edges, which have a direction, represent transfer of control between these statements. This control-flow graph represents all possible execution paths through the module.
Figure A2.1. The flow graph associated to a piece of code containing one decision and one loop
![app2-fig2.1.jpg](/api/v2/epubs/9781118566053/files/images/app2-image196-01.jpg)
The earlier definition of Shannon entropy could perhaps encourage us to define the complexity of the code simply as the total number of such execution paths (or its logarithm). This, however, would not account for the over-counting due to the many paths that are not truly independent. In other words, we should be aware that many paths can be obtained by combination of others. Cyclomatic complexity Ccycl precisely takes this into account and, assuming an entry point ...
Get Managing Complexity of Information Systems: The Value of Simplicity now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.