Characterizing Software Maintenance Categories Using the Linux Kernel Ayelet Israeli

Software maintenance involves different categories of activities: corrective, adaptive, perfective, and preventive. However, research regarding these distinct activities is h ampered by lack of empirical data that is labeled to identify the type of maintenance being performed. A promising dataset is provided by the more than 800 releases of the Linux kernel that have bee n made since 1994. The Linux release scheme differentiates be tw en development versions (which may be expected to undergo perf ctive maintenance) and production versions (probably dominated by corrective maintenance). The structure of the codebase a lso distinguishes code involved in handling different architectures and devices (where additions reflect adaptive maintenance) from the core of the system’s kernel. Assuming that these dissect ions of the codebase indeed reflect different types of activity, we d emonstrate that corrective maintenance does not necessarily le ad to code deterioration, that adaptive maintenance may improvesome quality metrics, and that growth is largely the result of continued development as part of perfective maintenance.

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

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

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

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

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

[6]  E. Burton Swanson,et al.  The dimensions of maintenance , 1976, ICSE '76.

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

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

[9]  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.

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

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

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

[13]  Katsuro Inoue,et al.  Analysis of the Linux Kernel Evolution Using Code Clone Coverage , 2007, Fourth International Workshop on Mining Software Repositories (MSR'07:ICSE Workshops 2007).

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

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

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

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

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

[19]  Meir M. Lehman Programs, life cycles, and laws of software evolution , 1980 .

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

[21]  Jesús M. González-Barahona,et al.  Mining large software compilations over time: another perspective of software evolution , 2006, MSR '06.

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

[23]  Stephen R. Schach,et al.  Fine-grain analysis of common coupling and its application to a Linux case study , 2007, J. Syst. Softw..

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

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

[26]  Dror G. Feitelson,et al.  The Linux kernel as a case study in software evolution , 2010, J. Syst. Softw..

[27]  Stephen R. Schach,et al.  Impact of release intervals on empirical research into software evolution, with application to the maintainability of Linux , 2009, IET Softw..

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

[29]  Michael W. Godfrey,et al.  Automatic classication of large changes into maintenance categories , 2009, 2009 IEEE 17th International Conference on Program Comprehension.

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

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

[32]  E. Burton Swanson,et al.  Characteristics of application software maintenance , 1978, CACM.

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

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

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