The Linux kernel as a case study in software evolution

We use 810 versions of the Linux kernel, released over a period of 14years, to characterize the system's evolution, using Lehman's laws of software evolution as a basis. We investigate different possible interpretations of these laws, as reflected by different metrics that can be used to quantify them. For example, system growth has traditionally been quantified using lines of code or number of functions, but functional growth of an operating system like Linux can also be quantified using the number of system calls. In addition we use the availability of the source code to track metrics, such as McCabe's cyclomatic complexity, that have not been tracked across so many versions previously. We find that the data supports several of Lehman's laws, mainly those concerned with growth and with the stability of the process. We also make some novel observations, e.g. that the average complexity of functions is decreasing with time, but this is mainly due to the addition of many small functions.

[1]  J. Herbsleb,et al.  Two case studies of open source software development: Apache and Mozilla , 2002, TSEM.

[2]  Stephen R. Schach,et al.  Open-Source Change Logs , 2004, Empirical Software Engineering.

[3]  Rachel Harrison,et al.  Evolution in software systems: foundations of the SPE classification scheme , 2006, J. Softw. Maintenance Res. Pract..

[4]  Liguo Yu Indirectly predicting the maintenance effort of open-source software , 2006, J. Softw. Maintenance Res. Pract..

[5]  Dror G. Feitelson,et al.  Characterizing Software Maintenance Categories Using the Linux Kernel Ayelet Israeli , 2009 .

[6]  James M. Bieman,et al.  The evolution of FreeBSD and linux , 2006, ISESE '06.

[7]  Andrea Capiluppi,et al.  Models for the evolution of OS projects , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[8]  Juan Fernández-Ramil,et al.  A study of open source software evolution data using qualitative simulation , 2005, Softw. Process. Improv. Pract..

[9]  P. Wernick,et al.  A simulation model of self-organising evolvability in software systems , 2005, IEEE International Workshop on Software Evolvability (Software-Evolvability'05).

[10]  ConcasGiulio,et al.  Power-Laws in a Large Object-Oriented Software System , 2007 .

[11]  Rachel Harrison,et al.  Evolution in software systems: foundations of the SPE classification scheme: Research Articles , 2006 .

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

[13]  Thomas Ball,et al.  Software Visualization in the Large , 1996, Computer.

[14]  Dewayne E. Perry,et al.  Software Evolution and Feedback: Theory and Practice , 2006 .

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

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

[17]  Stefan Koch,et al.  Evolution of Open Source Software Systems - A Large-Scale Investigation , 2005 .

[18]  Michael W. Godfrey,et al.  The past, present, and future of software evolution , 2008, 2008 Frontiers of Software Maintenance.

[19]  Meir M. Lehman,et al.  The impact of feedback in the global software process , 1999, J. Syst. Softw..

[20]  Giancarlo Succi,et al.  An empirical study of open-source and closed-source software products , 2004, IEEE Transactions on Software Engineering.

[21]  Stephen R. Schach,et al.  Categorization of common coupling and its application to the maintainability of the Linux kernel , 2004, IEEE Transactions on Software Engineering.

[22]  Dewayne E. Perry,et al.  Implications of evolution metrics on software maintenance , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

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

[24]  YangJunfeng,et al.  An empirical study of operating systems errors , 2001 .

[25]  Fred P. Brooks,et al.  The Mythical Man-Month , 1975, Reliable Software.

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

[27]  Wladyslaw M. Turski Reference Model for Smooth Growth of Software Systems(003)5402022 , 1996, IEEE Transactions on Software Engineering.

[28]  Stephen H. Kan,et al.  Metrics and Models in Software Quality Engineering , 1994, SOEN.

[29]  Glenford J. Myers,et al.  An extension to the cyclomatic measure of program complexity , 1977, SIGP.

[30]  M. J. Lawrence,et al.  An examination of evolution dynamics , 1982, ICSE '82.

[31]  Paul W. Oman,et al.  Construction and testing of polynomials predicting software maintainability , 1994, J. Syst. Softw..

[32]  Michael W. Godfrey,et al.  “Cloning considered harmful” considered harmful: patterns of cloning in software , 2008, Empirical Software Engineering.

[33]  Keith H. Bennett,et al.  A Staged Model for the Software Life Cycle , 2000, Computer.

[34]  Michele Marchesi,et al.  Power-Laws in a Large Object-Oriented Software System , 2007, IEEE Transactions on Software Engineering.

[35]  Stephen R. Schach,et al.  Determining the Distribution of Maintenance Categories: Survey versus Measurement , 2003, Empirical Software Engineering.

[36]  Robert Love,et al.  Linux Kernel Development , 2003 .

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

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

[39]  Dewayne E. Perry,et al.  On evidence supporting the FEAST hypothesis and the laws of software evolution , 1998, Proceedings Fifth International Software Metrics Symposium. Metrics (Cat. No.98TB100262).

[40]  Cemal Yilmaz,et al.  Software Metrics , 2008, Wiley Encyclopedia of Computer Science and Engineering.

[41]  Meir M. Lehman,et al.  Laws of Software Evolution Revisited , 1996, EWSPT.

[42]  A. Jefferson Offutt,et al.  A software metric system for module coupling , 1993, J. Syst. Softw..

[43]  Serge Demeyer,et al.  Software Evolution , 2010 .

[44]  Richard C. Holt,et al.  Linux as a case study: its extracted software architecture , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[45]  Stephen R. Schach,et al.  Maintainability of the Linux kernel , 2002, IEE Proc. Softw..

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

[47]  Liguo Yu Indirectly predicting the maintenance effort of open-source software: Research Articles , 2006 .

[48]  Lionel C. Briand,et al.  Using coupling measurement for impact analysis in object-oriented systems , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[49]  Diomidis Spinellis A tale of four kernels , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[50]  Linus Torvalds,et al.  The Linux edge , 1999, CACM.

[51]  Maurizio Morisio,et al.  Structural evolution of an open source system: a case study , 2004, Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004..

[52]  Stefan Koch Software evolution in open source projects—a large-scale investigation , 2007 .

[53]  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).

[54]  Susan Elliott Sim,et al.  Inventive Tool Use to Comprehend Big Code , 2008, IEEE Software.

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

[56]  Juan Fernández-Ramil,et al.  The evolution of Eclipse , 2008, 2008 IEEE International Conference on Software Maintenance.

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

[58]  Jean Arlat,et al.  Characterization of the impact of faulty drivers on the robustness of the Linux kernel , 2004, International Conference on Dependable Systems and Networks, 2004.

[59]  Walt Scacchi,et al.  Understanding Open Source Software Evolution , 2003 .

[60]  M. Shepperd,et al.  A critique of cyclomatic complexity as a software metric , 1988, Softw. Eng. J..

[61]  Walt Scacchi,et al.  Understanding Continuous Design in F/OSS Projects , 2003 .

[62]  John C. Munson,et al.  Software evolution: code delta and code churn , 2000, J. Syst. Softw..

[63]  Eric S. Raymond,et al.  The cathedral and the bazaar , 1998, First Monday.

[64]  Walt Scacchi,et al.  Understanding Open Source Software Evolution 181 , 2006 .

[65]  Jr. Frederick P. Brooks,et al.  The Mythical Man-Month: Essays on Softw , 1978 .

[66]  Peter Membrey,et al.  The Linux Kernel , 2009 .

[67]  Darrel C. Ince,et al.  A critique of three metrics , 1994, J. Syst. Softw..

[68]  P. Kidwell,et al.  The mythical man-month: Essays on software engineering , 1996, IEEE Annals of the History of Computing.