Education
As discussed in section II-C scientific software developers usually have little to no dedicated software engineering education. Consequently, research software often suffers from low quality. However, especially the central aspects of software evolution and reuse strongly correlate with the software design. Researchers lean more and more towards modern tools and methods (e.g., Git, contiuous integration, object-oriented programming, etc.) to support their software development process. But, without deeper knowledge of the underlying concepts, simply the use of these tools and methods cannot guarantee the sustainability of the developed software system. Hence, within SURESOFT we have a strong focus on education, not only on the usage of tools but also on the underlying concepts of software design. To fill the gaps in the software engineering knowledge of researchers, we are regularly organizing workshops to provide educational content about the following topics:
- Software Design Principles & Patterns
- Testing & Test Driven Development
- Version Control & Continuous Integration
- Containerization
- Research data management & Long-term archiving
- Software licensing
Educational material about several of these topics can already be found in our Knowledge Hub