Zum Hauptinhalt springen
Blogbeitrag

Alles über Research Software Engineering

Forschungssoftware und Research Software Engineering (RSE) spielt in allen Forschungsdisziplinen eine wichtige Rolle. Anna-Lena Lamprecht, Sprecherin der GI-Fachgruppe RSE, erklärt hier alles was man über RSE wissen muss.

Der Begriff „Forschungssoftware“ (engl. „research software”) bezeichnet Software, die während des Forschungsprozesses oder für einen Forschungszweck erstellt wird (doi.org). Darunter fallen beispielsweise Skripte zur Automatisierung von Datenanalyseprozessen oder fachwissenschaftliche Programmbibliotheken. Vielzweckwerkzeuge wie beispielsweise Office-Pakete werden natürlich auch in der Forschung eingesetzt, sind aber keine dedizierte Forschungssoftware. Während Forschungssoftware in den Anfangsjahren der Informatik vor allem in technischen Disziplinen zu finden war, spielt sie heute in fast allen Fächern eine entscheidende Rolle für die Forschung. Denn überall dort, wo Forschungsdaten digital erfasst, verarbeitet oder ausgewertet werden müssen, wird entsprechende Software benötigt.

Grundsätzlich werden für die Entwicklung von Forschungssoftware gängige Programmiersprachen, Softwareentwicklungsmethoden und entsprechende Werkzeuge verwendet (github.io). Aus dem Forschungskontext ergeben sich jedoch einige Besonderheiten für den Entwicklungsprozess (geomar.dearxiv.org). Diese resultieren einerseits aus der Natur wissenschaftlicher Forschung: So ist Forschungssoftware typischerweise hochspezialisiert und erfordert sowohl in der Entwicklung als auch in der Anwendung entsprechende wissenschaftliche Expertise. Um sich ändernden Versuchsbedingungen oder Fragestellungen anzupassen, wird Forschungssoftware häufig modifiziert und ist daher selten „fertig“. Forschungsspezifische Qualitätskriterien zielen auf den Mehrwert, den eine Software für den wissenschaftlichen Fortschritt darstellt. Darüber hinaus stellt der Einsatz von Software als Teil der wissenschaftlichen Methode Anforderungen an Transparenz und Reproduzierbarkeit. Andererseits beeinflusst auch das wissenschaftliche Arbeitsumfeld, wie Forschungssoftware entwickelt wird: Forschungssoftware wird selten von hauptamtlichen Entwicklungsgruppen erstellt, sondern üblicherweise durch Forschende, die als Teil ihrer wissenschaftlichen Tätigkeit auch Software schreiben. Die Arbeit erfolgt oft in heterogenen, internationalen Teams, deren Zusammensetzung häufig wechselt und deren einzelne Mitglieder nur für einen begrenzten Zeitraum zur Verfügung stehen. In vielen Fällen ist die Weiterentwicklung und Pflege von Forschungssoftwarepaketen von Projektmitteln der Forschungsförderung abhängig.

Research Software Engineering (RSE) greift diese Besonderheiten auf. Der Begriff wurde um 2012 in der britischen eScience-Community geprägt und hat sich mittlerweile zu einer eigenständigen, international anerkannten Disziplin entwickelt (software.ac.uk). RSE ist dabei nicht einfach eine Teilmenge der klassischen Softwaretechnik, sondern beinhaltet als Schnittstellendisziplin Elemente der Informatik (insbesondere Programmierung und Softwaretechnik), der verschiedenen Fachwissenschaften und der Offenen Wissenschaft (Open Science). Getreu dem Motto „Better Software, Better Research“ strebt RSE die kontinuierliche Verbesserung von Forschungssoftware und deren Entwicklungsprozessen an, um damit zu besseren Forschungsprozessen und -ergebnissen beizutragen (ieee.org).

RSE Practice (Praxis)

