A Cognitive Measurement of Complexity and Comprehension for Object-Oriented Code

Inherited complexity is one of the difficult tasks in software engineering field. Further, it is said that there is no physical laws or standard guidelines suit for designing different types of software. Hence, to make the software engineering as a matured engineering discipline like others, it is necessary that it has its own theoretical frameworks and laws. Software designing and development is a human effort which takes a lot of time and considers various parameters for successful completion of the software. The cognitive informatics plays an important role for understanding the essential characteristics of the software. The aim of this work is to consider the fundamental characteristics of the source code of Object-Oriented software i.e. complexity and understandability. The complexity of the programs is analyzed with the help of extracted important attributes of the source code, which is further utilized to evaluate the understandability factor. The aforementioned characteristics are analyzed on the basis of 16 C++ programs by distributing them to forty MCA students. They all tried to understand the source code of the given program and mean time is taken as the actual time needed to understand the program. For validation of this work, Briand’s framework is used and the presented metric is also evaluated comparatively with existing metric which proves its robustness.





References:
[1] F.L. Bauer, “Software Engineering”, Information Processing, 1972.
[2] E.W. Dijkstra, A Discipline of Programming, Prentice-Hall, Englewood Cliffs, NJ, 1976
[3] F.P. Brooks, “No Silver Bullet: Essence and Accidents of Software Engineering”, IEEE Computer, vol. 20, no. 4, 1987, pp. 10-19.
[4] J.F. Peters and W. Pedrycz, Software Engineering: An Engineering Approach, John Wiley & Sons, Inc., NY, 1998.
[5] Y. Wang, “Software Engineering Foundations: A Trans disciplinary and Rigorous Perspective”, CRC Book Series in Software Engineering, Vol. 2, 2006.
[6] IEEE CS, “IEEE Standard Glossary of Software Engineering Terminology”, IEEE Standard 610.12, (1990).
[7] I. Sommerville, Software Engineering, 8th edition, Boston, MA: Addison-Wesley, 2007.
[8] R. Reißing, “Towards a model for object-oriented design measurement”, In 5th International ECOOP workshop on quantitative approaches in object-oriented software engineering, 2001, pp. 71-84.
[9] S.R. Chidamber and C.F. Kemerer, “A metrics suite for object oriented design”, IEEE Transactions on Software Engineering, vol. 20, no. 6, 1994, pp. 476-493.
[10] R. Harrison, S.J. Counsell and R.V. Nithi, “An evaluation of the MOOD set of object-oriented software metrics”, IEEE Transactions on Software Engineering, vol. 24, no. 6, 1998, pp. 491-496.
[11] M. Lorenz, J. Kidd, Object-oriented software metrics, Englewood Cliffs, New Jersey: Prentice Hall, 1994.
[12] V.R. Basili, L.C. Briand, and W.L. Melo, “A validation of object-oriented design metrics as quality indicators”, IEEE Transactions on Software Engineering, vol. 22, no. 10, 1996, pp. 751-761.
[13] S. Purao, and V. Vaishnavi, “Product metrics for object-oriented systems”. ACM Computing Surveys (CSUR), vol. 35, no. 2, pp. 191-221.
[14] V.K. Vaishnavi, S. Purao, and J. Liegle, “Object-oriented product metrics: A generic framework”, Information Sciences, vol. 177 no. 2, 2007, pp. 587-606.
[15] S. Misra and I. Akman, “Weighted class complexity: A measure of complexity for object –oriented system” Journal of Information Science and Engineering, vol. 24, 2008, pp. 1689-1708.
[16] S. Misra, I. Akman and M. Koyuncu, “An inheritance complexity metric for object-oriented code: A cognitive approach”, Sadhana, vol. 36, no. 3, 2007, pp. 317-337.
[17] A.K. Jakhar and K. Rajnish, “Measure of Complexity for Object-Oriented Programs: A Cognitive Approach”, In Proc. of 3rd International Conf. on Advanced Computing, Networking and Informatics: ICACNI, vol. 2, 2015, pp. 397-404.
[18] Y. Wang, “On the Cognitive Informatics Foundations of Software Engineering”, Proc. of the 3rd IEEE International Conf. on Cognitive Informatics, 2004, pp. 21-31.
[19] Y. Wang and J. Shao, “A new measure of software complexity based on cognitive Weights”, IEEE Canadian Journal of Electrical and Computer Engineering, vol. 28, no. 2, 2003, pp. 69-74.
[20] L.C. Briand and J. Wüst, “Modeling development effort in object-oriented systems using design properties”, IEEE Transactions on Software Engineering, vol. 27, no. 11, 2011, pp. 963-986.
[21] Y. Wang and J. Shao, “Measurement of the Cognitive Functional Complexity of Software”, in Proc. of 2nd IEEE International Conf. on Cognitive Informatics, 2003, pp. 69-74.
[22] D. Abbot, “A design complexity metric for object-oriented development”, Unpublished Master’s Thesis, Department of Computer Science, Clemson University, U.S.A, 1993.
[23] C. Kaner, “Software Engineering Metrics: What do they Measure and how do we know?”, In In Metrics 2004, IEEE, CS.
[24] A. Kamthane, Object-Oriented Programming with ANSI & Turbo C++, Pearson Education, Fourth Edition, India, 2003.