Software is at the core of most scientific discoveries today. Therefore, the quality of research results highly depends on the quality of the research software. Rigorous testing, as we know it from software engineering in the industry, could ensure the quality of the research software but it also requires a substantial effort that is often not rewarded in academia. Therefore, this research explores the effects of research software testing integrated into teaching on research software. In an in-vivo experiment, we integrated the engineering of a test suite for a large-scale network simulation as group projects into a course on software testing at the Blekinge Institute of Technology, Sweden, and qualitatively measured the effects of this integration on the research software. We found that the research software benefited from the integration through substantially improved documentation and fewer hardware and software dependencies. However, this integration was effortful and although the student teams developed elegant and thoughtful test suites, no code by students went directly into the research software since we were not able to make the integration back into the research software obligatory or even remunerative. Although we strongly believe that integrating research software engineering such as testing into teaching is not only valuable for the research software itself but also for students, the research of the next generation, as they get in touch with research software engineering and bleeding-edge research in their field as part of their education, the uncertainty about the intellectual properties of students' code substantially limits the potential of integrating research software testing into teaching.
翻译:软件是当今大多数科学发现的核心。因此,研究成果的质量高度依赖于研究软件的质量。我们从工业界的软件工程中了解的严格测试可以确保研究软件的质量,但这同样需要大量的投入,而这种投入在学术界往往得不到回报。因此,本研究探讨了将研究软件测试融入教学对研究软件本身的影响。在一项真实场景实验中,我们将为大规模网络模拟开发测试套件的工程任务,作为小组项目整合到瑞典布莱金厄理工学院的软件测试课程中,并定性评估了这种整合对研究软件的影响。我们发现,研究软件通过整合获得了显著改进的文档以及更少的硬件和软件依赖,从而受益。然而,这种整合需要付出大量努力,并且尽管学生团队开发了优雅且考虑周全的测试套件,但学生的代码并未直接进入研究软件,因为我们无法强制要求甚至无法提供报酬以促使这些成果整合回研究软件中。尽管我们坚信,将研究软件工程(如测试)融入教学不仅对研究软件本身有价值,而且对作为下一代研究者的学生也大有裨益——因为他们能在教育阶段接触到研究软件工程及其所在领域的前沿研究——但学生代码知识产权的不确定性,极大地限制了将研究软件测试融入教学的潜力。