The evolution of Java build systems

Build systems are responsible for transforming static source code artifacts into executable software. While build systems play such a crucial role in software development and maintenance, they have been largely ignored by software evolution researchers. However, a firm understanding of build system aging processes is needed in order to allow project managers to allocate personnel and resources to build system maintenance tasks effectively, and reduce the build maintenance overhead on regular development activities. In this paper, we study the evolution of build systems based on two popular Java build languages (i.e., ANT and Maven) from two perspectives: (1) a static perspective, where we examine the complexity of build system specifications using software metrics adopted from the source code domain; and (2) a dynamic perspective, where the complexity and coverage of representative build runs are measured. Case studies of the build systems of six open source build projects with a combined history of 172 releases show that build system and source code size are highly correlated, with source code restructurings often requiring build system restructurings. Furthermore, we find that Java build systems evolve dynamically in terms of duration and recursive depth of the directory hierarchy.

[1]  Shane McIntosh,et al.  An empirical study of build maintenance effort , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

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

[3]  Wolfgang De Meuter,et al.  Design recovery and maintenance of build systems , 2007, 2007 IEEE International Conference on Software Maintenance.

[4]  Maurice H. Halstead,et al.  Elements of software science (Operating and programming systems series) , 1977 .

[5]  Rahul Premraj,et al.  How developer communication frequency relates to bug introducing changes , 2009, IWPSE-Evol '09.

[6]  T Epperly,et al.  Software in the DOE: The Hidden Overhead of''The Build'' , 2002 .

[7]  George Neville-Neil Kode viciousSystem changes and side effects , 2009, CACM.

[8]  Shane McIntosh,et al.  The evolution of ANT build systems , 2010, 2010 7th IEEE Working Conference on Mining Software Repositories (MSR 2010).

[9]  Mikhail Dmitriev Language-specific make technology for the Java programming language , 2002, OOPSLA '02.

[10]  Yann-Gaël Guéhéneuc,et al.  Feature identification: a novel approach and a case study , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[11]  Erez Zadok,et al.  Overhauling Amd for the '00s: A Case Study of GNU Autotools , 2002, USENIX Annual Technical Conference, FREENIX Track.

[12]  Wolfgang De Meuter,et al.  The Evolution of the Linux Build System , 2007, Electron. Commun. Eur. Assoc. Softw. Sci. Technol..

[13]  Meir M. Lehman,et al.  A Model of Large Program Development , 1976, IBM Syst. J..

[14]  N. Nagappan,et al.  Use of relative code churn measures to predict system defect density , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[15]  Meir M. Lehman,et al.  Metrics and Laws of Software Evolution , 2000 .

[16]  Juan Julián Merelo Guervós,et al.  Beyond source code: The importance of other artifacts in software development (a case study) , 2006, J. Syst. Softw..

[17]  Stuart I. Feldman,et al.  Make — a program for maintaining computer programs , 1979, Softw. Pract. Exp..

[18]  Dewayne E. Perry,et al.  Metrics and laws of software evolution-the nineties view , 1997, Proceedings Fourth International Software Metrics Symposium.

[19]  Michael W. Godfrey,et al.  The build-time software architecture view , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[20]  Harvey P. Siy,et al.  Predicting Fault Incidence Using Software Change History , 2000, IEEE Trans. Software Eng..

[21]  Peter Miller Recursive Make Considered Harmful , 2008 .

[22]  Merijn de Jonge,et al.  Build-level components , 2005, IEEE Transactions on Software Engineering.

[23]  Walter F. Stenning,et al.  AN EMPIRICAL STUDY , 2003 .

[24]  Michael W. Godfrey,et al.  Evolution in open source software: a case study , 2000, Proceedings 2000 International Conference on Software Maintenance.

[25]  Meir M. Lehman,et al.  On understanding laws, evolution, and conservation in the large-program life cycle , 1984, J. Syst. Softw..

[26]  Krzysztof Czarnecki,et al.  Variability modeling in the real: a perspective from the operating systems domain , 2010, ASE '10.

[27]  Jesús M. González-Barahona,et al.  Evolution and growth in large libre software projects , 2005, Eighth International Workshop on Principles of Software Evolution (IWPSE'05).