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.