Software Sustainability and Performance Engineering (SSPE)

Die meisten repräsentativen Gemeinschaftscodes und Softwareinfrastrukturen bestehen aus großen Komponenten die über lange Zeiträume von vielen verschiedenen Entwicklern entwickelt wurden. Viele dieser Codes konzentrieren sich auf eine einzige Art von Rechenressource, z. B. große Cluster mit Standard-CPUs und einem sehr schnellen Verbindungsnetz.

Mit steigender Anzahl von Entwickler und längerem Entwicklungszeitraum eines Projekts erhöht sich die Wahrscheinlichkeit, dass Fehler in die Codebasis eingefügt werden, da nicht bei jeder Änderung alle möglichen Konfigurationen manuell getestet und die Ergebnisse validiert werden können. Dadurch sinkt entweder die Qualität des Codes, oder es müssen erhebliche Personalaufwände für Integrationstests eingeplant werden bevor eine neue Version veröffentlicht werden kann.

Dies beeinflusst auch die Möglichkeit der Portierung auf neue Software- und Hardwareumgebungen. Die großen Potenziale, die sich durch neue, performante Softwarebibliotheken und innovative und disruptive Hardware-Architekturen ergeben bleiben ungenutzt, da die Portierung großer, organisch gewachsener Codes bei gleichzeitiger Gewährleistung der Effizienz, Korrektheit, Genauigkeit und Stabilität in allen Kombinationen und auf allen Architekturen extrem aufwändig ist.

Gerade im Wissenschaftsumfeld gibt es aber auch viele kleinere und hochinnovative Softwareprojekte, die über einen relativ kurzen Zeitraum von einer sehr kleinen Zahl von Entwicklern betreut und danach nicht an nachfolgende Forschende oder die Community übergeben werden. Meist handelt es sich dabei um das Ergebnis einer Dissertation oder eines befristeten Forschungsprojektes. Fehlende Dokumentation, eine in kurzer Zeit stark gewachsene Codebasis und fehlende Tests und Validierungen machen die Übergabe an andere Entwickler und die Anpassung an die neuen Forschungsthemen schwierig.

Das SSPE-Team unterstützt wissenschaftliche Softwareentwickler bei der Auswahl der richtigen Werkzeuge, um wissenschaftliche Codes fit für die Zukunft zu machen, die zur Verfügung stehenden Rechenressourcen optimal auszunutzen und berät bei Portierung, Tests und Benchmarks auf neuen Architekturen, beispielsweise den Systemen der Future Technologies Partition.