Reproducibility and repeatability of scientific workflows that produce research results are increasingly important. This article illustrates experience implementing both software engineering practices for sustainability of scientific software and practical methods to ensure repeatability and reproducibility of computational workflows.
Resource information | Details |
---|---|
Article title | Software and Workflow Development Practices (April 2020 Update) |
Author | C. Titus Brown |
Focus | Software engineering practices and scientific computational workflows |
In Software and Workflow Development Practices, the author relates the practical experience of a small academic scientific research lab to ensure maintainability, sustainability, easy reuse and sharing of both scientific software and computational workflows. The environment is an academic research lab with an influx of people where the practices have been successful for over a decade. Like for many research teams, a small portion of time is spent on software and workflow development while the majority of effort is spent on understanding the results of their research. The article goes into some of the specific tools, especially Snakemake, and languages they use that may be helpful to some teams and also presents general useful practices helpful for any research team. Some of the topics touched on are:
For Scientific Workflows:
- Version control code, analysis scripts and configuration for workflows
- Write scripts using a language that encourages modularity and reuse
- Automate workflows
- Use execution environments
- Implement demonstration data sets
Software engineering practices:
- Automated tests
- Test Driven Development
- Code review
- Use issues (add pertinent conversations in other venues i.e. chat to issues)
- Test, test, test