An Exploratory Study of Factors Influencing Change Entropy

Software systems continuously change for various reasons, such as adding new features, performing bug fixing, or doing some refactoring activities. Such changes may either increase the source code complexity and disorganization, or help to reduce it. Developers apply adequate design principles and assets, including design patterns, to make software resilient to changes and control complexity. This paper empirically investigates the relationship of source code complexity and disorganization-measured using source code entropy-with three factors: different kinds of changes occurring to software systems, the presence of design patterns in the source code, and the number of contributors that modified the source code file. Results of an exploratory study carried out on an interval of the life-time span of two open source systems, ArgoUML and Eclipse-JDT, suggest that (i) different kinds of changes-namely refactorings and other kinds of changes-may contribute either negatively or positively to the entropy, (ii) the use of design patterns does not necessarily help to mitigate code degradation-thus confirming previous findings on the role played by design patterns-and (iii) entropy tends to increase with the number of file committers.

[1]  James M. Bieman,et al.  Design patterns and change proneness: an examination of five evolving systems , 2003, Proceedings. 5th International Workshop on Enterprise Networking and Computing in Healthcare Industry (IEEE Cat. No.03EX717).

[2]  Jacob Cohen Statistical Power Analysis for the Behavioral Sciences , 1969, The SAGE Encyclopedia of Research Design.

[3]  Warren Harrison,et al.  An Entropy-Based Measure of Software Complexity , 1992, IEEE Trans. Software Eng..

[4]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[5]  M.M. Lehman,et al.  Programs, life cycles, and laws of software evolution , 1980, Proceedings of the IEEE.

[6]  Harald C. Gall,et al.  On the relation of refactorings and software defect prediction , 2008, MSR '08.

[7]  Lerina Aversano,et al.  Relationship between design patterns defects and crosscutting concern scattering degree: an empirical study , 2009, IET Softw..

[8]  Alessandro Bianchi,et al.  Evaluating software degradation through entropy , 2001, Proceedings Seventh International Software Metrics Symposium.

[9]  Lerina Aversano,et al.  An empirical study on the evolution of design patterns , 2007, ESEC-FSE '07.

[10]  Sang Joon Kim,et al.  A Mathematical Theory of Communication , 2006 .

[11]  Alexander Chatzigeorgiou,et al.  Design Pattern Detection Using Similarity Scoring , 2006, IEEE Transactions on Software Engineering.

[12]  Daniel M. Germán,et al.  Who are Source Code Contributors and How do they Change? , 2009, 2009 16th Working Conference on Reverse Engineering.

[13]  N. Chapin,et al.  An entropy metric for software maintainability , 1989, [1989] Proceedings of the Twenty-Second Annual Hawaii International Conference on System Sciences. Volume II: Software Track.

[14]  Richard C. Holt,et al.  The chaos of software development , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[15]  David Lorge Parnas,et al.  Software aging , 1994, Proceedings of 16th International Conference on Software Engineering.

[16]  P. Lachenbruch Statistical Power Analysis for the Behavioral Sciences (2nd ed.) , 1989 .

[17]  Marek Vokác Defect frequency and design patterns: an empirical study of industrial code , 2004, IEEE Transactions on Software Engineering.

[18]  Ahmed E. Hassan,et al.  Predicting faults using the complexity of code changes , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[19]  Yann-Gaël Guéhéneuc,et al.  An empirical study of the relationships between design pattern roles and class change proneness , 2008, 2008 IEEE International Conference on Software Maintenance.