[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
article

The Linux kernel as a case study in software evolution

Published: 01 March 2010 Publication History

Abstract

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.

References

[1]
Albinet, A., Arlat, J., Fabre, J.-C., 2004. Characterization of the impact of faulty drivers on the robustness of the Linux kernel. In: Intl. Conf. Dependable Syst. & Networks, June 2004, pp. 867-876.
[2]
Software visualization in the large. Computer. v29 i4. 33-43.
[3]
Bowman, I.T., Holt, R.C., Brewster, N.V., 1999. Linux as a case study: its extracted software architecture. In: 21st Intl. Conf. Softw. Eng., May 1999, pp. 555-563.
[4]
Briand, L.C., Wust, J., Lounis, H., 1999. Using coupling measurement for impact analysis in object-oriented systems. In: Intl. Conf. Softw. Maintenance, August 1999, pp. 475-482.
[5]
The Mythical Man-Month: Essays on Software Engineering. Addison-Wesley.
[6]
Capiluppi, A., 2003. Models for the evolution of OS projects. In: Intl. Conf. Softw. Maintenance, September 2003, pp. 65-74.
[7]
Capiluppi, A., Morisio, M., Ramil, J.F., 2004. Structural evolution of an open source system: a case study. In: 12th IEEE Intl. Workshop Program Comprehension, June 2004, pp. 172-182.
[8]
Open-source change logs. Empirical Softw. Eng. v9. 197-210.
[9]
Chou, A., Yang, J., Chelf, B., Hallem, S., Engler, D., 2001. An empirical study of operating system errors. In: 18th Symp. Operating Systems Principles, October 2001, pp. 73-88.
[10]
Power-laws in a large object-oriented software system. IEEE Trans. Softw. Eng. v33 i10. 687-708.
[11]
Evolution in software systems: foundations of the SPE classification scheme. J. Softw. Maint. Evol.: Res. Pract. v18 i1. 1-35.
[12]
Cook, S., Harrison, R., Wernick, P., 2005. A simulation model of self-organising evolvability in software systems. In: IEEE Intl. Workshop Software Evolvability, September 2005, pp. 17-22.
[13]
Gall, H., Jazayeri, M., Klösch, R.R., Trausmuth, G., 1997. Software evolution observations based on product release history. In: Intl. Conf. Softw. Maintenance, October 1997, pp. 160-166.
[14]
Gasser, L., Scacchi, W., Ripoche, G., Penne, B., 2003. Understanding continuous design in F/OSS projects. In: 16th Intl. Conf. Softw. & Syst. Eng. & Apps., December 2003.
[15]
Godfrey, M.W., German, D.M., 2008. The past, present, and future of software evolution. In: 24th Intl. Conf. Softw. Maintenance, September 2008 (Special track on Frontiers of Software Maintenance).
[16]
Godfrey, M.W., Tu, Q., 2000. Evolution in open source software: a case study. In: 16th Intl. Conf. Softw. Maintenance, October 2000, pp. 131-142.
[17]
Software evolution: code delta and code churn. J. Syst. Softw. v54 i2. 111-118.
[18]
Elements of Software Science. Elsevier Science Inc.
[19]
Israeli, A., Feitelson, D.G., 2009. Characterizing software maintenance categories using the Linux kernel. Technical Report 2009-10, School of Computer Science and Engineering, The Hebrew University of Jerusalem, May 2009.
[20]
Izurieta, C., Bieman, J., 2006. The evolution of FreeBSD and Linux. In: Fifth Intl. Symp. Empirical Softw. Eng., September 2006, pp. 204-211.
[21]
Metrics and Models in Software Quality Engineering. second ed. Addison Wesley.
[22]
"Cloning considered harmful" considered harmful: patterns of cloning in software. Empirical Softw. Eng. v13 i6. 645-692.
[23]
An empirical approach to studying software evolution. IEEE Trans. Softw. Eng. v25 i4. 493-509.
[24]
Software evolution in open source projects-a large-scale investigation. J. Softw. Maint. Evol.: Res. Pract. v19 i6. 361-382.
[25]
Kroah-Hartman, G., Corbet, J., McPherson, A., 2004. Linux Kernel Development - How Fast is it Going, Who is Doing it, What are they Doing, and Who is Sponsoring it. Tech. Rep., the Linux Foundation, April 2004.
[26]
Lawrence, M.J., 1982. An examination of evolution dynamics. In: Sixth Intl. Conf. Softw. Eng., September 1982, pp. 188-196.
[27]
Lehman, M., Fernández-Ramil, J.C., 2006. Software evolution. In: Madhavji, N.H., Fernández-Ramil, J., Perry, D.E. (Eds.), Software Evolution and Feedback: Theory and Practice. Wiley, pp. 7-40 (Chap. 1).
[28]
Lehman, M.M., 1980a. Programs, life cycles, and laws of software evolution. Proc. IEEE 68(9), 1060-1076.
[29]
On understanding laws, evolution, and conservation in the large-program life cycle. J. Syst. Softw. v1. 213-221.
[30]
Lehman, M.M., 1996. Laws of software evolution revisited. In: Fifth European Workshop on Software Process Technology, October 1996. Lect. Notes Comput. Sci., vol. 1149. Springer Verlag, pp. 108-124.
[31]
Lehman, M.M., Perry, D.E., Ramil, J.F., 1998a. Implications of evolution metrics on software maintenance. In: 14th Intl. Conf. Softw. Maintenance, November 1998, pp. 208-217.
[32]
Lehman, M.M., Perry, D.E., Ramil, J.F., 1998b. On evidence supporting the FEAST hypothesis and the laws of software evolution. In: Fifth Intl. Software Metrics Symp., November 1998, pp. 84-88.
[33]
The impact of feedback in the global software process. J. Syst. Softw. v46 i2-3. 123-134.
[34]
Lehman, M.M., Ramil, J.F., Wernick, P.D., Perry, D.E., Turski, W.M., 1997. Metrics and laws of software evolution - the nineties view. In: Fourth Intl. Software Metrics Symp., November 1997, pp. 20-32.
[35]
Linux Kernel Development. Second ed. Novell Press.
[36]
A complexity measure. IEEE Trans. Softw. Eng. v2 i4. 308-320.
[37]
Mens, T., Fernández-Ramil, J., Degrandsart, S., 2008. The evolution of Eclipse. In: Intl. Conf. Softw. Maintenance, September 2008, pp. 386-395.
[38]
Mills, E., 1988. Software Metrics. Tech. Rep. Curriculum Module SEI-CM-12-1.1, Software Engineering Institute, December 1988.
[39]
Two case studies of open source software development: Apache and Mozilla. ACM Trans. Softw. Eng. Methodology. v11 i3. 309-346.
[40]
MSDN, 2008. Visual Studio 2008: Avoid Excessive Complexity. <http://msdn.microsoft.com/en-us/library/ms182212.aspx>.
[41]
An extension to the cyclomatic measure of program complexity. SIGPLAN Notices. v12 i10. 61-64.
[42]
A software metric system for module coupling. J. Syst. Softw. v20 i3. 295-308.
[43]
Construction and testing of polynomials predicting software maintainability. J. Syst. Softw. v24 i3. 251-266.
[44]
Parnas, D.L., 1994. Software aging. In: 16th Intl. Conf. Softw. Eng., May 1994, pp. 279-287.
[45]
An empirical study of open-source and closed-source software products. IEEE Trans. Softw. Eng. v30 i4. 246-256.
[46]
A staged model for the software life cycle. Computer. v33 i7. 66-71.
[47]
Inventive tool use to comprehend big code. IEEE Softw. v25 i5. 91-92.
[48]
Raymond, E.S., 2000. The Cathedral and the Bazaar. <http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar>.
[49]
Robles, G., Amor, J.J., Gonzalez-Barahona, J.M., Herraiz, I., 2005. Evolution and growth in large libre software projects. In: Eighth Intl. Workshop Principles of Software Evolution, September 2005, pp. 165-174.
[50]
Scacchi, W., 2006. Understanding open source software evolution. In: Madhavji, N.H., Fernández-Ramil, J., Perry, D.E. (Eds.), Software Evolution and Feedback: Theory and Practice. Wiley, pp. 181-205 (Chap. 9).
[51]
Maintainability of the Linux kernel. IEE Proc. Softw. v149 i2. 18-23.
[52]
Determining the distribution of maintenance categories: survey versus measurement. Empirical Softw. Eng. v8 i4. 351-365.
[53]
A critique of cyclomatic complexity as a software metric. Softw. Eng. J. v3 i2. 30-36.
[54]
A critique of three metrics. J. Syst. Softw. v26 i3. 197-210.
[55]
A study of open source software evolution data using qualitative simulation. Softw. Process Improv. Pract. v10 i3. 287-300.
[56]
Spinellis, D., 2008. A tale of four kernels. In: 30th Intl. Conf. Softw. Eng., May 2008, pp. 381-390.
[57]
SRI, 1997. Software Technology Roadmap: Cyclomatic Complexity. <http://www.sei.cmu.edu/str/str.pdf>.
[58]
Thomas, L., 2008. An Analysis of Software Quality and Maintainability Metrics with an Application to a Longitudinal Study of the Linux Kernel. Ph.D. Thesis, Vanderbilt University.
[59]
The Linux edge. Commun. ACM. v42 i2. 38-39.
[60]
Reference model for smooth growth of software systems. IEEE Trans. Softw. Eng. v22 i8. 599-600.
[61]
VanDoren, E., 2002. Maintainability Index Technique for Measuring Program Maintainability. Tech. Rep., Software Engineering Institute, March 2002.
[62]
Evaluating software complexity measures. IEEE Trans. Softw. Eng. v14 i9. 1357-1365.
[63]
Indirectly predicting the maintenance effort of open-source software. J. Softw. Maint. Evol.: Res. Pract. v18 i5. 311-332.
[64]
Categorization of common coupling and its application to the maintainability of the Linux kernel. IEEE Trans. Softw. Eng. v30 i10. 670-694.

Cited By

View all
  • (2025)Dissecting Code FeaturesJournal of Software: Evolution and Process10.1002/smr.275237:1Online publication date: 22-Jan-2025
  • (2024)Towards Automated Configuration DocumentationProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695311(2256-2261)Online publication date: 27-Oct-2024
  • (2024)Reusing d-DNNFs for Efficient Feature-Model CountingACM Transactions on Software Engineering and Methodology10.1145/368046533:8(1-32)Online publication date: 30-Jul-2024
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image Journal of Systems and Software
Journal of Systems and Software  Volume 83, Issue 3
March, 2010
188 pages

Publisher

Elsevier Science Inc.

United States

Publication History

Published: 01 March 2010

Author Tags

  1. Lehman's laws
  2. Linux kernel
  3. Software evolution

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)0
  • Downloads (Last 6 weeks)0
