A critique of cyclomatic complexity as a software metric
Software Engineering Journal
A Study of the Applicability of Complexity Measures
IEEE Transactions on Software Engineering
Cyclomatic Complexity Density and Software Maintenance Productivity
IEEE Transactions on Software Engineering
Network flows: theory, algorithms, and applications
Network flows: theory, algorithms, and applications
Algorithms in C++
Shortest paths algorithms: theory and experimental evaluation
Mathematical Programming: Series A and B
Development and application of an automated source code maintainability index
Journal of Software Maintenance: Research and Practice
Software evolution: code delta and code churn
Journal of Systems and Software - Special issue on software maintenance
Elements of Software Science (Operating and programming systems series)
Elements of Software Science (Operating and programming systems series)
Case study of the evolution of routing algorithms in a network planning tool
Journal of Systems and Software
Proceedings of the Third C* Conference on Computer Science and Software Engineering
Hi-index | 0.01 |
In this paper, we apply different software complexity measures to a set of shortest-path algorithms. Our intention is to study what kind of new information about the algorithms the complexity measures (lines-of-code, Halstead's volume, and cyclomatic number) are able to give, to study which software complexity measures are the most useful ones in algorithm comparison, and to analyze when the software complexity comparisons are appropriate. The experiment indicates that the software complexity measures give a new dimension to empirical algorithm comparison. The results explicitly show the trade-off between speed and implementation complexity: a faster algorithm typically requires a more complex implementation. Different complexity measures correlate strongly. Therefore, even the simple lines-of-code measure gives useful results. As the software complexity measures are easy to calculate and since they give useful information, the study suggests that such measures should be included in empirical algorithm comparisons. Unfortunately, for meaningful results, all the algorithms have to be developed in the same fashion which makes the comparison of independent implementations difficult.