Please use this identifier to cite or link to this item: http://dx.doi.org/10.25673/34746
Title: Measuring and improving code quality in highly configurable software systems
Author(s): Fenske, Wolfram
Referee(s): Saake, GunterLook up in the Integrated Authority File of the German National Library
Granting Institution: Otto-von-Guericke-Universität Magdeburg, Fakultät für Informatik
Issue Date: 2020
Extent: xviii, 222 Seiten
Type: HochschulschriftLook up in the Integrated Authority File of the German National Library
Type: Doctoral Thesis
Exam Date: 2020
Language: English
URN: urn:nbn:de:gbv:ma9:1-1981185920-349420
Subjects: Software engineering
Abstract: Highly configurable software systems (also known as software product lines) are software systems that can be configured to fulfill multiple sets of requirements. To achieve this configurability, the code base of highly configurable software systems must be variable, so that well-defined pieces of the implementation can be selectively compiled into a given product or left out of it. In this thesis, I have investigated how variability at the implementation level af-fects the quality of the code base. Specifically, I argue that variability adds new design challenges that assessments of internal quality should take into account. To this end, I propose variability-aware code smells, an adaptation of the well-known code smell idea that treats variability as a first class concept. I show that such smells exist in the wild and present evidence that they negatively affect software development. Moreover, I propose a concept and tool support to detect variability-aware code smells in C programs that use preprocessor directives (a. k. a. #ifdefs) as the variability mechanism. Preprocessor-based variability is widely used but also often criticized as a cause for hard-to-understand code and subtle bugs. For this reason, I analyzed the impact of preprocessor-based variability, finding that it has no systematic effect on maintainability in terms of the frequency or extent of code changes. In addition to studying the effect of variability on code smells, this thesis also ad-dresses the effect of variability on a closely related topic, refactoring. To this end, I created a taxonomy of reengineering activities for highly configurable software sys-tems and classified existing work according to this taxonomy. Moreover, I propose two variant-preserving refactorings for reducing code replication in highly config-urable software systems, and embed these refactorings in a novel process to migrate product families that were created through clone-and-own to a software product line. In summary, this thesis contributes new insights into the impact of variability at the implementation level. It demonstrates how different design choices for imple-menting variability can have either positive or negative effects on important aspects of software development, such as understandability or maintainability. Moreover, it presents novel evidence that static source code configurability based on C prepro-cessor directives does not increase code change proneness. Finally, this thesis adds clarity to future discussions about refactoring techniques for highly configurable software systems and contributes new refactorings to improve the code quality such systems.
Hoch-konfigurierbare Software-Systeme (auch bekannt als Software-Produktlinien) sind Software-Systeme, die konfiguriert werden können, um unterschiedlichen An-forderungen gerecht zu werden. Um diese Konfigurierbarkeit zu erreichen muss die Code-Basis hoch-konfigurierbarer Software-Systeme variabel sein, sodass beim Kom-pilieren eines gegebenen Produkts wohldefinierte Teile der Implementierung selektiv ein- oder ausgeschlossen werden können. In der vorliegenden Doktorarbeit habe ich untersucht, wie Variabilität auf der Imple-mentierungsebene die Qualität der Code-Basis beeinflusst. Im Speziellen behaupte ich, dass Variabilität neue Herausforderungen für den Entwurf mit sich bringt, die bei der Bewertung der internen Qualität berücksichtigt werden sollten. Zu diesem Zweck schlage ich variabilitätsgewahre Code Smells vor, eine Adaptierung der bekan-nten Code-Smell-Idee, welche Variabilität in den Mittelpunkt der Betrachtung rückt. Ich zeige, dass derartige Smells in realen Software-Projekten vorkommen und bringe Belege dafür vor, dass sie die Software-Entwicklung negativ beeinflussen. Des Weit-eren stelle ich ein Konzept und Werkzeugunterstützung vor, um variabilitätsgewahre Code-Smells in C-Programmen, die Präprozessordirektiven (sogenannte #ifdefs) als Variabilitätsmechanismus nutzen, zu detektieren. Präprozessor-basierte Varia-bilität ist weit verbreitet, wird aber auch häufig als Ursache schwer verständlichen Codes und subtiler Bugs kritisiert. Aus diesem Grund habe ich die Auswirkung von Präprozessor-basierter Variabilität untersucht, mit dem Ergebnis, dass keine systematischen Auswirkungen auf die Wartbarkeit im Sinne von häufigeren oder umfangreicheren änderungen vorliegen. Zuzüglich zur Untersuchung der Auswirkungen von Variabilität auf Code-Smells adressiert diese Doktorarbeit die Auswirkungen von Variabilität auf ein eng ver-wandtes Thema, Refactoring. Zu diesem Zweck habe ich eine Taxonomie von Reengineering-Aktivitäten für hoch-konfigurierbare Software-Systeme erstellt und bestehende Arbeiten gemäß dieser Taxonomie klassifiziert. Weiterhin schlage ich variantentreue Refactorings zur Reduktion von Code-Replikation vor und bette diese Refactorings in einen neuartigen Prozess ein, mit dessen Hilfe Produktfamilien, die durch Clone-and-Own entstanden sind, in eine Software-Produktlinie überführt wer-den. Zusammenfassend liefert diese Doktorarbeit neue Erkenntnisse zum Einfluss von Variabilität auf die Implementierungsebene. Sie zeigt, wie unterschiedliche Entschei-dungen bei der Implementierung von Variabilität sowohl positive als auch negative Auswirkungen auf wichtige Aspekte der Software-Entwicklung, wie zum Beispiel Verständlichkeit oder Wartbarkeit, haben können. Zusätzlich liefert sie neue Belege, dass statische Quellcode-Konfigurierbarkeit basierend auf C-Präprozessordirektiven die Änderungsanfälligkeit nicht erhöht. Abschließend erleichtert diese Doktorar-beit zukünftige Diskussionen über Refactoring-Techniken für hoch-konfigurierbare Software-Systeme und steuert neue Refactorings bei, um die Code-Qualität solcher Systeme zu verbessern.
URI: https://opendata.uni-halle.de//handle/1981185920/34942
http://dx.doi.org/10.25673/34746
Open Access: Open access publication
License: (CC BY-SA 4.0) Creative Commons Attribution ShareAlike 4.0
Appears in Collections:Fakultät für Informatik

Files in This Item:
File Description SizeFormat 
Fenske_Wolfram_Dissertation_2020.pdfDissertation3.11 MBAdobe PDFThumbnail
View/Open


This item is licensed under a Creative Commons License Creative Commons