Dieses Forschungsthema verbindet Techniken der Mustererkennung und des Maschinellen Lernens mit denen der Programm Analyse und der Formalen Verifikation, um für den Betrieb und die Sicherheit von Software wichtige Eigenschaften der dynamischen Speicherverwaltung zu überprüfen. Moderne, möglicherweise in mehreren Threads ablaufende Programme benötigen eine nicht zur Übersetzungszeit ermittelbare Menge an Speicher und müssen diesen daher dynamisch, zur Ausführungszeit, anfordern. In Hochsprachen wie Java oder Haskell erfolgt dies durch die Laufzeitumgebung automatisch. In hardwarenahen Sprachen wie C muss der Entwickler den dynamischen Speicher selbst verwalten, was in der Praxis oft fehleranfällig ist. Software, die in hardwarenahen Sprachen entwickelt wird, etwa in der Systemprogrammierung, hat häufig besondere Effizienzanforderungen. Damit ist auch das Überprüfen von Eigenschaften der dynamischen Speicherverwaltung in hardwarenahen Sprachen von hoher Relevanz.
Im Allgemeinen versuchen Mustererkennung und Maschinelles Lernen aus Trainingsdaten bzw. -szenarien Modelle zu extrahieren, die z.B. zur Analyse unbekannter Daten bzw. Szenarien verwendet werden. In Bezug auf Eigenschaften der dynamischen Speicherverwaltung wollen wir diese Techniken einsetzen, um Speicherallokation sowie Speicherzugriffsmuster in Programmen zu untersuchen. Die Ergebnisse sollen dem Softwareentwickler eine Hilfestellung bei der Feststellung bieten, ob die erkannten Muster problematisch sind, und dadurch ein wertvolles Hilfsmittel zur Fehlersuche werden.
Kontakt: Dr. David White