Using normalized compression distance to measure the evolutionary stability of software systems

Software evolutionary stability has become an important issue in software maintenance and evolution. It is directly related to software reusability, maintainability and evolvability. In reported prior research, software evolutionary stability has been measured with architecture-level metrics, including reference points and program-level metrics, such as number of modules and number of lines of code. In this paper, information-level metrics based on Kolmogorov complexity are used to measure the differences between versions of software products. Using normalized compression distance, various evolutionary stability metrics of software artifacts are defined: version stability, branch stability, structure stability and aggregate stability. Case studies are performed on two open-source products, Apache HTTP server and Apache Ant build tool. The results from this study show that information-level evolutionary stability metrics can be used together with architecture-level metrics and program-level metrics to assist monitoring the software evolution process, as well as identifying stable or unstable software artifacts.

[1]  Mohamed E. Fayad,et al.  An Introduction to Software Stability , 2001 .

[2]  Bin Ma,et al.  The similarity metric , 2001, IEEE Transactions on Information Theory.

[3]  E. R. Naganathan,et al.  Productivity improvement in software projects using 2-dimensional probabilistic software stability model (PSSM) , 2009, SOEN.

[4]  Diane Kelly,et al.  A study of design characteristics in evolving software using stability as a criterion , 2006, IEEE Transactions on Software Engineering.

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

[6]  Cláudio Sant'Anna,et al.  Evolving software product lines with aspects , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[7]  Audris Mockus,et al.  Does Code Decay? Assessing the Evidence from Change Management Data , 2001, IEEE Trans. Software Eng..

[8]  E. James Whitehead,et al.  Identification of software instabilities , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[9]  Tom Arbuckle,et al.  Studying software evolution using artefacts' shared information content , 2011, Sci. Comput. Program..

[10]  Dennis K. Peters,et al.  Software Documents: Comparison and Measurement , 2007, SEKE.

[11]  Victor R. Basili,et al.  Metrics of Software Architecture Changes Based on Structural Distance , 2005, 11th IEEE International Software Metrics Symposium (METRICS'05).

[12]  Walt Scacchi,et al.  Understanding Software Maintenance Work , 1987, IEEE Transactions on Software Engineering.

[13]  Xiaofei Xu,et al.  STCIM: a dynamic granularity oriented and stability based component identification method , 2006, SOEN.

[14]  Haitham S. Hamza Separation of concerns for evolving systems: a stability-driven approach , 2005, ACM SIGSOFT Softw. Eng. Notes.

[15]  Reidar Conradi,et al.  An empirical study of software reuse vs. defect-density and stability , 2004, Proceedings. 26th International Conference on Software Engineering.

[16]  Barry W. Boehm,et al.  How to avoid drastic software process change (using stochastic stability) , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[17]  M. E. Fayad,et al.  Software stability model: software product line engineering overhauled , 2010, KOPLE '10.

[18]  Tom Arbuckle,et al.  Measure software - and its evolution - using information content , 2009, IWPSE-Evol '09.

[19]  Srini Ramaswamy,et al.  Measuring the evolutionary stability of software systems: case studies of Linux and FreeBSD , 2009, IET Softw..

[20]  Victor R. Basili,et al.  Software errors and complexity: an empirical investigation , 1993 .

[21]  Péter Gács,et al.  Information Distance , 1998, IEEE Trans. Inf. Theory.

[22]  Tom Arbuckle Measuring multi-language software evolution: a case study , 2011, IWPSE-EVOL '11.

[23]  Tom Arbuckle,et al.  Visually Summarising Software Change , 2008, 2008 12th International Conference Information Visualisation.

[24]  S. Ramaswamy,et al.  Software and Biological Evolvability: A Comparison Using Key Properties , 2006, 2006 Second International IEEE Workshop on Software Evolvability (SE'06).

[25]  Paul Clements,et al.  Software product lines - practices and patterns , 2001, SEI series in software engineering.

[26]  William B. Frakes,et al.  Software reuse research: status and future , 2005, IEEE Transactions on Software Engineering.

[27]  Stephen S. Yau,et al.  Design Stability Measures for Software Maintenance , 1985, IEEE Transactions on Software Engineering.

[28]  Ming Li,et al.  Clustering by compression , 2003, IEEE International Symposium on Information Theory, 2003. Proceedings..

[29]  Houari A. Sahraoui,et al.  Predicting software stability using case-based reasoning , 2002, Proceedings 17th IEEE International Conference on Automated Software Engineering,.

[30]  Nicholas Tran The normalized compression distance and image distinguishability , 2007, Electronic Imaging.

[31]  Mohamed Fayad Accomplishing software stability , 2002, CACM.

[32]  Francisco Dantas,et al.  Reuse vs. maintainability: revealing the impact of composition code properties , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[33]  E. R. Naganathan,et al.  Architecting autonomic computing systems through Probabilistic Software Stability Model (PSSM) , 2009, ICIS '09.

[34]  Harald C. Gall,et al.  Software evolution observations based on product release history , 1997, 1997 Proceedings International Conference on Software Maintenance.

[35]  Chris F. Kemerer,et al.  An Empirical Approach to Studying Software Evolution , 1999, IEEE Trans. Software Eng..

[36]  Murali Sitaraman,et al.  Foundations of component-based systems , 2000 .

[37]  Stephen S. Yau,et al.  Some Stability Measures for Software Maintenance , 1980, IEEE Trans. Software Eng..

[38]  Adam Altman,et al.  Thinking objectively: an introduction to software stability , 2001, CACM.

[39]  Victor R. Basili,et al.  Software errors and complexity: an empirical investigation0 , 1984, CACM.