Informationen für Studenten - Ausgeschriebene Themen für Studien- / Diplomarbeiten; bzw. Bachelor- / Master-Arbeiten
latest update: April 06, 2012, at 03:55 PM
Allgemeines
Wir haben immer eine Reihe von interessanten und anspruchsvollen Themen im Angebot, die sich sowohl für Studien- (bzw. Bachelor-) als auch Diplomarbeiten (bzw. Master-Arbeiten) eignen, am besten jedoch für beides - erfahrungsgemäß sind die Chancen für eine gute Diplom/Master-Arbeit höher, wenn sie die Studien/Bachelor-Arbeit inhaltlich fortsetzt.
Aufgrund unserer aktuellen Forschungsarbeiten bewegen sich die meisten Themen im Umfeld von
- fehlervermeidende / fehlertolerierende Programmier- und Softwareentwicklungsmethoden,
- Anwendung formaler Methoden (insbesondere Petrinetze) im Rahmen von Fallstudien, auf dem Gebiet der Informatik (technische Systeme) bzw. Bioinformatik (biochemische Systeme),
- (intelligente) Implementierung von (graphischen) Werkzeugen.
Um möglichst interessanteThemen zu erreichen, werden diese ständig an unsere aktuellen Forschungen (einschließlich Promotionsvorhaben) angepaßt. Deshalb sind die folgenden Ausschreibungen nur als Beispiele anzusehen. Bei Interesse wenden Sie sich bitte an einen Vertreter des Lehrstuhls. Desweiteren sind eigene Vorschläge (jedoch im Rahmen der oben genannten Punkte) durchaus willkommen.
Thematisch-gruppierte Kurzdarstellung aktueller Themen
Theorie-orientierte Themen, was einen Implementierungsanteil nicht ausschließt
- fehlerkorregierende Petrinetze
(fehlerkorregierende Kodes als Erreichbarkeitstest)
- Konstruktion beschränkter Netze
(Erweiterung eines unbeschränkten Petrinetzes um weitere Knoten, sodaß es beschränkt wird)
- zeitabhängige Beschränktheit / Lebendigkeit
- qualitative Auswertung von Fehlerbäumen mit BDDs
- quantitative Auswertung von Fehlerbäumen mit stochastischen Petrinetzen
Voraussetzungen:
- fortgeschrittene Kenntnisse Petrinetz-Theorie
Erweiterung unseres Petrinetz-Analysators Charlie
- eigenschaftserhaltende Reduktion
- Analyse durch lineare Programmierungstechniken
(Nichterreichbarkeitstest, effiziente Berechnung von Siphons/Traps, ADT-Mengen)
- effiziente und modulare (Sub/Sur-) Invariantenberechnung,
- minimale Überdeckbarkeitsgraphen (Finkel-Algorithmus)
- Ausbau des Modelcheckings
(Zeugen/Gegenzeugen, Visualisierung von BDDs, IDDs)
- Analyse von Zeit-Petrinetzen mit maximaler Parallelität
(Definition, Aufbau und Auswertung von Erreichbarkeitsgraphen)
- Vergleich von Analysewerkzeugen
(Effizienzvergleich, Back-to-Back-Testen)
- Systematisches Testen von Modelcheckern
Voraussetzungen:
- solide Programmierfertigkeiten in Java
- Grundkenntnisse Petrinetze
- Kenntnisse in dem jeweiligen, der Anaysetechnik zugrunde liegenden mathematischen Gebiet
Erweiterung unseres Petrinetz-Entwurfswerkzeuges Snoopy
- PN-Dokumentations-Generator
- Simulation Zeit-Petrinetze
- graphische Aufbereitung von Simulationsergebnissen
(stochastische/kontinuierliche Simulation, Vereinheitlichung beider)
- Invarianten-Auswertung
- Halbordnungssemantik
(Visualisierung einzelner Abläufe)
- Konfigurierbarkeit
(dll-Technologie zur Modularisierung der Netzklassen)
- Integration ausgewählter Analysewerkzeuge
(Grid-Anbindung)
- Einbindung von boost::spirit-Technologien
(Verallgemeinertes Funktionenkonzept, Vereinheitlichung von import/export)
- PNML Import/Export
Voraussetzungen:
- solide Programmierfertigkeiten in C++ und moderner Softwareentwicklungstechnologien
- Grundkenntnisse Petrinetze
Web-Technologien
- Nutzerhandbuch und web-basiertes Tutorial für Charlie
(Demonstration typischer Nutzerszenarien)
- Nutzerhandbuch und web-basiertes Tutorial für Snoopy
(Demonstration typischer Nutzerszenarien)
- Fallstudien-Datenbank mit Web-Interface
(einschließlich ansprechender Gestaltung der Web-Seiten)
- web-basierte Petrinetz-Animation 2
(Abspielen von Pfaden)
Voraussetzungen:
- solide Fertigkeiten in modernen Web-Technologien
- Grundkenntnisse Petrinetze bzw der entsprechenden Werkzeuge
Weitere Einzeldarstellungen ausgewählter Themen
Sugar Java
Voraussetzungen:
- solide Programmierfertigkeiten
- Grundkenntnisse in Compilertechnik
AnJa - Annotated Java
Voraussetzungen:
- solide Programmierfertigkeiten
- Grundkenntnisse in Compilertechnik
- Lehrveranstalung "Zuverlässige Software" bzw. "Testen von Software"
Testen mit Musik 2
Voraussetzungen:
- Grundkenntnisse Petrinetze
- Grundkenntnisse "Systematisches Testen von Software"
- solide Programmierfertigkeiten
- musikalische Grundkenntnisse, insbesondere Notentechnik
Regressionstests graphischer Oberflächen
Voraussetzungen:
- solide Programmierfertigkeiten
- Lehrveranstaltung "Testen von Software"
Plattformunabhängie Programmierung unter C++
Voraussetzungen:
- solide Programmierfertigkeiten in C++
Verteilte Softwarevalidierung
Dieses Thema umfasst eine Reihe von Teilaspekten, die wichtigsten:
- verteilte Implementierung zur nebenläufigen Ausführung eines Validierungsexperimentes.
- textuelle und graphische Auswertung der Experimentergebnisse
Voraussetzungen:
- solide Programmierfertigkeiten, insbesondere in GUI und (lokal) verteilten Implementierungen;
- Grundkenntnisse in Compilertechnik
- Grundkenntnisse in Petrinetz-Anaylsemethoden
Analysemethoden für den Systembiologen
Voraussetzungen:
- solide Programmierfertigkeiten, insbesondere für plattformunabhängige GUI
- Grundkenntnisse in Petrinetz-Anaylsemethoden
- Grundkenntnisse zu Biochemie/Medizin hilfreich; Leistungskurs (Abiturstufe) in Biologie und/oder Chemie empfohlen;
Fallstudien
Modellierung und Analyse technischer bzw. biochemischer Netzwerke
Voraussetzungen:
- Grundkenntnisse Petrinetze
- Grundkenntnisse in dem jeweiligen Anwendungsgebiet
BDD-Based Model Checking - Visualisierung von Datenstrukturen
Modelchecking ist ein Verfahren, mit dem ein Modell auf das Erfüllen gegebener Eigenschaften überprüft werden kann. Wie die Verfahren konkret aussehen, hängt u.a. davon ab, wie die Modelle und die zu überprüfenden Eigenschaften beschrieben werden. In unserem Fall sind die Modelle als Petrinetz gegeben, während die Eigenschaften in linearer bzw. branching-time temporaler Logik (LTL bzw CTL) vorliegen. Die Eleganz der hier diskutierten Modellchecker erschließt sich vor allem aus der unterliegenden Datenstruktur, den "Binary Decision Diagrams" (BDD). Leider ist diese Datenstruktur von aussen schlecht beobachtbar, was auch für den Normalgebrauch nicht notwendig ist, wohl aber für die Lehre und das Verständnis der internen Abläufe.
Das Thema der hier ausgeschriebenen Arbeit ist die Visualisierung dieser internen Datenstruktur in Form kleiner "movies", welche den dynamischen Aufbau der internen Datenstrukturen für Lehrzwecke sichtbar und damit nachvollziehbarer machen sollen.
Voraussetzungen:
- solide Programmierfertigkeiten, etwa in in C++
- Grundkenntnisse Petrinetz-Analysetechniken
Aspect-oriented Programming
"Aspect-oriented programming (AOP) is a new evolution in the line of technology for separation of concerns-technology that allows design and code to be structured to reflect the way developers want to think about a system. It is one of the "beyond object-oriented programming" approaches."
Gegenstand dieses Themas ist die Untersuchung, inwieweit sich diese Konzepte zur eleganten Umsetzung defensiver Programmierstrategien eignen. Dazu sind verfügbare Implementierungen zur AOP zu testen.
Voraussetzungen:
- Lehrveranstalung "Zuverlässige Software"
- solide Programmierfertigkeiten
Concurrency Patterns
(Entwurfsmuster zur Programmierung von Nebenläufigkeit)
Entwurfsmuster sind seit geraumer Zeit ein beliebtes Mittel zur Kommunikation zwischen Softwareingenieuren zur Vermittlung von Erfahrungen im Feinentwurf von wiederverwendbaren Software-Strukturen.
Mittlerweile gibt es mehrere recht umfangreiche Kataloge solcher Entwurfsmuster, insbesondere gibt es auch Kataloge für spezielle Anwendungsgebiete, wie z.B. Entwurfsmuster für Kommunikationssoftware, Entwurfsmuster für eingebettete Systeme.
In der hier ausgeschriebenen Arbeit soll ein Katalog von typischen Entwurfsmustern zur Programmierung von Nebenläufigkeit erstellt werden.
Voraussetzungen:
- Lehrveranstaltung Einführung in die Nebenläufigkeit;
- Grundkenntnisse Petrinetze;
- solide Programmierfertigkeiten in Java