Product Complexity

Complexity is assessed as the subjective average of four types of control functions: control, computation, device-dependent, or data management operations.
Control Operations
Very Low: Straight-line code with a few non-nested structured programming operations: DOs, CASEs, IF-THEN-ELSEs. Simple predicates.
Low: Straight forward nesting of structured programming operators. Mostly simple predicates.
Nominal: Mostly simple nesting. Some intermodule control. Decision tables.
High: Highly nested structured programming operators with many compound predicates. Queue and stack control. Considerable intermodule control.
Very High: Reentrant and recursive coding. Fixed-priority interrupt handling.
Extra High: Multiple resource scheduling with dynamically changing priorities. Microcode-level control.
Computational Operations:
Very Low: Evaluation of simple expressions: e.g. A = B + C x (D - E).
Low: Evaluation of moderate level expressions, e.g. D = sqrt(B^2 - 4.0 x A x C).
Nominal: Use of standard math and statistical routines. Basic matrix and vector operations.
High: Basic numerical analysis: multivariate interpolation, ordinary differential equations. Basic truncation, roundoff concerns.
Very High: Difficult but structured numerical analysis: near-singular matrix equations, partial differential equations.
Extra High: Difficult and unstructured numerical analysis: highly accurate analysis of noisy, stochastic data.
Device-Dependent Operations
Very Low: Simple read and write statements with simple formats.
Low: No cognizance needed of particular processor or I/O device characteristics. I/O done at GET/PUT level. No cognizance of overlap.
Nominal: I/O processing includes device selection, status checking and error processing.
High: Operations at the physical I/O level (physical storage address translations; seeks, reads, etc). Optimized I/O overlap.
Very High: Routines for interrupt diagnosis, servicing, masking. Communication line handling.
Extra High: Device timing-dependent coding, microprogrammed operations.
Data Management Operations
Very Low: Simple arrays in main memory.
Low: Single file sub-setting with no data structure changes, no edits, no intermediate files.
Nominal: Multi-file input and single file output. Simple structural changes, simple edits.
High: Special purpose subroutines activated by data steam contents. Complex data restructuring at the record level.
Very High: A generalized, parameter-driven file structuring routine. File building, command processing, search optimization.
Extra High: Highly coupled, dynamic relational structures. Natural language data management.