Reflects downloads up to 02 Mar 2025

Other Metrics

Citations

Cited By

View all
  • (2025)Dissecting Code FeaturesJournal of Software: Evolution and Process10.1002/smr.275237:1Online publication date: 22-Jan-2025
  • (2024)Towards Automated Configuration DocumentationProceedings of the 39th IEEE/ACM International Conference on Automated Software Engineering10.1145/3691620.3695311(2256-2261)Online publication date: 27-Oct-2024
  • (2024)Reusing d-DNNFs for Efficient Feature-Model CountingACM Transactions on Software Engineering and Methodology10.1145/368046533:8(1-32)Online publication date: 30-Jul-2024
  • (2023)Creating Trust by Abolishing HierarchiesProceedings of the 19th Workshop on Hot Topics in Operating Systems10.1145/3593856.3595900(231-238)Online publication date: 22-Jun-2023
  • (2023)Comparing the intensity of variability changes in software product line evolutionJournal of Systems and Software10.1016/j.jss.2023.111737203:COnline publication date: 13-Jul-2023
  • (2023)Evaluating state-of-the-art # SAT solvers on industrial configuration spacesEmpirical Software Engineering10.1007/s10664-022-10265-928:2Online publication date: 13-Jan-2023
  • (2022)Tseitin or not Tseitin? The Impact of CNF Transformations on Feature-Model AnalysesProceedings of the 37th IEEE/ACM International Conference on Automated Software Engineering10.1145/3551349.3556938(1-13)Online publication date: 10-Oct-2022
  • (2022)The sense of logging in the Linux kernelEmpirical Software Engineering10.1007/s10664-022-10136-327:6Online publication date: 1-Nov-2022
  • (2022)Incremental software product line verification - A performance analysis with dead variable codeEmpirical Software Engineering10.1007/s10664-021-10090-627:3Online publication date: 1-May-2022
  • (2021)Capturing the diversity of analyses on the Linux kernel variabilityProceedings of the 25th ACM International Systems and Software Product Line Conference - Volume A10.1145/3461001.3471151(160-171)Online publication date: 6-Sep-2021
  • Show More Cited By

View Options

View options

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media