||Binary Decisions divided by the number of statements.
||Number of branching conditions in the flow graph with two possible outcomes. Includes statements with implicit condition evaluation
(loops, AT END, and so on).
||Number of statements performing arithmetic calculations.
||Binary Decisions, plus Unique Operands in Conditions.
||v(G) = e - n + 2, where v(G) is the cyclomatic complexity of the flow graph (G) for the program in question, e is the number
of edges in G, and n is the number of nodes. Quantity of decision logic. The number of linearly independent paths (minimum
number of paths to be tested). v(G) = DE + 1, where DE is the number of binary decisions made in the program.
||D = (n1 / 2) * (N2 / n2), where n1 is Unique Operators, N2 is Operands, and n2 is Unique Operands.
||B = E**(2/3) / 3000, where E is Programming Effort.
|Exception Handling Statements
||Number of exception handling statements.
||All assignments, function calls (alone on a line), calls, returns, IF, DO, FOR, CHOOSE, EXIT, CONTINUE, and GOTO statements.
|Extended Cyclomatic Complexity
||Cyclomatic Complexity, plus Logical Operators in Conditions. Number of all paths in the program.
||Number of function calls.
||Lines of Code divided by K, where K depends on the language: Cobol=77, Natural=52, PL/I=67. Estimate of the number of end-user
business functions implemented by the program.
||Number of GOTO statements, including conditional GOTOs.
||Number of IF statements.
||I = L * V, where L is Program Level and V is Program Volume. Complexity of a given algorithm independent of the language used
to express the algorithm.
||Number of labels.
|Lines of Code
||Number of lines of code, plus the number of lines of code in included files and any files they include. Comments and blank
lines are not counted.
|Local Data Items
||Number of local data items.
|Logical Operators in Conditions
||Number of binary logical operators used in conditions.
||Number of repetitively executing statements.
||MI = 171 - 5.2 * ln (PgmVolume) - 0.23 * ExtCycComp - 16.2 * ln (LOC) + 50 * sin (sqrt (2.46 * CommentLines/SourceLines)),
where PgmVolume is Program Volume, ExtCycComp is Extended Cyclomatic Complexity, LOC is Lines of Code, CommentLines is Comment
Lines, and SourceLines is Source Lines.
||Number of method calls.
||Maximum nesting of conditional statements within conditional statements (0 if no conditional statements, 1 if no nesting).
||Number of operand occurrences (N2). Operands are variables and literals used in operators. Compare Unique Operands.
||Number of operator occurrences (N1). Operators are executable statements and unary and binary operations. Compare Unique Operators.
||Number of parameters in method calls.
||Number of data elements declared as pointers.
||N = N1 + N2, where N1 is Operators and N2 is Operands.
||L = 1 / D, where D is Difficulty.
||V = N * log2(n), where N is Program Length and n is Vocabulary. Minimum number of bits required to code the program.
||E = V / L, where V is Program Volume and L is Program Level. Estimated mental effort required to develop the program.
||T = E / 18, where E is the Programming Effort and 18 is Stroud’s Number. Estimated amount of time required to implement the
algorithm, in seconds.
|Static Data Items
||Number of static data items.
||Number of SWITCH statements.
||Number of distinct operands (n2). Operands are variables and literals used in operators. Uniqueness of literals is determined
by their notation. Compare Operands.
|Unique Operands in Conditions
||Number of distinct operands used in conditions.
||Number of distinct operators (n1). Operators are executable statements and unary and binary operations. Compare Operators.
||n = n1 + n2, where n1 is the number of Unique Operators and n2 is the number of Unique Operands.