The Table (found at the end of this section) provides the new COCOMO II CPLX rating scale. Complexity is divided into five areas: control operations, computational operations, device-dependent operations, data management operations, and user interface management operations. Select the area or combination of areas that characterize the product or a sub-system of the product.
Rating Levels | Very Low | Low | Nominal | High | Very High | Extra High |
---|---|---|---|---|---|---|
Effort Multipliers | 0.73 | 0.87 | 1.00 | 1.17 | 1.34 | 1.74 |
The complexity rating is the subjective weighted average of the following areas.
Control Operations | Computational Operations | Device-dependent Operations | Data Management Operations | User Interface Management Operations | |
---|---|---|---|---|---|
Very Low | Straight-line code with a few non-nested structured programming operators: DOs, CASEs, IFTHENELSEs. Simple module composition via procedure calls or simple scripts. | Evaluation of simple expressions: e.g., A=B+C*(D-E) | Simple read, write statements with simple formats. | Simple arrays in main memory. Simple COTS-DB queries, updates. | Simple input forms, report generators. |
Low | Straightforward nesting of structured programming operators. Mostly simple predicates | Evaluation of moderate-level expressions: e.g., D=SQRT(B**2- 4.*A*C) | No cognizance needed of particular processor or I/O device characteristics. I/O done at GET/PUT level. | Single file subsetting with no data structure changes, no edits, no intermediate files. Moderately complex COTS-DB queries, updates. | Use of simple graphic user interface (GUI) builders. |
Nominal | Mostly simple nesting. Some intermodule control. Decision tables. Simple callbacks or message passing, including middleware-supported distributed processing | Use of standard math and statistical routines. Basic matrix/vector operations. | I/O processing includes device selection, status checking and error processing. | Multi-file input and single file output. Simple structural changes, simple edits. Complex COTS-DB queries, updates. | Simple use of widget set. |
High | Highly nested structured programming operators with many compound predicates. Queue and stack control. Homogeneous, distributed processing. Single processor soft real-time control. | Basic numerical analysis: multivariate interpolation, ordinary differential equations. Basic truncation, roundoff concerns. | Operations at physical I/O level (physical storage address translations; seeks, reads, etc.). Optimized I/O overlap. | Simple triggers activated by data stream contents. Complex data restructuring. | Widget set development and extension. Simple voice I/O, multimedia. |
Very High | Reentrant and recursive coding. Fixed-priority interrupt handling. Task synchronization, complex callbacks, heterogeneous distributed processing. Single-processor hard real-time control. | Difficult but structured numerical analysis: near-singular matrix equations, partial differential equations. Simple parallelization. | Routines for interrupt diagnosis, servicing, masking. Communication line handling. Performance-intensive embedded systems. | Distributed database coordination. Complex triggers. Search optimization. | Moderately complex 2D/3D, dynamic graphics, multimedia. |
Extra High | Multiple resource scheduling with dynamically changing priorities. Microcode-level control. Distributed hard real-time control. | Difficult and unstructured numerical analysis: highly accurate analysis of noisy, stochastic data. Complex parallelization. | Device timing-dependent coding, micro-programmed operations. Performance-critical embedded systems. | Highly coupled, dynamic relational and object structures. Natural language data management. | Complex multimedia, virtual reality. |