Papers
Topics
Authors
Recent
Gemini 2.5 Flash
Gemini 2.5 Flash
126 tokens/sec
GPT-4o
47 tokens/sec
Gemini 2.5 Pro Pro
43 tokens/sec
o3 Pro
4 tokens/sec
GPT-4.1 Pro
47 tokens/sec
DeepSeek R1 via Azure Pro
28 tokens/sec
2000 character limit reached

A practical guide towards agile test-driven development for scientific software projects (2010.03896v1)

Published 8 Oct 2020 in cs.SE

Abstract: Software testing has received much attention over the last years and has reached such critical importance that agile software development practices put software testing at its core. Agile software development is successfully applied in large-scale industrial software developments but due to its granular responsibilities with roles assigned to various members of the development team, these practices may not be applicable to scientific code development, especially in an academic environment, where it is not uncommon that the codebase is developed, maintained and used by a single person. Even for collaborative scientific software development, financed through external grants, the end-users are typically still part of the development team. This is in contrast to how software is developed in many industries, where the development team and end-users are two separate entities. There are, however, many good code development practices that can be adopted for scientific software projects. Specifically, the intention of this article is to take the centrepiece of agile software development and tailor it to scientific and academic, single-user code development. In this study, a c++ starter project is developed and made available, based on the meson build system, which provides native support for software testing. It is used to show how a simple linear algebra application, found in many scientific and academic applications, can be developed and how simple unit, integration and system tests can be created that are managed through the meson build system. In this way, we are able to minimise software defects and reduce the risk to interpret incorrect data generated by erroneous software that may result in the wrong conclusions to be drawn. Each layer of testing presents one additional layer of protection and we will explore how these may be incorporated with minimum overhead to produce bug-free software.

Summary

We haven't generated a summary for this paper yet.