Please use this identifier to cite or link to this item: http://dx.doi.org/10.25673/34746
Full metadata record
DC FieldValueLanguage
dc.contributor.refereeSaake, Gunter-
dc.contributor.authorFenske, Wolfram-
dc.date.accessioned2020-10-13T09:51:44Z-
dc.date.available2020-10-13T09:51:44Z-
dc.date.issued2020-
dc.date.submitted2020-
dc.identifier.urihttps://opendata.uni-halle.de//handle/1981185920/34942-
dc.identifier.urihttp://dx.doi.org/10.25673/34746-
dc.description.abstractHighly 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.eng
dc.description.abstractHoch-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.ger
dc.format.extentxviii, 222 Seiten-
dc.language.isoeng-
dc.rights.urihttps://creativecommons.org/licenses/by-sa/4.0/-
dc.subjectSoftware engineeringeng
dc.subject.ddc005.1-
dc.titleMeasuring and improving code quality in highly configurable software systemseng
dcterms.dateAccepted2020-
dcterms.typeHochschulschrift-
dc.typeDoctoral Thesis-
dc.identifier.urnurn:nbn:de:gbv:ma9:1-1981185920-349420-
local.versionTypeacceptedVersion-
local.publisher.universityOrInstitutionOtto-von-Guericke-Universität Magdeburg, Fakultät für Informatik-
local.openaccesstrue-
dc.identifier.ppn1735432822-
local.publication.countryXA-DE-ST-
cbs.sru.importDate2020-10-13T09:41:13Z-
local.accessrights.dnbfree-
local.accessrights.dnbfree-
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