CORE
CO
nnecting
RE
positories
Services
Services overview
Explore all CORE services
Access to raw data
API
Dataset
FastSync
Content discovery
Recommender
Discovery
OAI identifiers
OAI Resolver
Managing content
Dashboard
Bespoke contracts
Consultancy services
Support us
Support us
Membership
Sponsorship
Research partnership
About
About
About us
Our mission
Team
Blog
FAQs
Contact us
Community governance
Governance
Advisory Board
Board of supporters
Research network
Innovations
Our research
Labs
Visualisierung von Variabilität in C-Quellcode
Authors
Christina Sixtus
Publication date
16 September 2019
Publisher
Abstract
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 X
Similar works
Full text
Open in the Core reader
Download PDF
Available Versions
Qucosa
See this paper in CORE
Go to the repository landing page
Download from data provider
oai:qucosa:de:qucosa:35375
Last time updated on 17/10/2019
Qucosa - Publikationsserver der Universität Leipzig
See this paper in CORE
Go to the repository landing page
Download from data provider
oai:qucosa:de:qucosa:35375
Last time updated on 17/10/2019
HSSS - Hochschulschriftenserver der SLUB
See this paper in CORE
Go to the repository landing page
Download from data provider
oai:qucosa:de:qucosa:35375
Last time updated on 16/10/2019