A factor analysis of software complexity measures

Abstract Factor analysis has been used to analyse software measures and is useful to identify the important factors that influence variability in measures. Some previous results indicate that many measures are actually measuring the same thing. This article reports on a series of experiments analyzing relationships among some of the commonly used software complexity measures. Identifying relationships is important in selecting the most significant measure(s) to collect. A set of PASCAL programs was analyzed for number of decisions, number of procedures, maximum level of nesting, number of I/O statements, the Halstead count, and number of lines of code. Factor analysis showed several interesting conclusions. First, the program should be normalized to avoid high correlation between program size and everything else. Second, dividing by lines of code appears to be the best normalization. Third, an inverse relationship exists between the normalized number of decisions and both the normalized unique operand counts and the number of decisions. Finally, small programs ( 100 lines).

[1]  Bill Curtis,et al.  Measuring the Psychological Complexity of Software Maintenance Tasks with the Halstead and McCabe Metrics , 1979, IEEE Transactions on Software Engineering.

[2]  H. Harman Modern factor analysis , 1961 .

[3]  Paul Piwowarski,et al.  A nesting level complexity measure , 1982, SIGP.

[4]  NED CHAPIN A measure of software complexity , 1979, 1979 International Workshop on Managing Requirements Knowledge (MARK).

[5]  Daryl Pregibon,et al.  An analysis of static metrics and faults in C software , 1985, J. Syst. Softw..

[6]  Albert L. Baker,et al.  A philosophy for software measurement , 1990, J. Syst. Softw..

[7]  Pierre N. Robillard,et al.  Factor analysis of source code metrics , 1990, J. Syst. Softw..

[8]  W. Douglas Brooks,et al.  Software technology payoff: Some statistical evidence , 1981, J. Syst. Softw..

[9]  H. E. Dunsmore,et al.  Software engineering metrics and models , 1986 .

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

[11]  Harlan D. Mills Measurements of Program Complexity , 1969 .

[12]  John L. McTap The complexity of an individual program , 1980, AFIPS '80.

[13]  Alfred C. Hartmann A Concurrent Pascal Compiler for Minicomputers , 1977, Lecture Notes in Computer Science.

[14]  Albert L. Baker,et al.  A mathematical perspective for software measures research , 1990, Softw. Eng. J..

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

[16]  Edsger W. Dijkstra,et al.  Notes on structured programming , 1970 .

[17]  Shari Lawrence Pfleeger,et al.  Software Metrics , 1991 .

[18]  Alan R. Feuer,et al.  Some Results from an Empirical Study of Computer Software , 1979, ICSE.