D Metrics for Evaluation of Metaprogram Complexity

The concept of complexity is used in many areas of computer science and software engineering. Software complexity metrics can be used to evaluate and compare quality of software development and maintenance processes and their products. Complexity management and measurement is especially important in novel programming technologies and paradigms, such as aspect-oriented programming, generative programming, and metaprogramming, where complex multilanguage and multi-aspect program specifications are developed and used. This paper analyzes complexity management and measurement techniques, and proposes five complexity metrics (Relative Kolmogorov Complexity, Metalanguage Richness, Cyclomatic Complexity, Normalized Difficulty, Cognitive Difficulty) for measuring complexity of metaprograms at information, metalanguage, graph, algorithm, and cognitive dimensions.

[1]  Ming Li,et al.  An Introduction to Kolmogorov Complexity and Its Applications , 1997, Texts in Computer Science.

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

[3]  Sallie M. Henry,et al.  Software Structure Metrics Based on Information Flow , 1981, IEEE Transactions on Software Engineering.

[4]  Norman F. Schneidewind,et al.  A Methodology for Validating Software Product Metrics , 2000 .

[5]  Robertas Damasevicius On the quantitative estimation of abstraction level increase in metaprograms , 2006, Comput. Sci. Inf. Syst..

[6]  Sanjay Misra,et al.  Applicability of Weyuker's properties on OO metrics: Some misunderstandings , 2008, Comput. Sci. Inf. Syst..

[7]  David N. Card,et al.  Measuring software design complexity , 1988, J. Syst. Softw..

[8]  Thorsten Blecker,et al.  A Framework for Understanding the Interdependencies between Mass Customization and Complexity , 2004 .

[9]  Michael Keating,et al.  Measuring design quality by measuring design complexity , 2000, Proceedings IEEE 2000 First International Symposium on Quality Electronic Design (Cat. No. PR00525).

[10]  Vytautas Štuikys,et al.  Open PROMOL: An Experimental Language for Target Program Modification , 2002 .

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

[12]  A. von Mayrhauser,et al.  From code understanding needs to reverse engineering tool capabilities , 1993, Proceedings of 6th International Workshop on Computer-Aided Software Engineering.

[13]  Sanjay Misra,et al.  A Model for Measuring Cognitive Complexity of Software , 2008, KES.

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

[15]  Steven D. Sheetz,et al.  Measuring Object-Oriented System Complexity , 1996 .

[16]  Jan Heering Quantification of structural information: on a question raised by Brooks , 2003, SOEN.

[17]  Petr Musílek,et al.  Human perception of software complexity: knowledge discovery from software data , 2004, 16th IEEE International Conference on Tools with Artificial Intelligence.

[18]  Marc Frappier,et al.  Software Metrics for Predicting Maintainability , 1994 .

[19]  Sandro Morasca,et al.  Property-Based Software Engineering Measurement , 1996, IEEE Trans. Software Eng..

[20]  Yingxu Wang,et al.  On the Cognitive Complexity of Software and its Quantification and Formal Measurement , 2009, Int. J. Softw. Sci. Comput. Intell..

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

[22]  Bart-Floris Visscher Exploring complexity in software systems , 2005 .

[23]  Horst Zuse,et al.  Software complexity: Measures and methods , 1990 .

[24]  Keith H. Bennett,et al.  Software maintenance and evolution: a roadmap , 2000, ICSE '00.

[25]  Gwm Matthias Rauterberg How to measure cognitive complexity in human-computer interaction , 1996 .