A Study of Feature Scattering in the Linux Kernel
Artikel i vetenskaplig tidskrift, 2021

Feature code is often scattered across a software system. Scattering is not necessarily bad if used with care, as witnessed by systems with highly scattered features that evolved successfully. Feature scattering, often realized with a pre-processor, circumvents limitations of programming languages and software architectures. Unfortunately, little is known about the principles governing scattering in large and long-living software systems. We present a longitudinal study of feature scattering in the Linux kernel, complemented by a survey with 74, and interviews with nine Linux kernel developers. We analyzed almost eight years of the kernel's history, focusing on its largest subsystem: device drivers. We learned that the ratio of scattered features remained nearly constant and that most features were introduced without scattering. Yet, scattering easily crosses subsystem boundaries, and highly scattered outliers exist. Scattering often addresses a performance-maintenance tradeoff (alleviating complicated APIs), hardware design limitations, and avoids code duplication. While developers do not consciously enforce scattering limits, they actually improve the system design and refactor code, thereby mitigating pre-processor idiosyncrasies or reducing its use.

linux kernel

pre-processor

scattering

feature

Författare

Leonardo Passos

University of Waterloo

Rodrigo Queiroz

University of Waterloo

Mukelabai Mukelabai

Göteborgs universitet

Thorsten Berger

Göteborgs universitet

Sven Apel

Universität Passau

Krzysztof Czarnecki

University of Waterloo

Jesus Alejandro Padilla

University of Waterloo

IEEE Transactions on Software Engineering

0098-5589 (ISSN) 19393520 (eISSN)

Vol. 47 1 146-164 8565973

Ämneskategorier

Programvaruteknik

Systemvetenskap

Datavetenskap (datalogi)

DOI

10.1109/TSE.2018.2884911

Relaterade dataset

A Study of Feature Scattering in the Linux Kernel (A Study of Feature Scattering in the Linux Kernel [dataset]

DOI: 10.21227/3fak-qz51

Mer information

Senast uppdaterat

2022-04-05