Complexity metrics are used to determine the complexity of a report based on the content of each formula. Reports with large numbers of formulas with lots of dependencies and conditions are typically more costly to maintain than simpler reports. Complex formulas also require more development and testing time in the project life cycle. Report Analyzer provides complexity metric ratings per report at the formula level and at the report level providing comparisons over an entire reporting project. These comparisons help pin-point reports which may require more testing prior to deployment, and which reports may be more costly to maintain over their life time once in the production environment.
Cyclomatic complexity (McCabe)
Cyclomatic complexity is a measure of the structural complexity of a formula,
and is one of the more popular complexity metrics used in software engineering.
It provides a measure of the number of logical branches in a procedure, with each
branch indicating at least one test case required to cover the logical branch. A
high cyclomatic complexity indicates the formula/report is harder to understand
and more costly to test and maintain, presenting more risk once the report is deployed
to production.
1-10 | Simple procedure, easy to maintain, low risk |
11-20 | More complex, moderate risk |
21-50 | Complex, high risk |
>50 | Untestable, very high risk |
Cyclomatic complexity is a good indicator of the number of test cases required to test a report. Values above 20 should be considered high risk and thorough test cases should be developed reduce risk.
Structural Fan-In/Fan-Out (Constantine & Yourdon)
Structural Fan-In denotes the number of procedures (formulas) that reference
the current procedure. A high rating indicates good design of the formula for re-use
through out the report.
Structural Fan-Out denotes the number of procedures the current procedure
calls. A high number indicates strongly coupled code which has lots of dependencies
on other formulas, making the procedure harder to maintain than others with less
coupling.
Informational Fan-In/Fan-Out
The Informational Fan-In/Fan-Out metric focuses on data flow within a procedure.
The amount of global data a procedure references may be high but the structural
fan-out could be zero, providing a misleading indication on the procedure complexity.
Informational Fan-In estimates the amount of information a procedure reads
(procedures called + parameters + global variables).
Informational Fan-Out estimates the information a procedure returns (procedures
that call this procedure + parameters assigned to + global variables assigned).
Information Complexity
Procedures with a high information complexity (lines of code * (informational fan-in
* informational fan-out)) can indicate the procedure has more than one function,
is a potential bottleneck during execution, and has general high complexity. These
procedures should be top on the list for re-visiting the design and/or extensive
testing.
Report Analyzer is a
trademark of
Cortex Systems Pty Ltd. |