Return to search

Visualisierung von Variabilität in C-Quellcode

In C-Quellcode wird der C-Präprozessor häufig verwendet, um ein Softwaresystem für verschiedene Ausführungsumgebungen und Varianten zu konfigurieren. Anweisungen zur bedingten Kompilierung ermöglichen es, dass Quellcodeteile bei der Verarbeitung durch den
Präprozessor ein- oder ausgeblendet werden. Dies erzeugt verschiedene Varianten der Software, erschwert jedoch die Lesbarkeit und Wartung des Quellcodes. Insbesondere die Auswirkungen einzelner Makrodefinitionen sind oft nicht einfach zu ermitteln. In dieser Arbeit
soll der Frage nachgegangen werden, wie das Verständnis des Quellcodes und der Auswirkungen von Makrodefinitionen mithilfe von Softwarevisualisierung unterstützt werden kann.
Dazu wird eine bestehende Visualisierungsmetapher an den Anwendungsfall angepasst. Anschließend folgt der Entwurf eines Verarbeitungsprozesses, um den Quellcode automatisiert
darstellen zu können. Mithilfe eines Prototyps wird die Machbarkeit gezeigt.:Inhaltsverzeichnis
Inhaltsverzeichnis I
Abbildungsverzeichnis III
Tabellenverzeichnis IV
Listings V
Abkürzungsverzeichnis VI
1 Einleitung 1
1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Zielsetzung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Vorgehensweise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Stand der Forschung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 Grundlagen 6
2.1 Die Programmiersprache C . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.1 Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.2 Wichtige Sprachelemente . . . . . . . . . . . . . . . . . . . . . . 7
2.1.3 Der C-Präprozessor . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.1.4 Ablauf der Kompilierung . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Softwarevisualisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.1 Eigenschaften und Ziele . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.2 Getaviz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Graphdatenbanken und Neo4j . . . . . . . . . . . . . . . . . . . . . . . . 14
3 Konzeption 17
3.1 Anwendungsfall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 Extraktion der benötigten Informationen . . . . . . . . . . . . . . . . . . . 19
3.2.1 Sprachmittel im C-Standard . . . . . . . . . . . . . . . . . . . . . 19
3.2.2 Variabilität in C-Quellcode . . . . . . . . . . . . . . . . . . . . . . 21
3.2.3 Extraktion von Variabilität . . . . . . . . . . . . . . . . . . . . . . 25
3.2.4 Entwurf eines Graphmodells für C-Quellcode . . . . . . . . . . . . 29
3.3 Visualisierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3.1 Analyse bestehender Metaphern . . . . . . . . . . . . . . . . . . . 34
3.3.2 Darstellung der Variabilität in der Benutzungsoberfläche . . . . . . 37
3.4 Überblick über den Generierungsprozess . . . . . . . . . . . . . . . . . . . 39
4 Implementierung 42
4.1 Vorverarbeitung des Quellcodes . . . . . . . . . . . . . . . . . . . . . . . 42
4.1.1 Anpassung von TypeChef . . . . . . . . . . . . . . . . . . . . . . 42
4.1.2 Aufbau des Abstract Syntax Tree . . . . . . . . . . . . . . . . . . 43
4.2 Das jQAssistant-Plugin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.2.1 Aufbau und grundsätzliche Funktionsweise . . . . . . . . . . . . . 44
4.2.2 Wichtige Descriptors und Relations . . . . . . . . . . . . . . . . . 46
4.2.3 Verarbeitung der XML-Datei . . . . . . . . . . . . . . . . . . . . . 46
4.2.4 Parsen der Bedingungen . . . . . . . . . . . . . . . . . . . . . . . 49II
4.3 Anpassung von Getaviz . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
4.4 Erweiterung der graphischen Oberfläche . . . . . . . . . . . . . . . . . . . 52
4.5 Test und Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5 Fazit 55
5.1 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.2 Kritische Würdigung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.3 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
A Übersicht über die Sprachmittel im C-Standard VII
Literaturverzeichnis XI

Identiferoai:union.ndltd.org:DRESDEN/oai:qucosa:de:qucosa:35375
Date16 September 2019
CreatorsSixtus, Christina
ContributorsUniversität Leipzig
Source SetsHochschulschriftenserver (HSSS) der SLUB Dresden
LanguageGerman
Detected LanguageGerman
Typeinfo:eu-repo/semantics/updatedVersion, doc-type:masterThesis, info:eu-repo/semantics/masterThesis, doc-type:Text
Rightsinfo:eu-repo/semantics/openAccess

Page generated in 0.002 seconds