- AutorIn
- Christina Sixtus
- Titel
- Visualisierung von Variabilität in C-Quellcode
- Zitierfähige Url:
- https://nbn-resolving.org/urn:nbn:de:bsz:15-qucosa2-353756
- Datum der Einreichung
- 25.06.2019
- Abstract (DE)
- 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.
- Freie Schlagwörter (DE)
- C-Präprozessor, Softwarevisualisierung, Prototyp
- Freie Schlagwörter (EN)
- C preprocessor, software visualization, prototype
- Klassifikation (DDC)
- 330
- Den akademischen Grad verleihende / prüfende Institution
- Universität Leipzig, Leipzig
- Version / Begutachtungsstatus
- aktualisierte Version
- URN Qucosa
- urn:nbn:de:bsz:15-qucosa2-353756
- Veröffentlichungsdatum Qucosa
- 16.09.2019
- Dokumenttyp
- Masterarbeit / Staatsexamensarbeit
- Sprache des Dokumentes
- Deutsch
- Inhaltsverzeichnis
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