Theses

Codeanalyse statt Testen

Bachelorarbeit in der Abteilung Softwaretechnik



Motivation

Ein beliebtes Mittel, um die Funktionalität von Quellcode zu überprüfen, ist die Verwendung von Testfällen, beispielsweise in Form von Unit-Tests. Dazu werden möglichst repräsentative Testfälle definiert, der Code ausgeführt und die erzielten Ergebnisse mit den erwarteten Ergebnissen verglichen. Dieses Vorgehen hat allerdings einige Nachteile: So ist es möglich, dass Entwickler ihren Code gegen diese Testfälle entwickeln, dabei aber ändere Fälle übersehen. Durch Testen ist es außerdem nicht möglich, die Qualität des Quellcodes zu beurteilen. Und schließlich kann das Ausführen von fremdem Code auch erhebliche Sicherheitsrisiken mit sich bringen.

Eine Alternative zum Testen ist die statische Analyse des Codes. Dabei wird beispielsweise anhand eines Abstrakten Syntaxgraphen (ASG) die Struktur des Programms analysiert. Die Struktur kann dann auf vorhandene Konzepte wie Iteration/Rekursion geprüft werden, auf existierende Code-Smells, die Modellierung/Architektur kann nach gegebenen Kriterien geprüft werden, oder die verwendeten Befehle und Klassen können überprüft und ggf. mit einer Whitelist abgeglichen werden, so dass nur erlaubte Befehle verwendet werden können.


Aufgabenstellung

Das Ziel der Arbeit ist es, zunächst bestehende Methoden und Werkzeuge zu analysieren und anschließend ein eigenes Konzept zur Programmanalyse basierend auf ASGs zu entwickeln.


Betreuer
Prof. Dr. Andreas Winter ()
Dr. Christian Schönberg ()
M.Sc. Johannes Meier ()

Related Projects
Logo Innovation plus

In der Programmier- und Softwaretechnikausbildung ist neben der Vermittlung theoretischer Grundlagen ein wichtiger Aspekt die praktische Anwendung und Umsetzung der gelernten Konzepte durch die Studierenden. Dabei geht es um Programmierung und Modellierung von einfachen bis zu komplexen Aufgaben als Aspekte der Softwareentwicklung. Primärziel des Projektes ist es, den Studierenden eine Plattform zum Selbststudium bereitzustellen, auf der sie zeitnah Rückmeldungen zu Fehlern und Problemen ihrer Programmier- und Modellierungslösungen erhalten, die aber gleichzeitig durch Automatisierung für bis zu 500 Studierende einer Veranstaltung skaliert. Die Plattform soll sowohl für Einzelarbeit als auch für Team-basierte Entwicklungsmethoden wie Pair-Programming oder kollaborative Modellierung ausgelegt sein.

 
Software Quality and Testing
The Quality is an important aspect of software and has high impact on the evolution of software and the possibilities of their modernization. Testing is an important technique to improve the quality of software. This research area targets approaches, techniques, and tools to detect, measure, and improve the quality of software among the whole software life cycle.
 


(Changed: 19 Jan 2024)  | 
Zum Seitananfang scrollen Scroll to the top of the page