Forschungssoftware

Im Zuge des digitalen Wandels ist Forschungssoftware zu einem zentralen Element des wissenschaftlichen Arbeitens geworden. Dies umfasst die Eigenentwicklung und Nutzung von Forschungssoftware zur Simulation, zur Generierung, Verarbeitung, Analyse und Visualisierung von Forschungsdaten sowie zur Steuerung von Forschungsgeräten und Experimenten. Aufgrund dieser wesentlichen Bedeutung von Forschungssoftware ergeben sich neue Herausforderungen für die Gute Wissenschaftliche Praxis mit Blick auf die Transparenz, Nachvollziehbarkeit und Reproduzierbarkeit von Forschungsergebnissen. Diesen Anforderungen kann am besten durch offenen Zugang zu Software entsprochen werden, so dass der Zugang zu Forschungssoftware entlang der FAIR-Prinzipien (Findability, Accessibility, Interoperability, Reusability) gestaltet werden sollte.

Handreichung zum Umgang mit Forschungssoftware

Matthias Katerbow, Georg Feulner et al., 2018, Seite 1 (DOI 10.5281/zenodo.1172970)

Bei der Archivierung und Zurverfügungstellung von Software, die Sie selbst entwickelt haben, geht es in erster Linie darum, dass die Funktionsweise Ihrer Software zu einem späteren Zeitpunkt und von anderen überprüft und nachvollzogen werden kann. Die folgenden Hinweise sollen Sie bei der Erfüllung dieses Anspruchs unterstützen:

  • Archivieren Sie Ihre Software in einem dedizierten Softwarerepositorium wie zum Beispiel Software Heritage, um jedermann den Zugang zu Ihrem Quellcode zu ermöglichen. Um die Sichtbarkeit Ihrer Forschung zu erhöhen, können Sie auch Code Repositorien wie GitHub nutzen. Wenn Sie Workflows entwickeln, sind Repositorien wie my experiment für Sie richtig.
  • Versehen Sie Quellcodes, die Sie veröffentlichen möchten, mit einer passenden, möglichst freien Lizenz, zum Beispiel der GNU General Public License (GPL) oder der Apache Lizenz 2.0. Für alle anderen Arten von Forschungsdaten empfehlen wir die Creative-Commons-Lizenz mit Namensnennung des Urhebers (CC BY).
  • Stellen Sie neben dem Code auch eine detaillierte Beschreibung Ihrer Experimente und Datensets bereit, mit denen andere Ihre Software testen können. In Jupyter Notebooks können Sie Ihren Code erstellen und gleichzeitig in einer zugehörigen Dokumentation Ihr Experiment beschreiben.
  • Unterstützen Sie andere bei der Wiederholung Ihres Experiments mit Ihrer speziellen Konfiguration zusätzlich, indem Sie Docker Container zur Verfügung stellen. Auch Tools wie ReproZip sind hilfreich, da sie alle relevanten Dateien wie Daten, Software, Libraries und Umgebungsvariablen bündeln.
  • Ordnen Sie Ihrem Code grundsätzlich einen persistenten Identifikator zu (z.B. DOIs mit Zenodo und einer GitHub Integration). Wenn dies nicht möglich ist, weisen Sie auf das genaue Veränderungsdatum hin. 
  • Legen Sie von Anfang an in einem Datenmanagementplan fest, welche Quellcodes und zugehörigen Informationen letztendlich wie und wo archiviert werden sollen (siehe Beispiel).
  • Orientieren Sie sich grundsätzlich an der Vorgehensweise in Ihrem Fachbereich und erstellen Sie gute README-Dateien, die andere über das Experiment und die Vorgehensweise informieren.
  • Halten Sie sich möglichst an die für die jeweilige Sprache gültigen Naming und Coding Konventionen. Dies erleichtert anderen die Lesbarkeit und macht es ihnen leichter, sich in der Struktur und dem Ablauf Ihres Programmes zurechtzufinden.
  • Richten Sie sich auch beim Bereitstellen Ihrer Software nach den FAIR-Prinzipien.

In einem Experiment (DOI: 10.5281/zenodo.1209833) wurde der Zusammenhang zwischen konsumiertem Alkohol und gesichteten Ufos untersucht. Dafür wurden die folgenden zwei Datensets verwendet:

1. Datenset: Alcohol Consumption
OECD (2018), Alcohol consumption (indicator).
DOI: 10.1787/e6895909-en
File Location: data/raw/DP_LIVE_22032018202902423.csvFile Size: 112K

2. Datenset: Ufo Sightings
Sigmond Axel. (2014). ufo-reports (Version commitc0915f18186e5e2227083702049a838258001a2a) [Data set]. Zenodo
File Location: data/raw/ufo-scrubbed-geocoded-time-standardized.csv
File Size: 13M

Die folgenden Dateien sind zu archivieren, da sie für die Reproduzierbarkeit des Experiments relevant sind:
•    README.md (Text Datei mit Anweisungen, wie man das Experiment ausführt)
•    Beide Jupyer Notebooks (Code des Experiments und seine Dokumentation)
•    Dockerfile (Dockerfile, um den Docker Container zu erzeugen)
•    requirements.txt (Auflistung der für das Experiment benötigten Python Abhängigkeiten)
•    documentation/architecture.png (Diagramm der Architektur des Experiments)
•    documentation/description.txt (Textfile, das das Korrelationsdiagramm beschreibt)
•    documentation/metadata.xml (relevante Metadaten für das Experiment)

Die Eingangsdaten (Input) sind nicht in die Archivierung aufgenommen, da sie bereits in anderen Repositorien abgelegt und leicht zugänglich sind.

Neben der selbst entwickelten Software wird in der Forschung auch bereits verfügbare Software benutzt. Diese Anwendungen sind zur Nachvollziehbarkeit der Forschungsergebnisse ebenfalls zu dokumentieren, wobei Sie die folgenden Punkte nicht vergessen sollten:

  • detaillierte Beschreibung und Zitation der verwendeten Software-Version und deren Konfiguration
  • Beschreibung der gewählten Parameter und der Soft- und Hardwareumgebung, in der Sie die Software anwenden

Unter Umständen kann auch hier die Nutzung von Docker Containern sinnvoll sein.

 

Bereits bei der Softwareauswahl sollten Sie potentielle Nutzungseinschränkungen im Hinblick auf die Wiederholbarkeit Ihrer Experimente berücksichtigen und nach Möglichkeit ausschließen. Beachten Sie z.B. die folgenden Punkte:

  • bei Webanwendungen ist es möglich, dass die von Ihnen genutzte Version zu einem späteren Zeitpunkt nicht mehr verfügbar ist
  • mit der Nutzung kommerzieller Software entstehen - auch für den Nachnutzer - Lizenzkosten und eine Abhängigkeit vom Anbieter