Softwareentwicklung: Damit Weiterentwicklung besser funktioniert
Softwaresysteme werden ständig weiter entwickelt. Doch wenn am Quellcode geschraubt wird, ist derzeit nicht immer klar, welche Auswirkungen diese Änderungen auf die Ausführung eines Softwaresystems haben. Ein vom Österreichischen Wissenschaftsfonds FWF gefördertes Projekt möchte nun einen detaillierten Blick auf die Evolution von Programmverhalten werfen.
„Wir wollen das Zusammenspiel zwischen Evolution und Ausführung von Softwaresystemen erforschen“, erklärt Martin Pinzger (Institut für Informatik-Systeme der AAU), der gemeinsam mit Fabian Beck (Universität Stuttgart) das Projekt leitet. Derzeit komme es immer wieder zu unliebsamen Auswirkungen bei Rechenzeit oder Speicherverbrauch, wenn Software weiterentwickelt wird.
Um dieser Fragestellung auf die Spur zu kommen, will das Forschungsteam neuartige Methoden und Techniken erforschen, um den Einfluss bestimmter Änderungen im Quellcode auf das dynamische Verhalten einer Software zu analysieren und zu visualisieren, sowie um die Ursachen bestimmter Abweichungen im Programmverhalten zu finden. Sie setzen dabei bei einer wichtigen Forschungslücke an, wie Pinzger erläutert: „Im Unterschied zu bisheriger Forschung soll die Evolution genauso wie die Ausführung der Softwaresysteme auf der Ebene von Anweisungen in Programmen analysiert werden.“ In der Folge plant das Forschungsteam die Evaluierung der Methoden und Techniken in zahlreichen empirischen Studien mit diversen Softwaresystemen und in Benutzerstudien mit Softwareentwicklerinnen und -entwicklern.
Bei dem Projekt handelt es sich um Grundlagenforschung, die aber für die Praxis von unmittelbarer Relevanz sein soll. Martin Pinzger und Fabian Beck wollen die Methoden in neuartige Vorhersage- und Empfehlungstechniken integrieren, die SoftwarentwicklerInnen bei der Optimierung von Rechenzeit und Speicherverbrauch unterstützen. „Letztlich geht es um ein besseres Verständnis der Evolution von Software. Unsere Methoden werden die Entwicklerinnen und Entwickler in der Wartung und Weiterentwicklung von Softwaresystemen unterstützen, insbesondere bei der Optimierung des Programmverhaltens.“