Abstract
Information theory, introduced by Shannon in the context of information transfer in communication channels, is used as a foundation for research in many diverse fields. The concept Entropy in terms of information theory is seen as the average amount of information or the rate of information produced when forming a message, element by element. Entropy has found broad application in many research fields and can also be applied in software engineering for quantifying the uncertainty associated with a software code. In this paper, information entropy and its application towards measuring software complexity are explored, along with the formulation of an information entropy based complexity measure that considers logical decision-making, processes, and software statement interaction patterns in control flow graphs mapped from actual software code. To broaden the application of the proposed metric, the execution times of nodes in the control flow graphs are also incorporated. Further, the metric is evaluated against eight different axioms that a software complexity measure should satisfy.
Similar content being viewed by others
References
Adamchik VS (2009) Algorithmic complexity. School of Computer Science, Carnegie Mellon University, 2009. http://www.cs.cmu.edu/~adamchik/15121/lectures/Algorithmic%20Complexity/complexity.html
Bansiya Jagdish, Davis Carl, Etzkorn Letha (1999) An entropy-based complexity measure for object-oriented designs. Theory Pract Object Syst 5(2):111–118
Berlinger E (1980) An information theory based complexity measure. In: Proceedings of the national computer conference, May 19–22, 1980. ACM, New York
Bhojasia M (2017) C++ programming examples on numerical problems & algorithms. http://www.sanfoundry.com/cpp-programming-examples-numerical-problems-algorithms/. Accessed Oct 2017
Chaturvedi KK et al (2014) Predicting the complexity of code changes using entropy based measures. Int J Syst Assur Eng Manag 5(2):155–164
Fitzsimmons Ann, Love Tom (1978) A review and evaluation of software science. ACM Comput Surv (CSUR) 10(1):3–18
Hamer PG, Frewin GD (1982) MH Halstead’s software science-a critical examination.In: Proceedings of the 6th international conference on software engineering. IEEE Computer Society Press, Washingon
Harrison Warren (1992) An entropy-based measure of software complexity. IEEE Trans Softw Eng 18(11):1025–1029
Henry Sallie, Kafura Dennis (1981) Software structure metrics based on information flow. IEEE Trans Softw Eng 5:510–518
Jung W-S et al (2011) An entropy-based complexity measure for web applications using structural information. J Inf Sci Eng 27(2):595–619
McCabe TJ (1976) A complexity measure. IEEE Trans Softw Eng 4:308–320
McCall JA (1977) Factors in software quality. US Rome Air development center reports
Mens T (2016) Research trends in structural software complexity. arXiv:1608.01533
Mills HD (1999) The management of software engineering, Part I: principles of software engineering. IBM Syst J 38(2.3):289–295
Oviedo EI (1980) Control flow, data flow and program complexity. In: Proceedings of IEEE COMPSAC, Chicago, IL, pp 146–152
Puschner Peter, Koza Ch (1989) Calculating the maximum execution time of real-time programs. Real-time Syst 1(2):159–176
Roca JL (1996) An entropy-based method for computing software structural complexity. Microelectron Reliab 36(5):609–620
Selvarani R et al (2009) Software metrics evaluation based on entropy. In: Ramachandran M (ed) Handbook of research on software engineering and productivity technologies: implications of globalization: implications of globalization. IGI Global, Hershey, p 139
Shannon CE, Weaver W, Burks AW (1951) The mathematical theory of communication. Wiley, New York
Snider G (2001) Measuring the entropy of large software systems. HP Laboratories Palo Alto, Tech. Rep, Burbank
Solé RV, Valverde S (2004) Information theory of complex networks: On evolution and architectural constraints. In: Ben-Naim E, Frauenfelder H, Toroczkai Z (eds) Complex networks. Lecture notes in physics, vol 650. Springer, Berlin, Heidelberg
Van Vliet H, Van Vliet H, Van Vliet JC (1993) Software engineering: principles and practice, vol 3. Wiley, New York
Venkatachalam S, Sairam N, Srinivasan B (2012) Code optimization using graph mining. Res J Appl Sci Eng Technol 4(19):3618–3622
Wallace D, Watson AH, Mccabe TJ (1993) Structured testing: A testing methodology using the cyclomatic complexity metric. No. Special Publication (NIST SP)-500-235
Web.mit.edu, MATLAB Teaching Codes. [online] http://web.mit.edu/18.06/www/Course-Info/Tcodes.html. Accessed 14 July 2014
Weyuker Elaine J (1988) Evaluating software complexity measures. IEEE Trans Softw Eng 14(9):1357–1365
Woodfield SN (1979) An experiment on unit increase in problem complexity. IEEE Trans Softw Eng 2:76–79
The Simplest Way to Create Flowcharts. code2flow - Online Interactive Code to Flowchart Converter, code2flow.com
Author information
Authors and Affiliations
Corresponding author
Ethics declarations
Conflict of interest
The author(s) declare(s) that there is no conflict of interest.
Rights and permissions
About this article
Cite this article
Akundi, A., Smith, E. & Tseng, TL. Information entropy applied to software based control flow graphs. Int J Syst Assur Eng Manag 9, 1080–1091 (2018). https://doi.org/10.1007/s13198-018-0740-y
Received:
Revised:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s13198-018-0740-y