Detailseite
Empirische Grundlagenerforschung zum Programmverstehen in der Softwaretechnik
Antragsteller
Professor Dr. Rainer Koschke; Professor Dr. Walid Maalej
Fachliche Zuordnung
Softwaretechnik und Programmiersprachen
Förderung
Förderung von 2010 bis 2023
Projektkennung
Deutsche Forschungsgemeinschaft (DFG) - Projektnummer 166725071
Programmverstehen wird von Rugaber (1995) als der Prozess des Wissenserwerbs über ein Computerprogramm definiert und ist ein Teil der Softwarewartung. Programmverstehen bildet die Grundlage für effektive und effiziente Änderungen, Fehlersuche, Wiederverwendung und Dokumentation.Im beantragten Projekt werden wir Grundlagenforschung im Programmverstehen betreiben, um die Forschung in der Softwaretechnik anhand von empirisch fundierten Erkenntnissen besser steuern zu können. Um ein umfassendes Verständnis von am Programmverstehen maßgeblich beteiligten Prozessen wie etwa Verhaltensweisen, Arbeitsmuster und Entscheidungen von Entwicklern erhalten und nachvollziehen zu können, werden wir uns bei unserer Forschung auch Ansätzen widmen, welche ihren Ursprung jenseits der klassischen Informatik haben, beispielsweise aus dem Bereich der Kognitionswissenschaften.Wir werden dazu genauer die folgenden Themenbereiche empirisch untersuchen:(1) Notwendigkeit: Welches Wissen wird wann wozu gebraucht? Wie viel Programmverstehen ist für einen bestimmten Aufgabenkontext erforderlich? Führt ein geringes Programmverständnis zu mehr Fehlern? Welchen Einfluss hat der Rahmenkontext auf den Informationsbedarf und die eingesetzten Strategien zum Programmverstehen?(2) Verfügbarkeit und Wahrnehmung: Welches Wissen ist bereits wo und wie vorhanden? Welche Faktoren beeinflussen die Wahrnehmung solchen Wissens durch Entwickler? Welches Wissen wird für Programmverstehen in bestimmten Kontexten benötigt, in welchen Quellen ist es vorhanden und wie wird es durch Entwickler als verfügbar wahrgenommen? WelcheFaktoren beeinflussen die Wahrnehmung bei der Suche nach benötigten Informationen und tragen zum Auftreten "aktiver Blindheit" bei?(3) Wiedergewinnung: Welches fehlende Wissen wird wie besorgt? Welche konkreten Arbeitsschritte werden von Entwicklern in welchen Phasen des Programmverstehens durchgeführt? Wie werden die konkreten Arbeitsschritte beim Programmverstehen durch Entwickler priorisiert und organisiert? Kann durch ein systematisches kontextabhängiges Vorgehen das Programmverstehen erleichtert werden?(4) Verwendung: Wie wird das Wissen möglichst effizient und effektiv eingesetzt? Warum werden Hilfsmittel zum Programmverstehen in der Praxis nicht eingesetzt? Wie kann vorhandenes Wissen gegenüber Entwicklern optimal präsentiert werden? Welche Aspekte unterschiedlicher Entwicklungsaufgaben und Entwicklungssituationen sind für die jeweiligen Kontexte charakteristisch und wie lassen sie sich feststellen? Wie können (Recommendation-) Systeme diese Aspekte nutzen, um bedarfsgerechte Informationen anbieten zu können? Welchen Einfluss hat die Organisation und Darstellung von Informationen aufdie Wahrnehmung durch Entwickler?Hierzu werden wir verschiedenste empirische Methoden einsetzen, zu denen insbesondere Instrumentierung von Entwicklungsumgebungen zur Datenerhebung, Umfragen, Beobachtungen und Inverviews zählen.
DFG-Verfahren
Sachbeihilfen