As outlined in the introduction, our definition of software sustainability is based on reproducibility of results and the capability of software to endure and evolve over time. In SURESOFT, we follow a twofold approach to achieve sustainability, based on a combination of established tools and infrastructures that we provide for members of the TU Braunschweig on the one hand and supporting education and training on the other hand. More specifically, with our toolchain and infrastructure we aim to achieve reproducibility of results by providing ready-to-use runtime environments that include all necessary instructions, data and dependencies in order to run the software. Both the software and runtime environments will be made available through a dedicated publication and long-term archiving service that complies with the FAIR principles. During the publication and archiving process, an automated test pipeline will ensure that the software is executable within the runtime environment and that it produces the correct results. To allow for higher software quality, easier software evolution and reuse in the future, extensive education regarding software engineering principles and best practices is part of the SURESOFT approach. Talks and workshop topics cover essential concepts like modularization, abstraction and information hiding as well as design principles and patterns. Furthermore, a large focus is placed on testing practices ensuring that applications behave according to their specifications. These practices are supported by employing version control systems in combination with continuous integration to entirely automate the testing process and provide quick feedback to developers on every code integration.
Technical Approach & Methods
The software engineering community has developed multiple tools to support the software development process that have been established for quite a while. In recent years, some have also been adopted by the scientific software development world , . Especially tools supporting automation are becoming more common since they can reduce human errors and accelerate the development process. In the following paragraphs, we introduce technologies and methods that we found helpful to support the sustainable development of research software. The tools and techniques described below are well established in the software industry. However, while individual techniques, like the use of version control have become popular among scientists, widespread adoption is still not common . In many cases, scientists are not aware of modern technologies or are reluctant to use them because they often come with a steep learning curve.