Navigation

Skiplinks

Includes und Makros aus C++ Sourcecode analysieren

Bachelor- oder Masterarbeit in der Abteilung Softwaretechnik



Motivation

Um komplexe Analysen, Visualisierungen und Refactorings auf C++ Sourcecode durchführen zu können, wird in textueller Form vorliegender C++ Sourcecode in eine Graph-Struktur (Abstract Syntax Graph (ASG)) umgewandelt, in der beispielsweise eine Methode als ein Knoten dargestellt wird, der durch Kanten mit allen Stellen verbunden ist, wo die Methode verwendet wird. Auf diese Weise kann beispielsweise eine Umbenennung der Methode sehr leicht durch die Änderung des name-Attributes des Methodenknotens an einer Stelle durchgeführt werden.

Um diese graphbasierte Darstellung von textuellem C++ Sourcecode zu bekommen, wird ein Parser, der textuellen C++ Sourceode in einen ASG umwandelt, sowie ein Unparser benötigt, der den (evtl. modifizierten) ASG wieder in C++ Sourcecode zurück transformiert. Auf diese Weise können komplexe Refactorings auf dem ASG statt auf dem textuellen Sourcecode durchgeführt werden. Ein solcher Parser und Unparser wurde bereits entwickelt, der allerdings noch keine #Includes und keine Makros unterstützt.


Aufgabenstellung

Ziel dieser Arbeit ist es deshalb, den bestehenden Parser und Unparser um #Includes und Makros zu erweitern. Dafür können die Bestandteile der vorhandene Parser und Unparser für C++ wiederverwendet werden. Für diese Arbeit muss also C++ nicht in allen Einzelheiten bekannt sein, da abgesehen von #Includes und Makros C++ bereits geparst und wiederverwendet werden kann.


Betreuer
Prof. Dr. Andreas Winter (winter@se.uni-oldenburg.de)
M.Sc. Johannes Meier (meier@se.uni-oldenburg.de)

Related Projects
Model Consistency ensured by Metamodel Integration (MoConseMI)

In multi-perspective software development, several perspectives exist presenting different views on the developed artefacts. Because some perspectives handle the same data and all the data have relationships between each other, there is a strong need for synchronization of the data between different perspectives. To solve this problem, this project aims at developing and validating a method for integrating the single metamodels of each perspective into one integrated single underlying metamodel (SUMM).

 
Metamodeling and Model Based Engineering
Modeling and Metamodeling allow the graph-based creation, analysis, and storage of information. Model Based Engineering summerizes these and further techniques which use models as first-order objects. This research area targets approaches, techniques, and tools to create, improve, analyze, and store models conform to metamodels among the whole software life cycle.
 


Webmastc+tereo (meiearher@sbie.uhon6ni-oldimwenburlpvrg.de7flwz) (Changed: 2018-10-10)