Analyse und Vorhersage von Qualitätseigenschaften in Software-Produktlinien
- Hintergrund: Die Software-Produktlinienentwicklung ermöglicht eine kostengünstige und effiziente Entwicklung von Produktfamilien bei gesteigerter Qualität im Vergleich zur Einzelsystementwicklung. Dieses wird durch die Einführung von Variabilitätsmechanismen ermöglicht, welche eine hohe Anpassbarkeit der Produkte an verschiedene Kundenbedürfnisse ermöglichen. Allerdings erhöhen diese Variabilitätsmechanismen auch die Komplexität, da Entwickler das Zusammenwirken der Komponenten für verschiedene Produktvarianten berücksichtigen müssen. Daher wurden zur Qualitätssicherung von Software-Produktlinien neue Analysemethoden und -strategien entwickelt, darunter auch variabilitätsbasierte Code-Metriken. Ziel dieser Metriken ist es, unnötige Komplexität zu vermeiden und frühzeitig besonders fehleranfälligen Code zu identifizieren, um diesen zusätzlichen Qualitätsmaßnahmen unterziehen zu können. Unsere systematische Literaturstudie zu diesem Thema zeigt jedoch, dass der Nutzen dieser variabilitätsbasierten Code-Metriken nur in wenigen Fällen evaluiert wurde. Ziel: Diese Arbeit untersucht inwieweit variabilitätsbasierte Code-Metriken zur Qualitätssteigerung von Software-Produktlinien genutzt werden können. Dazu wird betrachtet, ob sich mit Hilfe empirischer Untersuchungen Entwicklungsrichtlinien zur proaktiven Vermeidung von Komplexität und damit verbundenen Fehlern ableiten lassen. Der Fokus liegt auf der Analyse, ob sich die betrachteten Metriken zur Identifikation von potentiell fehleranfälligeren Code nutzen lassen. Dies umfasst sowohl die univariate Verwendung einzelner Metriken als auch den Aufbau von Vorhersagemodellen mit Verfahren des maschinellen Lernens. Dabei wird auch untersucht, ob die speziell für die Software-Produktlinienentwicklung konzipierten variabilitätsbasierten Code-Metriken einen Mehrwert gegenüber etablierten Metriken der Einzelsystementwicklung bieten. Methodik: Es findet eine empirische Untersuchung von 692 Einzelsystem- und variabilitätsbasierte Code-Metriken auf dem Linux-Kernel statt. Dazu wird zunächst analysiert, inwieweit die Messwerte der Metriken mit Kompilierfehlern und Sicherheitslücken korreliert sind, welche von den Entwicklern übersehen wurden und so erst nach dem Commit bzw. nach dem Release entdeckt wurden. Darüber hinaus werden die Metriken bezüglich der gemessenen Eigenschaften gruppiert und mit vier Verfahren des maschinellen Lernens eine Identifikation der fehleranfälligen Codestellen erprobt, um so den Nutzen verschiedener Codeeigenschaften beurteilen zu können. Ergebnisse und Schlussfolgerung: Auch wenn für einen Großteil der Metriken ein signifikanter Zusammenhang zwischen den Messwerten und fehleranfälligen Codestellen nachgewiesen werden kann, so zeigt sich, dass univariate Verfahren für die Praxis untauglich sind. Auf Grund der starken Klassenimbalance von nur 1,5% defekten Codefunktionen (Kompilierfehler), bzw. 0,4% Codefunktionen mit nachgewiesenen Sicherheitslücken, lassen sich bei der Verwendung einer einzelnen Metrik nur F1-Werte unterhalb von 0,073 erzielen. Mangels alternativer Implementierungen lassen sich so, entgegen den Aussagen einiger Veröffentlichungen, auch keine Entwicklungsempfehlungen ableiten. Hingegen können variabilitätsbasierte Code-Metriken, insofern sie auch die Variabilität verbundener Artefakte mit berücksichtigen, erfolgreich zur Fehlervorhersage genutzt werden. So lässt sich beispielsweise bei Verwendung von Random Forest F1-Werte von 0,667 (Kompilierfehler), bzw. 0,711 (Sicherheitslücken), erzielen.
- Context: Software Product Line Engineering (SPLE) enables the cost-effective development of similar software systems while also increasing their quality. This is realized by the introduction of variability management to support a high customizability to satisfy the individual customer needs. But the introduction of variability management has the drawback that it increases the complexity, as developers must consider interactions of components of various product variants. The product line research community developed new analysis methods to support the quality assurance of product lines, e.g., variability-aware code metrics. These metrics aim at avoiding accidental complexity and at the identification of error-prone code early during development. However, our previous systematic literature review revealed that very little work was done to research the suitability of variability-aware metrics to draw any qualitative conclusions on software product lines. Objective: This work investigates the use of variability-aware code metrics for the quality improvement of software product lines. This includes whether empirical studies can be utilized to derive coding guidelines for the proactive avoidance of complexity and related errors. The focus of this work is on analyzing whether the studied metrics can be used to identify error-prone code. This covers univariate analysis methods as well as the application of machine learning algorithms. We also investigate whether variability-aware metrics offer any benefits compared to established metrics from the single system domain. Method: We present an empirical study of 692 single system and variability-aware code metrics on the Linux kernel. First, we analyze the correlation between measures of these metrics to compilation errors and vulnerabilities, which were discovered after committing the code, or even after the release. Afterwards, these metrics are grouped into metric clusters according to the measured attributes. These clusters are analyzed with four classification approaches of the machine learning domain, in order to assess the usefulness of the various measurable code attributes. Results and Conclusion: Even though the analyses demonstrate a statistical significance for the majority of the investigated metrics, we show that univariate analysis methods are unsuitable in practice. This is related to the strong class imbalance of only 1.5% defect code functions (compilation errors), and 0.4% vulnerable code functions respectively. Using only a single metric in a threshold-based analysis results in F1 scores below 0.073. Although related studies imply the derivation of coding guidelines to avoid accidental complexity based on comparable results, we came to the conclusion that this is not possible due to the lack of alternative implementations. Nevertheless, variability-aware metrics offer a high benefit for quality assurance, as we show that these metrics can successfully be used to identify error-prone code. Particularly suitable for this task are metrics, that do not only consider the variability of the measured code artifact, but also of other artifacts that are, through variability, connected to the measured artifact. By applying the Random Forest classifier we achieve an F1-score of 0.667 (compilation errors) and 0.711 (vulnerabilities).
Author: | Sascha El-Sharkawy |
---|---|
URN: | https://nbn-resolving.org/urn:nbn:de:gbv:hil2-opus4-13860 |
DOI: | https://doi.org/10.25528/115 |
Referee: | Klaus Schmid, Thorsten Berger |
Document Type: | Doctoral Thesis |
Language: | German |
Year of Completion: | 2021 |
Granting Institution: | Universität Hildesheim, Fachbereich IV |
Date of final exam: | 2022/05/19 |
Release Date: | 2022/07/01 |
Tag: | Komplexitätsmetriken; Software Produktlinien Complexity Metrics; Software Product Lines Software Defect Prediction |
Page Number: | 407 |
PPN: | Link zum Katalog |
Institutes: | Fachbereich IV |
Fachbereich IV / Informatik | |
DDC classes: | 000 Allgemeines, Informatik, Informationswissenschaft / 000 Allgemeines, Wissenschaft / 005 Computerprogrammierung, Programme, Daten |
Licence (German): | ![]() |