Cyclomatic Software Complexity Measure
(Redirected from Cyclomatic complexity)
Jump to navigation
Jump to search
A Cyclomatic Software Complexity Measure is a ___ measure that ...
- Context:
- …
- Example(s):
- …
- Counter-Example(s):
- …
- See: Basis Path Testing, Software Metric, Programming Complexity, Control-Flow Graph, Function (Computer Science), Modular Programming, Codepath.
References
2023
- (Wikipedia, 2023) ⇒ https://en.wikipedia.org/wiki/Cyclomatic_complexity Retrieved:2023-7-7.
- Cyclomatic complexity is a software metric used to indicate the complexity of a program. It is a quantitative measure of the number of linearly independent paths through a program's source code. It was developed by Thomas J. McCabe, Sr. in 1976.
Cyclomatic complexity is computed using the control-flow graph of the program: the nodes of the graph correspond to indivisible groups of commands of a program, and a directed edge connects two nodes if the second command might be executed immediately after the first command. Cyclomatic complexity may also be applied to individual functions, modules, methods or classes within a program.
One testing strategy, called basis path testing by McCabe who first proposed it, is to test each linearly independent path through the program; in this case, the number of test cases will equal the cyclomatic complexity of the program.
- Cyclomatic complexity is a software metric used to indicate the complexity of a program. It is a quantitative measure of the number of linearly independent paths through a program's source code. It was developed by Thomas J. McCabe, Sr. in 1976.
2016
- (Ebert et al., 2016) ⇒ Ebert, C., Cain, J., Antoniol, G., Counsell, S., ... (2016). “Cyclomatic complexity". IEEE Software.
- QUOTE: "IN ANSWERING WHY cyclomatic complexity (CC) is so widely employed in industry but … the question, what parts of the software industry are even aware of current software research? …"
2015
- (Sculley et al., 2015) ⇒ D. Sculley, Gary Holt, Daniel Golovin, Eugene Davydov, Todd Phillips, Dietmar Ebner, Vinay Chaudhary, Michael Young, Jean-Francois Crespo, and Dan Dennison. (2015). “Hidden Technical Debt in Machine Learning Systems.” In: Proceedings of the 28th International Conference on Neural Information Processing Systems.
- QUOTE: ... For any individual change, the cost of experimenting in this manner is relatively low — none of the surrounding infrastructure needs to be reworked. However, over time, these accumulated codepaths can create a growing debt due to the increasing difficulties of maintaining backward compatibility and an exponential increase in cyclomatic complexity. ...
2009
- (Graylin et al., 2009) ⇒ Graylin, J., Hale, J. E., Smith, R. K., David, H., Kraft, N. A., ... (2009). “Cyclomatic complexity and lines of code: empirical evidence of a stable linear relationship". Journal of Software.
- QUOTE: "Researchers have often commented on the high correlation between McCabe’s Cyclomatic Complexity (CC) and lines of code (LOC). Many have believed this correlation high enough …"
1996
- (Watson, Wallace, and McCabe, 1996) ⇒ Watson, A. H., Wallace, D. R., & McCabe, T. J. (1996). “Structured testing: A testing methodology using the cyclomatic complexity metric".
- QUOTE: "The software complexity measures described in this document are: cyclomatic complexity, module design complexity, integration complexity, object integration complexity, actual com…"
1991
- (Gill and Kemerer, 1991) ⇒ Gill, G. K., & Kemerer, C. F. (1991). “Cyclomatic complexity density and software maintenance productivity". IEEE Transactions on Software Engineering.
- QUOTE: "Whether cyclomatic complexity captures all aspects of complexity in one figure of merit, but rather to answer the question raised by Shepperd as to whether cyclomatic complexity can ..."
1988
- (Shepperd, 1988) ⇒ Shepperd, M. (1988). “A critique of cyclomatic complexity as a software metric". Software Engineering Journal. IET.
- QUOTE: "Cyclomatic complexity metric is widely cited as a useful predictor of various software ... theoretical foundations and an inadequate model of software development. The argument that the ..."