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.

[1]  Vianney Côté,et al.  Software metrics: An overview of recent results , 1988, J. Syst. Softw..

[2]  J. Wolfowitz,et al.  Introduction to the Theory of Statistics. , 1951 .

[3]  Harlan D. Mills,et al.  Mathematical foundations of structured programming , 1972 .

[4]  Kyle Siegrist,et al.  Reliability of Systems with Markov Transfer of Control, II , 1988, IEEE Trans. Software Eng..

[5]  Robin J. Wilson Introducción a la teoría de grafos , 1983 .

[6]  G. A. Miller THE PSYCHOLOGICAL REVIEW THE MAGICAL NUMBER SEVEN, PLUS OR MINUS TWO: SOME LIMITS ON OUR CAPACITY FOR PROCESSING INFORMATION 1 , 1956 .

[7]  John Whitehead The Value of Value Analysis , 1978 .

[8]  Maurice H. Halstead,et al.  Toward a theoretical basis for estimating programming effort , 1975, ACM '75.

[9]  Neal S. Coulter,et al.  Software Science and Cognitive Psychology , 1983, IEEE Transactions on Software Engineering.

[10]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[11]  John Stephen Davis,et al.  A Study of the Applicability of Complexity Measures , 1988, IEEE Trans. Software Eng..

[12]  Austin Melton,et al.  A Synthesis of Software Science Measures and the Cyclomatic Number , 1988, IEEE Trans. Software Eng..

[13]  Allen Van Gelder,et al.  Computer Algorithms: Introduction to Design and Analysis , 1978 .

[14]  Niklaus Wirth,et al.  Program development by stepwise refinement , 1971, CACM.

[15]  Richard Scudder,et al.  Productivity measures for information systems , 1991, Inf. Manag..

[16]  Maurice H. Halstead,et al.  Elements of software science , 1977 .

[17]  Wayne M. Zage,et al.  Design and Code Metrics Through a DIANA-Based Tool , 1992, Ada-Europe.

[18]  Edsger W. Dijkstra,et al.  Structured programming , 1972, A.P.I.C. Studies in data processing.

[19]  Warren A. Harrison,et al.  A complexity measure based on nesting level , 1981, SIGP.

[20]  Harry M. Sneed,et al.  Automated Software Quality Assurance , 1985, IEEE Transactions on Software Engineering.

[21]  Victor R. Basili,et al.  Experimentation in software engineering , 1986, IEEE Transactions on Software Engineering.

[22]  Niklaus Wirth,et al.  Algorithms + Data Structures = Programs , 1976 .

[23]  Warren Harrison,et al.  An Entropy-Based Measure of Software Complexity , 1992, IEEE Trans. Software Eng..

[24]  P A Szulewski,et al.  Automating Software Design Metrics. , 1984 .

[25]  Elaine J. Weyuker,et al.  Evaluating Software Complexity Measures , 2010, IEEE Trans. Software Eng..

[26]  Jeffrey D. Ullman,et al.  Formal languages and their relation to automata , 1969, Addison-Wesley series in computer science and information processing.

[27]  William Kaye Estes,et al.  Models of Learning, Memory, and Choice: Selected Papers , 1982 .

[28]  J.D. Musa Tools for measuring software reliability , 1989, IEEE Spectrum.

[29]  Martin L. Shooman,et al.  Software Engineering: Design, Reliability, and Management , 1983 .

[30]  K. Vairavan,et al.  An Experimental Study of Software Metrics for Real-Time Software , 1985, IEEE Transactions on Software Engineering.

[31]  Scott Norman Woodfield,et al.  Enhanced effort estimation by extending basic programming models to include modularity factors , 1980 .

[32]  George Mostow Linear Algebra , 1969 .

[33]  Tharam S. Dillon,et al.  Software Complexity and Its Impact on Software Reliability , 1988, IEEE Trans. Software Eng..

[34]  Taghi M. Khoshgoftaar,et al.  Predicting software errors, during development, using nonlinear regression models: a comparative study , 1992 .

[35]  Ravi Sethi,et al.  Programming languages - concepts and constructs , 1988 .

[36]  Claude E. Shannon,et al.  The mathematical theory of communication , 1950 .

[37]  Sallie M. Henry,et al.  Predicting source-code complexity at the design stage , 1990, IEEE Software.

[38]  James Louis Fisher Application-oriented algebra : an introduction to discrete mathematics , 1977 .

[39]  Taghi M. Khoshgoftaar,et al.  Measuring dynamic program complexity , 1992, IEEE Software.

[40]  Boris Beizer,et al.  Software Testing Techniques , 1983 .