RSE Practice (Praxis) adressiert technische und organisatorische Fragen der Softwareentwicklung im Forschungsalltag. Dazu gehören z.B. die Kenntnis und Anwendung von „Best Practices“ aus Software Engineering und Fachwissenschaft, die Auswahl von Programmiersprachen, Bibliotheken und Entwicklungswerkzeugen oder die Umsetzung der FAIR-Prinzipien für Forschungssoftware (doi.orgdoi.org). Dabei sind regelmäßig Entscheidungen zu treffen (z.B. bezüglich verwendeter Lizenzen, Checklisten, Entwicklungsplattformen, Formen der Veröffentlichung), für die Erfahrung, Beratung oder Richtlinien notwendig und hilfreich sind.

RSE Training (Ausbildung)

RSE Training (Ausbildung) spielt eine besondere Rolle, da es (bisher) kaum speziell ausgebildete Forschungssoftware-Entwickler:innen gibt. Forschende müssen daher regelmäßig SE-Fähigkeiten erwerben (nature.com), während Software-Entwickler:innen ein Grundverständnis der jeweiligen Forschungsprozesse benötigen, um im RSE-Bereich arbeiten zu können. Grundständige Ausbildungsprogramme in diesem Bereich sind bisher selten (obwohl einige angewandte Informatikstudiengänge die Möglichkeit bieten, ein RSE-Profil zu entwickeln) und auch nicht für alle Forschungssoftware-Entwickler:innen erstrebenswert. Ein Großteil der RSE-Ausbildung findet daher autodidaktisch, durch Lernen von Kolleg:innen, in Community-Workshops oder auch durch entsprechende Trainings in Graduiertenschulen statt. An einer Systematisierung der RSE-Ausbildung wird gearbeitet (arxiv.org).

RSE Careers (Berufswege)

RSE Careers (Berufswege) sind nicht standardisiert und verlaufen typischerweise nicht geradlinig. Viele Entwickler:innen von Forschungssoftware sind eigentlich als Forscher:innen angestellt (insbesondere als PostDocs), andere arbeiten als wissenschaftliche Programmierer:innen an Forschungssoftwareprojekten mit oder sind als Techniker:innen in zentralen Einrichtungen zur Unterstützung der Softwareentwicklung beschäftigt. Es wird daran gearbeitet, ein eigenständiges Berufsbild und besser planbare Karrierewege in der RSE zu entwickeln. Dabei ist zu beachten, dass starke nationale Unterschiede in der Funktionsweise der Forschungsförderung hier unterschiedliche Modelle erfordern.

RSE Advocacy (Interessenvertretung)

RSE Advocacy (Interessenvertretung) arbeitet an der Verbesserung der institutionellen Unterstützung, Finanzierung und Anerkennung von Forschungssoftware und ihrer Entwickler:innen. Dabei ist der Austausch mit Stakeholdern aus allen Bereichen der Wissenschaft (Forschende, Hochschulleitungen, Forschungsförderer, Nutzer:innen, Wissenschaftsverlage, Studierende, etc.) zentral, um die Sichtbarkeit von Forschungssoftware zu erhöhen und dazu beizutragen, dass sie in der Wissenschaftskultur, in der Personalplanung, in Bewerbungs- und Beförderungsverfahren, in Förderinstrumenten, in Publikationsstrukturen, in der Curriculumentwicklung und Kapazitätsplanung etc. entsprechend ihrer bedeutenden Rolle für die moderne Forschung angemessen berücksichtigt wird. Zwei Beispiele aus diesem Bereich sind das Positionspapier zur nachhaltigen Entwicklung von Forschungssoftware (nicht nur) in Deutschland (f1000research.com) und die kürzlich verabschiedete Amsterdam Declaration on Funding Research Software Sustainability (adore.software).

RSE Infrastructure (Infrastruktur) 

