• software evolution;
  • complex networks;
  • Linux kernel


This paper presents a novel method to study the evolution of Linux kernel components using complex networks to understand how Linux kernel components evolve over time. After analyzing the node degree distribution, clustering coefficient, and average path length of the call graphs corresponding to the kernel components of 130 development versions and 94 stable versions (V1.0 to V2.4.35), we found that the call graphs of the file system, driver, kernel, memory management, and net components are scale-free, small-world complex networks. In addition, all of the five components exhibit very strong preferential attachment tendency. With such in-depth understanding of the features of the Linux kernel components, we propose a generic method that could be used to find major structural changes that occur during the evolution of software systems. Copyright © 2012 John Wiley & Sons, Ltd.