Variability Bugs in System Software

Language
en
Document Type
Doctoral Thesis
Issue Date
2013-04-23
Issue Year
2013
Authors
Sincero, Julio
Editor
Abstract

One of the key aspects of software product line engineering (SPLE) is the handling of variation points that can be combined to form specific products. Variability man- agement is the discipline responsible for the specification, combination and use of variation points. Many researches have contributed to this area by providing formal methods to analyze variability by means of reasoning operations built on top of SAT solvers. The development of system software also faces many challenges regarding vari- ability management. To cope with variability issues, practitioners have employed a diversity of independent tools to tailor system software in order to avoid the over- head of unneeded functionality. In the Linux kernel, which can also be regarded as a software product line, variability management is handled in a heterogeneous man- ner. A set of independent tools is employed on different levels of abstraction, which might lead to inconsistencies in the description of variability. These inconsistencies are called variability bugs. With the novel concepts of source code variability models, model slicing, and multi-model reasoning operations, variability bugs that are possibly hidden by heterogenous variability management approaches can be attacked. The Linux code base serves as an ideal testbed for these novel techniques that conjoin the reasoning operations from SPLE with the challenges imposed by the structure and the sheer size of real-world large-scale code bases. For an efficient, scalable and automatic detection of variability bugs, the tool undertaker implements the concepts of source code variability models, model slicing, multi-model reasoning operations and a SAT solver backend. Applying the undertaker tool to the Linux kernel code base revealed an impressive number of variability bugs, to which fixes were provided to the kernel developers. Their positive feedback confirms the need of tool support for the automatic detection of variability bugs.

Abstract

Einer der Schwerpunkte bei der Entwicklung von Softwareproduktlin- ien stellt die Behandlung der Variationspunkte dar, aus denen durch Kombination Produktvarianten gebildet werden können. Das Variabilitätsmanagement ist ve- rantwortlich für die Spezifikation, Kombination und Verwendung von Variation- spunkten in der Produktlinienentwicklung. Viele Wissenschaftler haben Beiträge zu diesem Gebiet in Form von formalen Methoden zur automatisierten Analyse von Variabilität auf der Basis von Erfüllbarkeitslösern (SAT solver) geleistet. Die Entwicklung von Systemsoftware steht ebenfalls vor großen Herausforderungen in Bezug auf Variabilitätsmanagement. Um die Variabilität in den Griff zu bekommen, wird von Praktikern eine Vielzahl von unabhängigen Werkzeugen verwendet, um Systemsoftware maßgeschneidert unter Vermeidung unnützer Funktionalität zu er- stellen. Im Linux-Betriebssystemkern, der ebenfalls als Softwareproduktlinie aufge- fasst werden kann, wird Variabilitätsmanagement in heterogener Weise durchge- führt: Eine Reihe voneinander unabhängiger Werkzeuge wird auf unterschiedlichen Abstraktionsstufen eingesetzt, was leicht zu Inkonsistenzen bezüglich der Beschrei- bung von Variabilität führen kann. Diese Inkonsistenzen werden Variabilitätsfehler (variability bugs) genannt. Mit den neuen Konzepten Source Code Variability Mod- els, Model Slicing und Multi-Model Reasoning Operations können Variabilitätsfehler behandelt werden, die vom heterogenen Variabilitätsmanagement nicht entdeckt werden. Die Linux Codebasis dient als eine ideale Testumgebung für diese neuen Techniken, mittels der die formalen Methoden aus der Softwareproduktlinien-Ent- wicklung auf ihre Anwendbarkeit in umfangreichen, realen Softwareprojekten un- tersucht werden. Für eine effiziente, skalierbare und automatische Erkennung von Variabilitätsfehlern, implementiert das Werkzeug Undertaker die Konzepte Source Code Variability Models, Model Slicing und Multi-Model Reasoning, sowie einen SAT-solver. Durch Anwendung des Werkzeugs auf den Quellcode des Linux Be- triebssystemkerns wurde eine eindrucksvolle Anzahl von Variabilitätsfehlern ent- deckt. Die positive Reaktion der Betriebssystemkern-Entwickler auf die eingesandten Fehlerbeschreibungen bestätigt die Zweckmäßigkeit der werkzeuggestützten, au- tomatischen Erkennung von Variabilitätsfehlern.

DOI
Document's Licence
Faculties & Collections
Zugehörige ORCIDs