RSE Infrastructure (Infrastruktur) umfasst alle Formen der Unterstützung für die Entwicklung, den Betrieb und die Wartung von Forschungssoftware. Dies beinhaltet sowohl technische Infrastruktur wie Versionskontrollsysteme, Datenspeicher und HPC-Cluster als auch personelle Unterstützung zur Bewältigung der anfallenden Aufgaben im gesamten Software-Lebenszyklus. Typischerweise nutzen Entwickler:innen von Forschungssoftware eine Kombination aus institutioneller Infrastruktur (z.B. GitLab-Instanz der Organisation, eigene Computer-Cluster) und freien Plattformen (z.B. GitHub, Open Science Framework), stellenweise ergänzt durch Nutzung kommerzieller Angebote (z.B. für Cloud Computing). In Deutschland wird zukünftig die Nationale Forschungsdateninfrastruktur (NFDI,nfdi.de) Teil der RSE-Infrastruktur sein. 

RSE Research (Forschung) 

RSE Research (Forschung) betrachtet das RSE selbst als Forschungsgegenstand. Ziel dieser Forschung ist es, Forschungssoftware und ihre Entwicklungsprozesse zu analysieren und besser zu verstehen, um auf dieser Basis Methoden und Werkzeuge zu ihrer Verbesserung zu entwickeln (zenodo.org). So wird z.B. erforscht, warum die bekannten Methoden der Anforderungserhebung (Requirements Engineering) bei der Entwicklung von Forschungssoftware kaum Anwendung finden, oder welche Methoden der Qualitätssicherung für Forschungssoftware angewendet werden können, bei der klassische Testmethoden aufgrund fehlender „Orakel“ oft an ihre Grenzen stoßen (sciencedirect.com). Derzeit wird auch eine intensive Diskussion über eine Kategorisierung von Forschungssoftware geführt, die als Grundlage für weitere Forschungsarbeiten in diesem Bereich notwendig ist (geomar.de).

RSE Community (Gemeinschaft) 

RSE Community (Gemeinschaft) schließlich beschreibt die Förderung der Vernetzung von Personen und Organisationen, die in irgendeiner Form im RSE aktiv sind. Auf internationaler Ebene spielen dabei die Research Software Alliance (ReSA, researchsoft.org, mit monatlichem Newsletter) sowie das International Council of RSE Associations, in dem die nationalen RSE-Vereinigungen vertreten sind, eine wichtige Rolle. In Deutschland gibt es bereits seit 2018 den Verein de-RSE e. V. (de-rse.org, mit offener Mailingliste), um Entwickler:innen von Forschungssoftware besser zu vernetzen und RSE in der deutschen Wissenschaftslandschaft zu stärken. Im Juni 2023 haben de-RSE e. V. und der Fachbereich Softwaretechnik der GI zudem eine neue, gemeinsame Fachgruppe RSE (gi.de, mit offener Mailingliste) gegründet, um den Austausch zwischen der fachwissenschaftlich geprägten RSE-Community und der klassischen Informatik-Community zu verbessern. Alle Interessierten sind herzlich eingeladen!

 

Übrigens: Vom 5. bis 7. März 2024 findet in Würzburg die deutsche RSE-Konferenz deRSE24 statt (uni-wuerzburg.de), und auch auf der SE24 vom 26. Februar bis 1. März 2024 in Linz steht RSE auf dem Programm (jku.at)!

Diesen Beitrag hat Anna-Lena Lamprecht (Sprecherin der Fachgruppe RSE) geschrieben und dafür wertvolle Anregungen von Lukas Nagel, Adelinde Uhrmacher und Harald von Waldow erhalten. Er erschien zuerst in unserem Newsletter GI-Radar. Alle Ausgaben gibt es hier zum Nachlesen.

Eine Frau forscht in einem Labor.
Überall dort, wo Forschungsdaten digital erfasst und verabreitet werden, wird entsprechende Software benötigt. Foto © thisisengineering/unsplash