Cyclomatic complexity must be positive with an upper bound of 10 being recommended. Most well-developed for application to individual subroutines. Productivity is chiefly a management concern, while reliability is a quality factor directly visible to users of software systems. These externally visible attributes of software processes and products are strongly influenced by engineering attributes of software such as complexity. Well-designed software exhibits a minimum of unnecessary complexity.
Unmanaged complexity leads to software difficult to use, maintain, and modify.
It causes increased development costs and overrun schedules. Controlling and measuring complexity is a challenging engineering, management, and research problem. Metrics have been created for measuring various aspects of complexity such as sheer size, control flow, data structures, and intermodule structure. Complexity metrics not otherwise discussed here include Halstead's Software Science metrics and Henry and Kafura's Information Flow metric. Halstead's metrics are controversial.