Complexity Metrics Tab

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.  

Design Tab

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.
© 2006 Cortex Systems