Abstract
In the 1990s, there is an emphasis on finding ways to lower software cost and improve quality. Thus, it is very important to quantify and measure factors, such as software complexity, which have been shown to affect cost and quality. Researchers have defined many software complexity measures, and have exploited them to identify fault-prone program modules, to predict the number of faults that testing and operation will reveal, or to assess maintainability. Information theory based software measures are attractive because they quantify, with a standard unit, the amount of information in an abstraction of a program. The unit of measure is a bit. The purpose of this paper is to survey the state of the art of applications of information theory to software measurement, beginning in 1972. Information theory based measures have been applied to most phases of the development lifecycle. However, there have been relatively few papers. Most measures have not been empirically validated. One can conclude that the field is in its infancy. Relevant concepts of information theory are briefly described, and tables summarize the references from various perspectives. Since the amount of research, thus far, has been very limited, researchers will find numerous opportunities to validate, refine, and improve the measures presented here. Such research should give future practitioners useful software measures for each phase of the lifecycle.
Similar content being viewed by others
References
Basili, V.R., Selby, R.W. and Hutchens, D.H. (1986) Experimentation in software engineering. IEEE Transactions on Software Engineering, SE-12(7), 733–743.
Berlinger, E. (1980) An information theory based complexity measure, in Proceedings of the National Computer Conference, pp. 773–779.
Boloix, G. and Robillard, P.N. (1988) Interconnectivity metric for software complexity. Information Systems and Operations Research, 26(1), 17–39.
Chanon, R.N. (1973) On a measure of program structure, PhD thesis, Carnegie-Mellon University, Pittsburgh, PA.
Chanon, R.N. (1974) On a measure of program structure, in Proceedings of Programming Symposium, Paris, Robinet, B. (ed) (Springer-Verlag) pp. 9–16. (See also Chanon (1973).)
Chen, E.T. (1978) Program complexity and programmer productivity. IEEE Transactions on Software Engineering, SE-4(3), 187–194.
Cook, C.R. (1991) Information theory metric for assembly language, in Proceedings of Third Annual Oregon Workshop on Software Metrics, Silver Falls, OR. Portland State University, Oregon Center for Advanced Technology Education.
Cook, M.L. (1982) Software metrics: an introduction and annotated bibliography. ACM Software Engineering Notes, 7(2), 41–60.
Côté, V., Bourque, P., Oligny, S. and Rivard, N. (1988) Software metrics: an overview of recent results. Journal of Systems and Software, 8, 121–131.
Coulter, N.S., Cooper, R.B. and Solomon, M.K. (1987) Information-theoretic complexity of program specifications. Computer Journal, 30(3), 223–227.
Cover, T.M. and Thomas, J.A. (1991) Elements of Information Theory (John Wiley & Sons, New York).
Curtis, B. (1979) In search of software complexity, in Proceedings of Workshop on Quantitative Models for Reliability, Complexity and Cost, Washington, DC, IEEE Computer Society, pp. 95–106.
Davis, J.S. and LeBlanc, R.J. (1988) A study of the applicability of complexity measures. IEEE Transactions on Software Engineering, 14(9), 1366–1372.
Fenton, N.E. (1992) When a software measure is not a measure. Software Engineering Journal, 7(5), 357–362.
Halstead, M. (1977) Elements of Software Science (Elsevier, New York).
Harrison, W. (1984) Bibliography on software complexity. ACM SIGPLAN Notices, 19(2), 17–27.
Harrison, W. (1992) An entropy-based measure of software complexity, IEEE Transactions on Software Engineering, 18(11), 1025–1029.
Hellerman, L. (1972) A measure of computational work. IEEE Transactions on Computers, C-21(5), 439–446.
Henry, S. and Wake, S. (1991) Predicting maintainability with software quality metrics. Software Maintenance: Research and Practice, 3, 129–143.
Jensen, H.A. and Vairavan, K. (1985) An experimental study of software metrics for real-time software. IEEE Transactions on Software Engineering, SE-11(2), 231–234.
Khoshgoftaar, T.M., Lanning, D.L. and Pandya, A.S. (1994) A comparative study of pattern recognition techniques for quality evaluation of telecommunications software. IEEE Journal on Selected Areas in Communications, 12(2), 279–291.
Khoshgoftaar, T.M. and Munson, J.C. (1990) Predicting software development errors using software complexity metrics. IEEE Journal on Selected Areas in Communications, 8(2), 253–261.
Khoshgoftaar, T.M. and Munson, J.C. (1992a) Applications of a relative complexity metric for predicting source code complexity at the design phase, in Proceedings of the Second Software Engineering Research Forum, Melbourne, FL, pp. 191–198.
Khoshgoftaar, T.M. and Munson, J.C. (1992b) A measure of software system complexity and its relationship to faults, in Proceedings of 1992 International Simulation Technology Conference SimTec '92 and WNN '92, Clear Lake, TX, pp. 267–272.
Khoshgoftaar, T.M., Munson, J.C. and Lanning, D.L. (1993) Dynamic system complexity, in Proceedings of First International Software Metrics Symposium, Baltimore, MD, IEEE Computer Society Technical Committee on Software Engineering, pp. 129–140.
Lew, K.S., Dillon, T.S. and Forward, K.E. (1988) Software complexity and its impact on software reliability. IEEE Transitions on Software Engineering, 14(11), 1645–1655.
McCabe, T.J. (1976) A complexity measure. IEEE Transactions on Software Engineering, SE-2(4), 308–320.
Mohanty, S.N. (1979) Models and measurements for quality assessment of software. Computing Surveys, 11(3), 251–275.
Mohanty, S.N. (1981) Entropy metrics for software design evaluation. Journal of Systems and Software, 2, 39–46.
Mowshowitz, A. (1968a) Entropy and the complexity of graphs: I. An index of the relative complexity of a graph. Bulletin of Mathematical Biophysics, 30(1), 175–204.
Mowshowitz, A. (1968b) Entropy and the complexity of graphs: II. The information content of digraphs and infinite graphs. Bulletin of Mathematical Biophysics, 30(2), 225–240.
Mowshowitz, A. (1968c) Entropy and the complexity of graphs: III. Graphs with prescribed information content. Bulletin of Mathematical Biophysics, 30(3), 387–414.
Mowshowitz, A. (1968d) Entropy and the complexity of graphs: IV. Entropy measures and graphical structure. Bulletin of Mathematical Biophysics, 30(4), 533–546.
Munson, J.C. and Khoshgoftaar, T.M. (1989) The dimensionality of program complexity, in Proceedings of the 11th International Conference on Software Engineering, Pittsburgh, PA, pp. 245–253.
Munson, J.C. and Khoshgoftaar, T.M. (1990) Applications of a relative complexity metric for software project management. Journal of Systems and Software, 12, 283–291.
Munson, J.C. and Khoshgoftaar, T.M. (1991) Some primitive control flow metrics, in Proceedings of the Third Annual Oregon Workshop on Software Metrics, Silver Falls, OR. Portland State University, Oregon Center for Advanced Technology Education.
Munson, J.C. and Khoshgoftaar, T.M. (1992a) The detection of fault-prone programs. IEEE Transactions on Software Engineering, 18(5), 423–433.
Munson, J.C. and Khoshgoftaar, T.M. (1992b) Measuring dynamic program complexity. IEEE Software, 9(6), 48–55.
Munson, J.C. and Khoshgoftaar, T.M. (1993) Measurement of data structure complexity. Journal of Systems and Software, 20(2), 217–225.
Musa, J.D. (1993) Operational profiles in software reliability engineering. IEEE Software, 10(2), 14–32.
Parnas, D.L. (1972) On the criteria to be used in decomposing systems. Communications of the ACM, 15(12), 1053–1058.
Paulson, D. and Wand, Y. (1992) An automated approach to information systems decomposition. IEEE Transactions on Software Engineering, 18(3), 174–189.
Porter, A.A. and Selby, R.W. (1990) Empirically guided software development using metric-based classification trees. IEEE Software, 7(2), 46–54.
Ramirez, D.E. (1989) On two nonequivalent measures of complexity. IEEE Transactions on Systems, Man, and Cybernetics, 19(5); 1073–1077. (See also van Emden (1971)).
Robillard, P.N. and Boloix, G. (1989) Interconnectivity metrics: A new metric showing how a program is organized. Journal of Systems and Software, 10, 29–39.
Samadzadeh, M.H. and Edwards, W.R. (1988) A classification model of software comprehension, in Proceedings of the Twenty-First Annual Hawaii International Conference on System Sciences, Volume II, Shriver, B.D. (ed.) Kailua-Kona, HI. IEEE Computer Society Press, p. 541. (Abstract only.)
Schneidewind, N.F. (1992) Methodology for validating software metrics. IEEE Transactions on Software Engineering, 18(5), 410–422.
Schütt, D. (1977) On a hypergraph oriented measure for applied computer science, in Digest of Papers: COMPCON 77 Fall, Washington, DC. IEEE Computer Society, pp. 295–296. (Abstract only.)
Shannon, C.E. and Weaver, W. (1949) The Mathematical Theory of Communication (University of Illinois Press, Urbana, IL).
Shen, V.Y., Cote, S.D. and Dunsmore, H.E. (1983) Software science revisited: A critical analysis of the theory and its empirical support. IEEE Transactions on Software Engineering, SE-9(2), 155–165.
Torres, W.R. and Samadzadeh, M.H. (1991) Software reuse and information theory based metrics, in Proceedings of 1991 Symposium on Applied Computing, Kansas City, MO. IEEE Computer Society Press, pp. 437–446.
Troy, D.A. and Zweben, S.H. (1981) Measuring the quality of structured designs. Journal of Systems and Software, 2, 113–120.
van Emden, M.H. (1970) Hierarchical decomposition of complexity. Machine Intelligence, 5, 361–380. (See also van Emden (1971) for details.)
van Emden, M.H. (1971) An Analysis of Complexity. Number 35 in Mathematical Centre Tracts (Mathematisch Centrum, Amsterdam). (See also Ramirez (1989).)
WaguespackJr., L.J. and Badlani, S. (1987) Software complexity assessments: An introduction and annotated bibliography. ACM Software Engineering Notes, 12(4), 52–71.
Watanabe, S. (1960) Information theoretical analysis of multivariate correlation. IBM Journal of Research and Development, 4(1), 66–82.
Weyuker, E.J. (1988) Evaluating software complexity measures. IEEE Transactions on Software Engineering, 14(9), 1357–1365.
Zhuo, F., Lowther, B., Oman, P. and Hagemeister, J. (1993) Constructing and testing software maintainability assessment models, in Proceedings of the First International Software Metrics Symposium, Baltimore, MD. IEEE Computer Society Technical Committee on Software Engineering, pp. 61–70.
Zuse, H. (1991) Software Complexity: Measures and Methods (deGruyter, Berlin).
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Khoshgoftaar, T.M., Allen, E.B. Applications of information theory to software engineering measurement. Software Quality Journal 3, 79–103 (1994). https://doi.org/10.1007/BF00213632
Received:
Issue Date:
DOI: https://doi.org/10.1007/BF00213632