A unified metric of software complexity: Measuring productivity, quality, and value
Abstract There are different sources of software complexity. A large set of complexity metrics can measure distinct program attributes to show different program size indicators. Nevertheless, the size of a program must be obtained from the overall program complexity based on the values of all program factors. Based on the concept that software complexity is a measurement of the resources expended through the software life cycle, and the fact that a program may be approached from three distinct perspectives, the complexity factors are classified into three complexity domains: syntactical, functional, and computational. Each domain represents the magnitudes of the factors in one of the three dimensions: length, time, and level or depth. Using these ideas, in this article we define ordinal measures of the complexity factors based on discrete mathematical structures of programs and the information content or entropy, transform the different domains of software complexity in linear metric spaces in order to represent a program by a set of vectors whose magnitudes and distances represent metrics of the program components, and define a “unified complexity metric” of the program size and the effort needed to produce it over the multilinear complexity space conformed by the three complexity spaces. These metrics may be used to define a statistical method that estimates the size of a program and the effort needed to produce it from the external system design, the productivity in software projects, and the quality and value of software products.